import Folders from "@Front/Api/LeCoffreApi/Notary/Folders/Folders"; import Button, { EButtonSize, EButtonstyletype, EButtonVariant } from "@Front/Components/DesignSystem/Button"; import Tabs from "@Front/Components/Elements/Tabs"; import Module from "@Front/Config/Module"; import { DocumentIcon, UserPlusIcon } from "@heroicons/react/24/outline"; import Customer from "le-coffre-resources/dist/Customer"; import { EDocumentStatus } from "le-coffre-resources/dist/Customer/Document"; import { OfficeFolder } from "le-coffre-resources/dist/Notary"; import Link from "next/link"; import { useCallback, useMemo, useState } from "react"; import { AnchorStatus } from ".."; import classes from "./classes.module.scss"; import ClientBox from "./ClientBox"; import DocumentTables from "./DocumentTables"; import EmailReminder from "./EmailReminder"; import FolderService from "src/common/Api/LeCoffreApi/sdk/FolderService"; import LoaderService from "src/common/Api/LeCoffreApi/sdk/Loader/LoaderService"; type IProps = { folder: OfficeFolder; anchorStatus: AnchorStatus; }; export type ICustomer = Customer & { id: string }; export default function ClientView(props: IProps) { const { folder, anchorStatus } = props; const customers: ICustomer[] = useMemo( () => { return folder?.customers ?.map((customer: any) => ({ id: customer.uid ?? '', ...customer, })) .sort((a: any, b: any) => { return a.documents && a.documents.filter((document: any) => document.document_status === EDocumentStatus.DEPOSITED).length > 0 ? -1 : 1; }) ?? [] }, [folder], ); const [customer, setCustomer] = useState<(typeof customers)[number]>(customers[0]!); const tabs = useMemo( () => customers.map((customer) => ({ label: `${customer.contact?.first_name} ${customer.contact?.last_name}`, key: customer.uid, value: customer, hasWarning: customer.documents && customer.documents.filter((document) => document.document_status === EDocumentStatus.DEPOSITED).length > 0, })), [customers], ); const handleClientDelete = useCallback( (customerUid: string) => { if (!folder.uid) return; LoaderService.getInstance().show(); FolderService.getFolderByUid(folder.uid, false, false).then((process: any) => { if (process) { const folder: any = process.processData; // FilterBy customerUid const customers = folder.customers.filter((uid: string) => uid !== customerUid); FolderService.updateFolder(process, { customers: customers }).then(() => { setTimeout(() => LoaderService.getInstance().hide(), 2000); window.location.reload(); }); } }); }, [folder], ); return (
{tabs && tabs={tabs} onSelect={setCustomer} />}
{anchorStatus === AnchorStatus.NOT_ANCHORED && ( )}
value.customer?.uid === customer.uid) ?? null} />
{anchorStatus === AnchorStatus.NOT_ANCHORED && ( )}
{customer.uid && folder.uid && }
); }