import { Box, Drawer, rem, Tabs } from "@mantine/core"; import { FC, useEffect } from "react"; import { useDealPageContext } from "../../contexts/DealPageContext.tsx"; import { IconBox, IconCalendarUser, IconCubeSend, IconSettings, IconUser } from "@tabler/icons-react"; import DealStatusChangeTable from "../../components/DealStatusChangeTable/DealStatusChangeTable.tsx"; import DealEditDrawerGeneralTab from "./tabs/DealEditDrawerGeneralTab.tsx"; import { useQueryClient } from "@tanstack/react-query"; import ProductAndServiceTab from "../../tabs/ProductAndServiceTab/ProductAndServiceTab.tsx"; import { motion } from "framer-motion"; import ClientTab from "./tabs/ClientTab.tsx"; import ShippingTab from "../../tabs/ShippingTab/ShippingTab.tsx"; // import styles from './DealEditDrawer.module.css'; // const useDealServicesTableState = () => { // const { selectedDeal, setSelectedDeal } = useDealPageContext(); // const tableRef = useRef>(null); // // const onServiceUpdate = (service: DealServiceSchema) => { // if (!selectedDeal) return; // DealService.updateDealService({ // requestBody: { // dealId: selectedDeal.id, // service, // }, // }).then(async ({ ok, message }) => { // if (!ok) { // notifications.guess(ok, { message }); // return; // } // await DealService.getDealById({ dealId: selectedDeal.id }).then( // setSelectedDeal, // ); // }); // }; // const onServiceDelete = (service: DealServiceSchema) => { // if (!selectedDeal) return; // modals.openConfirmModal({ // title: "Удаление услуги", // children: ( // <> // Вы уверены, что хотите удалить услугу: // {service.service.name}? // // ), // onConfirm: () => { // DealService.deleteDealService({ // requestBody: { // dealId: selectedDeal.id, // serviceId: service.service.id, // }, // }).then(async ({ ok, message }) => { // if (!ok) { // notifications.guess(ok, { message }); // return; // } // await DealService.getDealById({ // dealId: selectedDeal.id, // }).then(setSelectedDeal); // }); // }, // labels: { // cancel: "Отмена", // confirm: "Удалить", // }, // }); // }; // const onServiceCreate = (service: DealServiceSchema) => { // if (!selectedDeal) return; // DealService.addDealService({ // requestBody: { // dealId: selectedDeal.id, // serviceId: service.service.id, // quantity: service.quantity, // price: service.price, // }, // }).then(async ({ ok, message }) => { // if (!ok) { // notifications.guess(ok, { message }); // return; // } // await DealService.getDealById({ dealId: selectedDeal.id }).then( // setSelectedDeal, // ); // }); // }; // const onsServiceMultipleDelete = (items: DealServiceSchema[]) => { // if (!selectedDeal) return; // modals.openConfirmModal({ // title: "Удаление услуг", // children: ( // <> // // Вы уверены, что хотите удалить выбранные услуги? // // // ), // onConfirm: () => { // DealService.deleteMultipleDealServices({ // requestBody: { // dealId: selectedDeal.id, // serviceIds: items.map(item => item.service.id), // }, // }).then(async ({ ok, message }) => { // if (!ok) { // notifications.guess(ok, { message }); // return; // } // await DealService.getDealById({ // dealId: selectedDeal.id, // }).then(setSelectedDeal); // }); // }, // labels: { // cancel: "Отмена", // confirm: "Удалить", // }, // }); // }; // // return { // onServiceUpdate, // onServiceDelete, // onServiceCreate, // onsServiceMultipleDelete, // tableRef, // services: selectedDeal?.services || [], // }; // }; // const DealEditDrawerServicesTable = () => { // const { // services, // tableRef, // onServiceCreate, // onServiceUpdate, // onServiceDelete, // onsServiceMultipleDelete, // } = useDealServicesTableState(); // // return ( // // ); // }; // const useDealProductTableState = () => { // const { selectedDeal, setSelectedDeal } = useDealPageContext(); // // const onProductUpdate = (product: DealProductSchema) => { // if (!selectedDeal) return; // DealService.updateDealProduct({ // requestBody: { // dealId: selectedDeal.id, // product: product, // }, // }).then(async ({ ok, message }) => { // notifications.guess(ok, { message }); // if (!ok) return; // await DealService.getDealById({ dealId: selectedDeal.id }).then( // setSelectedDeal, // ); // }); // }; // const onProductDelete = (product: DealProductSchema) => { // if (!selectedDeal) return; // modals.openConfirmModal({ // title: "Удаление товара", // children: ( // <> // Вы уверены, что хотите удалить товар: // {product.product.name}? // // ), // onConfirm: () => { // DealService.deleteDealProduct({ // requestBody: { // dealId: selectedDeal.id, // productId: product.product.id, // }, // }).then(async ({ ok, message }) => { // if (!ok) { // notifications.guess(ok, { message }); // return; // } // await DealService.getDealById({ // dealId: selectedDeal.id, // }).then(setSelectedDeal); // }); // }, // labels: { // cancel: "Отмена", // confirm: "Удалить", // }, // }); // }; // const onProductCreate = (product: DealProductSchema) => { // if (!selectedDeal) return; // DealService.addDealProduct({ // requestBody: { // dealId: selectedDeal.id, // product: product, // }, // }).then(async ({ ok, message }) => { // if (!ok) { // notifications.guess(ok, { message }); // return; // } // await DealService.getDealById({ dealId: selectedDeal.id }).then( // setSelectedDeal, // ); // }); // }; // const onProductMultipleDelete = (items: DealProductSchema[]) => { // if (!selectedDeal) return; // modals.openConfirmModal({ // title: "Удаление товаров", // children: ( // <> // // Вы уверены, что хотите удалить выбранные товары? // // // ), // onConfirm: () => { // DealService.deleteMultipleDealProducts({ // requestBody: { // dealId: selectedDeal.id, // productIds: items.map(item => item.product.id), // }, // }).then(async ({ ok, message }) => { // if (!ok) { // notifications.guess(ok, { message }); // return; // } // await DealService.getDealById({ // dealId: selectedDeal.id, // }).then(setSelectedDeal); // }); // }, // labels: { // cancel: "Отмена", // confirm: "Удалить", // }, // }); // }; // return { // clientId: selectedDeal?.clientId || -1, // products: selectedDeal?.products || [], // onProductUpdate, // onProductDelete, // onProductCreate, // onProductMultipleDelete, // }; // }; // const DealEditDrawerProductsTable = () => { // const { // products, // clientId, // onProductUpdate, // onProductDelete, // onProductCreate, // onProductMultipleDelete, // } = useDealProductTableState(); // return ( // // ); // }; const useDealStatusChangeState = () => { const { selectedDeal } = useDealPageContext(); return { statusHistory: selectedDeal?.statusHistory || [], }; }; const DealEditDrawerStatusChangeTable = () => { const { statusHistory } = useDealStatusChangeState(); return ; }; const useDealEditDrawerState = () => { const { selectedDeal, setSelectedDeal } = useDealPageContext(); return { isVisible: selectedDeal !== undefined, onClose: () => setSelectedDeal(undefined), }; }; const DealEditDrawer: FC = () => { const { isVisible, onClose } = useDealEditDrawerState(); const queryClient = useQueryClient(); useEffect(() => { if (isVisible) return; queryClient.invalidateQueries({ queryKey: ["getDealSummaries"] }); }, [isVisible]); return ( }> Общее }> Клиент }> История }> Товары и услуги }> Отгрузка ); }; export default DealEditDrawer;