import Tabs from "@Front/Components/Elements/Tabs"; import Customer from "le-coffre-resources/dist/Customer"; import { OfficeFolder } from "le-coffre-resources/dist/Notary"; import { useCallback, useMemo, useState } from "react"; import { AnchorStatus } from ".."; import classes from "./classes.module.scss"; import ClientBox from "./ClientBox"; import Button, { EButtonSize, EButtonstyletype, EButtonVariant } from "@Front/Components/DesignSystem/Button"; import { DocumentIcon, UserPlusIcon } from "@heroicons/react/24/outline"; import Module from "@Front/Config/Module"; import Link from "next/link"; import NoDocument from "./NoDocument"; import DocumentTables from "./DocumentTables"; import Folders from "@Front/Api/LeCoffreApi/Notary/Folders/Folders"; import { EDocumentStatus } from "le-coffre-resources/dist/Customer/Document"; 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( () => folder?.customers?.map((customer) => ({ id: customer.uid ?? "", ...customer, })) ?? [], [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, })) // put every tabs that has warning first .sort((a, b) => (a.hasWarning ? -1 : 1)), [customers], ); const doesCustomerHaveDocument = useMemo(() => customer.documents && customer.documents.length > 0, [customer]); const handleClientDelete = useCallback( (customerUid: string) => { if (!folder.uid) return; Folders.getInstance().put( folder.uid, OfficeFolder.hydrate({ ...folder, customers: folder.customers?.filter((customer) => customer.uid !== customerUid), }), ); window.location.reload(); }, [folder], ); return (
{tabs && tabs={tabs} onSelect={setCustomer} />}
{anchorStatus === AnchorStatus.NOT_ANCHORED && ( )}
value.customer?.uid === customer.uid) ?? null} /> {anchorStatus === AnchorStatus.NOT_ANCHORED && ( )}
{doesCustomerHaveDocument ? ( ) : ( )}
); }