From 703942df4acc91cefa655d7547084b2e4e42ca98 Mon Sep 17 00:00:00 2001 From: Vins Date: Thu, 13 Feb 2025 10:48:47 +0100 Subject: [PATCH] Keep checkboxes on AskDocument page --- .../AskDocuments/ParameterDocuments/index.tsx | 30 +++------ .../Layouts/Folder/AskDocuments/index.tsx | 63 +++++++++++++------ 2 files changed, 54 insertions(+), 39 deletions(-) diff --git a/src/front/Components/Layouts/Folder/AskDocuments/ParameterDocuments/index.tsx b/src/front/Components/Layouts/Folder/AskDocuments/ParameterDocuments/index.tsx index d96314ff..53c0bff8 100644 --- a/src/front/Components/Layouts/Folder/AskDocuments/ParameterDocuments/index.tsx +++ b/src/front/Components/Layouts/Folder/AskDocuments/ParameterDocuments/index.tsx @@ -15,6 +15,7 @@ type IProps = { isCreateDocumentModalVisible: boolean; closeModal: () => void; folder: OfficeFolder; + onDocumentAdded: () => Promise; }; export default function ParameterDocuments(props: IProps) { @@ -64,14 +65,12 @@ export default function ParameterDocuments(props: IProps) { }, [props]); const addDocument = useCallback(async () => { - if (addOrEditDocument === "add") { - try { + try { + if (addOrEditDocument === "add") { const documentType = await DocumentTypes.getInstance().post({ name: documentName, private_description: visibleDescription, - office: { - uid: props.folder.office!.uid!, - }, + office: { uid: props.folder.office!.uid! }, public_description: visibleDescription, }); @@ -79,15 +78,7 @@ export default function ParameterDocuments(props: IProps) { await Deeds.getInstance().put(props.folder.deed?.uid!, { document_types: [...oldDocumentsType, documentType], }); - - //await this.loadData(); - handleClose(); - window.location.reload(); - } catch (e) { - console.error(e); - } - } else { - try { + } else { const oldDocumentsType = props.folder.deed?.document_types!; await Deeds.getInstance().put(props.folder.deed?.uid!, { document_types: [ @@ -95,13 +86,12 @@ export default function ParameterDocuments(props: IProps) { ...selectedDocuments.map((document) => DocumentType.hydrate({ uid: document.id as string })), ], }); - - //await this.loadData(); - handleClose(); - window.location.reload(); - } catch (e) { - console.error(e); } + + await props.onDocumentAdded(); // ✅ Refresh AskDocuments state with the new document + handleClose(); // ✅ Close modal + } catch (e) { + console.error(e); } }, [addOrEditDocument, documentName, handleClose, props, selectedDocuments, visibleDescription]); diff --git a/src/front/Components/Layouts/Folder/AskDocuments/index.tsx b/src/front/Components/Layouts/Folder/AskDocuments/index.tsx index 30f2d87f..7a37f6f9 100644 --- a/src/front/Components/Layouts/Folder/AskDocuments/index.tsx +++ b/src/front/Components/Layouts/Folder/AskDocuments/index.tsx @@ -22,30 +22,19 @@ export default function AskDocuments() { const [isCreateDocumentModalVisible, setIsCreateDocumentModalVisible] = useState(false); const [documentTypes, setDocumentTypes] = useState([]); const [folder, setFolder] = useState(null); + const [selectedDocuments, setSelectedDocuments] = useState([]); const closeModal = () => setIsCreateDocumentModalVisible(false); const openModal = () => setIsCreateDocumentModalVisible(true); const onFormSubmit = useCallback( - async ( - e: React.FormEvent | null, - values: { - [key: string]: any; - }, - ) => { + async (e: React.FormEvent | null) => { try { - const documentAsked: [] = values["document_types"] as []; - for (let i = 0; i < documentAsked.length; i++) { + for (let i = 0; i < selectedDocuments.length; i++) { await Documents.getInstance().post({ - folder: { - uid: folderUid, - }, - depositor: { - uid: customerUid, - }, - document_type: { - uid: documentAsked[i], - }, + folder: { uid: folderUid }, + depositor: { uid: customerUid }, + document_type: { uid: selectedDocuments[i] }, }); } @@ -58,7 +47,7 @@ export default function AskDocuments() { console.error(e); } }, - [customerUid, folderUid, router], + [selectedDocuments, customerUid, folderUid, router], ); const getAvailableDocuments = useCallback( @@ -122,6 +111,30 @@ export default function AskDocuments() { } }, [folderUid, getAvailableDocuments]); + const handleDocumentAdded = async () => { + if (!folder) return; + + try { + // Fetch updated folder data to get the new document + const updatedFolder = await Folders.getInstance().getByUid(folderUid as string, { + q: { + deed: { include: { document_types: true } }, + office: true, + documents: { include: { depositor: true, document_type: true } }, + }, + }); + + if (!updatedFolder) return; + + setFolder(updatedFolder); // ✅ Update the folder state + setDocumentTypes(await getAvailableDocuments(updatedFolder)); // ✅ Refresh the document list + + console.log("Document list updated with new document:", updatedFolder); + } catch (error) { + console.error("Failed to refresh document list:", error); + } + }; + useEffect(() => { loadData(); }, [loadData]); @@ -147,6 +160,13 @@ export default function AskDocuments() { toolTip={documentType.description} option={documentType} key={documentType.value as string} + checked={selectedDocuments.includes(documentType.value as string)} + onChange={(e) => { + const value = documentType.value as string; + setSelectedDocuments((prev) => + e.target.checked ? [...prev, value] : prev.filter((id) => id !== value), + ); + }} /> ); } @@ -175,7 +195,12 @@ export default function AskDocuments() { {folder && ( - + )} );