import { FC, useEffect, useState } from "react"; import { CardService, CardSummary } from "../../../../client"; import styles from "./CardSummaryItem.module.css"; import { ActionIcon, Badge, CopyButton, Flex, Image, Popover, rem, Text, ThemeIcon, Tooltip } from "@mantine/core"; import { useCardPageContext } from "../../../../pages/CardsPage/contexts/CardPageContext.tsx"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faCheck } from "@fortawesome/free-solid-svg-icons"; import { IconCheck, IconLayoutGridRemove, IconTrash } from "@tabler/icons-react"; import { useContextMenu } from "mantine-contextmenu"; import useCardSummaryState from "./useCardSummaryState.tsx"; import isModuleInProject from "../../../../modules/utils/isModuleInProject.ts"; import { useProjectsContext } from "../../../../contexts/ProjectsContext.tsx"; import CardTags from "../CardTags/CardTags.tsx"; import CardAttributesInSummaryItem from "../CardAttributesInSummaryItem/CardAttributesInSummaryItem.tsx"; import { ModuleNames } from "../../../../modules/modules.tsx"; import isDealPaid from "../../../../pages/CardsPage/utils/isDealPaid.ts"; type Props = { cardSummary: CardSummary; color?: string }; const CardSummaryItem: FC = ({ cardSummary, color }) => { const { showContextMenu } = useContextMenu(); const { selectedProject } = useProjectsContext(); const { setSelectedCard } = useCardPageContext(); const { onDelete, onComplete, onDeleteFromGroup } = useCardSummaryState(); const [isPaid, setIsPaid] = useState(false); const isServicesAndProductsIncluded = isModuleInProject(ModuleNames.SERVICES_AND_PRODUCTS, selectedProject); const isClientIncluded = isModuleInProject(ModuleNames.CLIENTS, selectedProject); const onCardSummaryClick = () => { CardService.getCardById({ cardId: cardSummary.id }).then(card => { setSelectedCard(card); }); }; const isLockedInsideGroup = () => { return cardSummary.group && !cardSummary.group.billRequests; }; useEffect(() => { setIsPaid(isDealPaid(cardSummary)); }, []); return (
onDeleteFromGroup(cardSummary), title: "Убрать из группы", icon: , }] : [], { key: "complete", onClick: () => onComplete(cardSummary), title: "Завершить", icon: , }, { key: "delete", onClick: () => onDelete(cardSummary), title: "Удалить", icon: , }, ])} onClick={() => onCardSummaryClick()} className={styles["container"]} style={{ backgroundColor: color }} > {isClientIncluded && ( {cardSummary.clientName} )} {cardSummary.name} {isServicesAndProductsIncluded && ( {cardSummary.shipmentWarehouseName || "Склад не указан"} {cardSummary.totalPrice.toLocaleString("ru-RU")} руб,{" "} {cardSummary.totalProducts.toLocaleString("ru-RU")} тов. )} {!cardSummary.group?.id && ( )} {({ copy, copied }) => (
{ e.stopPropagation(); copy(); }} className={styles["flex-item"]}> ID: {cardSummary.id}
ID сделки скопирован
)}
{isPaid && ( )}
); }; export default CardSummaryItem;