import { FC } 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, { Modules } from "../../../../pages/CardsPage/utils/isModuleInProject.ts"; import { useProjectsContext } from "../../../../contexts/ProjectsContext.tsx"; 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 isServicesAndProductsIncluded = isModuleInProject(Modules.SERVICES_AND_PRODUCTS, selectedProject); const isClientIncluded = isModuleInProject(Modules.CLIENTS, selectedProject); const onDealSummaryClick = () => { CardService.getCardById({ cardId: cardSummary.id }).then(card => { setSelectedCard(card); }); }; const isPaid = () => { return cardSummary.billRequest?.paid || cardSummary.group?.billRequest?.paid; }; const isLockedInsideGroup = () => { return cardSummary.group && !cardSummary.group.billRequest; }; return (
onDeleteFromGroup(cardSummary), title: "Убрать из группы", icon: , }] : [], { key: "complete", onClick: () => onComplete(cardSummary), title: "Завершить", icon: , }, { key: "delete", onClick: () => onDelete(cardSummary), title: "Удалить", icon: , }, ])} onClick={() => onDealSummaryClick()} className={styles["container"]} style={{ backgroundColor: color }} > {isClientIncluded && ( {cardSummary.clientName} )} {cardSummary.name} {isServicesAndProductsIncluded && ( {cardSummary.totalPrice.toLocaleString("ru-RU")} руб,{" "} {cardSummary.totalProducts.toLocaleString("ru-RU")} тов. )} {({ copy, copied }) => (
{ e.stopPropagation(); copy(); }} className={styles["flex-item"]}> ID: {cardSummary.id}
ID сделки скопирован
)}
{isPaid() && ( )}
); }; export default CardSummaryItem;