From ed4d2d5a3909e8e0acb257386226f7c6d7fe97c1 Mon Sep 17 00:00:00 2001 From: Vins Date: Fri, 11 Apr 2025 11:57:23 +0200 Subject: [PATCH] Fixed client dashboard multi count --- .../ReceivedDocuments/index.tsx | 50 +++++++++++++++++-- .../Layouts/ClientDashboard/index.tsx | 4 +- 2 files changed, 47 insertions(+), 7 deletions(-) diff --git a/src/front/Components/Layouts/ClientDashboard/ReceivedDocuments/index.tsx b/src/front/Components/Layouts/ClientDashboard/ReceivedDocuments/index.tsx index 014498a4..7f000e22 100644 --- a/src/front/Components/Layouts/ClientDashboard/ReceivedDocuments/index.tsx +++ b/src/front/Components/Layouts/ClientDashboard/ReceivedDocuments/index.tsx @@ -8,16 +8,17 @@ import Typography, { ETypo, ETypoColor } from "@Front/Components/DesignSystem/Ty import BackArrow from "@Front/Components/Elements/BackArrow"; import DefaultTemplate from "@Front/Components/LayoutTemplates/DefaultTemplate"; import Module from "@Front/Config/Module"; -import JwtService from "@Front/Services/JwtService/JwtService"; +import JwtService, { ICustomerJwtPayload } from "@Front/Services/JwtService/JwtService"; import { ArrowDownTrayIcon, EyeIcon } from "@heroicons/react/24/outline"; import { saveAs } from "file-saver"; import JSZip from "jszip"; -import DocumentNotary from "le-coffre-resources/dist/Notary/DocumentNotary"; import { useRouter } from "next/router"; import React, { useCallback, useEffect, useState } from "react"; - import classes from "./classes.module.scss"; import Link from "next/link"; +import Folders from "@Front/Api/LeCoffreApi/Customer/Folders/Folders"; +import Customer from "le-coffre-resources/dist/Customer"; +import { DocumentNotary } from "le-coffre-resources/dist/Notary"; const header: readonly IHead[] = [ { @@ -38,14 +39,53 @@ export default function ReceivedDocuments() { const router = useRouter(); let { folderUid } = router.query; const [documentsNotary, setDocumentsNotary] = useState([]); + const [customer, setCustomer] = useState(null); + + const fetchFolderAndCustomer = useCallback(async () => { + let jwt: ICustomerJwtPayload | undefined; + if (typeof document !== "undefined") { + jwt = JwtService.getInstance().decodeCustomerJwt(); + } + + const folder = await Folders.getInstance().getByUid(folderUid as string, { + q: { + office: true, + customers: true, + notes: { + include: { + customer: true, + }, + }, + stakeholders: { + include: { + contact: true, + office_role: true, + }, + }, + deed: { + include: { + deed_type: true, + }, + }, + }, + }); + + const customer = folder?.customers?.find((customer) => customer.contact?.email === jwt?.email); + if (!customer) throw new Error("Customer not found"); + + setCustomer(customer); + + return { folder, customer }; + }, [folderUid]); useEffect(() => { - const customerUid = JwtService.getInstance().decodeCustomerJwt()?.customerId; + fetchFolderAndCustomer(); + const customerUid = customer?.uid; if (!folderUid || !customerUid) return; DocumentsNotary.getInstance() .get({ where: { folder: { uid: folderUid }, customer: { uid: customerUid } }, include: { files: true } }) .then((documentsNotary) => setDocumentsNotary(documentsNotary)); - }, [folderUid]); + }, [folderUid, customer]); const onDownload = useCallback((doc: DocumentNotary) => { const file = doc.files?.[0]; diff --git a/src/front/Components/Layouts/ClientDashboard/index.tsx b/src/front/Components/Layouts/ClientDashboard/index.tsx index d381df76..578bd6d3 100644 --- a/src/front/Components/Layouts/ClientDashboard/index.tsx +++ b/src/front/Components/Layouts/ClientDashboard/index.tsx @@ -108,12 +108,12 @@ export default function ClientDashboard(props: IProps) { }, [fetchDocuments, fetchFolderAndCustomer]); useEffect(() => { - const customerUid = JwtService.getInstance().decodeCustomerJwt()?.customerId; + const customerUid = customer?.uid; if (!folderUid || !customerUid) return; DocumentsNotary.getInstance() .get({ where: { folder: { uid: folderUid }, customer: { uid: customerUid } }, include: { files: true } }) .then((documentsNotary) => setDocumentsNotary(documentsNotary)); - }, [folderUid]); + }, [folderUid, customer?.uid]); const documentsNotaryNotRead = useMemo( () => documentsNotary.filter((doc) => doc.document_status === EDocumentNotaryStatus.SENT),