Fix somes issues

This commit is contained in:
Anthony Janin 2025-07-01 17:35:23 +02:00
parent c939065562
commit ca5a59c51a
10 changed files with 145 additions and 41 deletions

View File

@ -156,6 +156,7 @@ export default function AddClientToFolder(props: IProps) {
);
const loadCustomers = useCallback(async () => {
LoaderService.getInstance().show();
CustomerService.getCustomers().then(async (processes: any[]) => {
const availableCustomers: any[] = processes.map((process: any) => process.processData);
@ -176,6 +177,8 @@ export default function AddClientToFolder(props: IProps) {
setExistingCustomers(existingCustomers);
setIsLoaded(true);
setSelectedOption(selectedOption);
LoaderService.getInstance().hide();
});
}, [folderUid, getFolderPreSelectedCustomers]);

View File

@ -17,6 +17,7 @@ import backgroundImage from "@Assets/images/background_refonte.svg";
import FolderService from "src/common/Api/LeCoffreApi/sdk/FolderService";
import DocumentService from "src/common/Api/LeCoffreApi/sdk/DocumentService";
import LoaderService from "src/common/Api/LeCoffreApi/sdk/Loader/LoaderService";
export default function AskDocuments() {
const router = useRouter();
@ -58,8 +59,8 @@ export default function AskDocuments() {
) => {
try {
// TODO: review
LoaderService.getInstance().show();
const documentAsked: [] = values["document_types"] as [];
for (let i = 0; i < documentAsked.length; i++) {
const documentData: any = {
folder: {
@ -77,7 +78,6 @@ export default function AskDocuments() {
await DocumentService.createDocument(documentData, validatorId);
}
router.push(
Module.getInstance()
.get()
@ -127,11 +127,13 @@ export default function AskDocuments() {
const loadData = useCallback(async () => {
try {
LoaderService.getInstance().show();
FolderService.getFolderByUid(folderUid as string).then(async (process: any) => {
if (process) {
const folder: any = process.processData;
setFolder(folder);
setDocumentTypes(await getAvailableDocuments(folder));
LoaderService.getInstance().hide();
}
});
} catch (e) {

View File

@ -17,6 +17,7 @@ import Note from "le-coffre-resources/dist/Customer/Note";
import FolderService from "src/common/Api/LeCoffreApi/sdk/FolderService";
import CustomerService from "src/common/Api/LeCoffreApi/sdk/CustomerService";
import NoteService from "src/common/Api/LeCoffreApi/sdk/NoteService";
import LoaderService from "src/common/Api/LeCoffreApi/sdk/Loader/LoaderService";
type IProps = {};
@ -83,6 +84,8 @@ class CreateCustomerNoteClass extends BasePage<IPropsClass, IState> {
const customer = await Customers.getInstance().getByUid(this.props.customerUid);
*/
LoaderService.getInstance().show();
const folder: any = await FolderService.getFolderByUid(this.props.folderUid).then((process: any) => {
if (process) {
const folder: any = process.processData;
@ -97,6 +100,8 @@ class CreateCustomerNoteClass extends BasePage<IPropsClass, IState> {
}
});
LoaderService.getInstance().hide();
//get the note of the folder that has customer_uid = this.props.customer.uid
// const folderNote = folder.notes?.find((note) => note.customer?.uid === this.props.customerUid);
// this.setState({ note, folder: note.office_folder || null, customer: note.customer || null });
@ -121,6 +126,7 @@ class CreateCustomerNoteClass extends BasePage<IPropsClass, IState> {
};
const validatorId: string = '884cb36a346a79af8697559f16940141f068bdf1656f88fa0df0e9ecd7311fb8:0';
LoaderService.getInstance().show();
NoteService.createNote(noteData, validatorId).then(() => {
this.props.router.push(this.backwardPath);
});

View File

@ -4,6 +4,7 @@ import Typography, { ETypo } from "@Front/Components/DesignSystem/Typography";
import React, { useCallback } from "react";
import DocumentService from "src/common/Api/LeCoffreApi/sdk/DocumentService";
import LoaderService from "src/common/Api/LeCoffreApi/sdk/Loader/LoaderService";
type IProps = {
documentUid: string;
@ -16,7 +17,8 @@ export default function DeleteAskedDocumentModal(props: IProps) {
const { isOpen, onClose, documentUid, onDeleteSuccess } = props;
const onDelete = useCallback(
() =>
() => {
LoaderService.getInstance().show();
new Promise<void>(
(resolve: () => void) => {
DocumentService.getDocumentByUid(documentUid).then((process: any) => {
@ -27,8 +29,10 @@ export default function DeleteAskedDocumentModal(props: IProps) {
})
.then(() => onDeleteSuccess(documentUid))
.then(() => ToasterService.getInstance().success({ title: "Succès !", description: "Le document a été supprimé avec succès." }))
.then(() => LoaderService.getInstance().hide())
.then(onClose)
.catch((error) => console.warn(error)),
.catch((error) => console.warn(error));
},
[documentUid, onClose, onDeleteSuccess],
);

View File

@ -1,9 +1,11 @@
import DocumentsNotary from "@Front/Api/LeCoffreApi/Notary/DocumentsNotary/DocumentsNotary";
import Modal from "@Front/Components/DesignSystem/Modal";
import { ToasterService } from "@Front/Components/DesignSystem/Toaster";
import Typography, { ETypo } from "@Front/Components/DesignSystem/Typography";
import React, { useCallback } from "react";
import DocumentService from "src/common/Api/LeCoffreApi/sdk/DocumentService";
import LoaderService from "src/common/Api/LeCoffreApi/sdk/Loader/LoaderService";
type IProps = {
documentUid: string;
isOpen: boolean;
@ -15,13 +17,18 @@ export default function DeleteSentDocumentModal(props: IProps) {
const { isOpen, onClose, documentUid, onDeleteSuccess } = props;
const onDelete = useCallback(
() =>
DocumentsNotary.getInstance()
.delete(documentUid)
() => {
LoaderService.getInstance().show();
DocumentService.getDocumentByUid(documentUid).then((process: any) => {
if (process) {
DocumentService.updateDocument(process, { isDeleted: 'true' })
.then(() => onDeleteSuccess(documentUid))
.then(() => ToasterService.getInstance().success({ title: "Succès !", description: "Le document a été supprimé avec succès." }))
.then(onClose)
.catch((error) => console.warn(error)),
.then(() => LoaderService.getInstance().hide())
.then(onClose);
}
});
},
[documentUid, onClose, onDeleteSuccess],
);

View File

@ -1,4 +1,3 @@
import DocumentsNotary from "@Front/Api/LeCoffreApi/Notary/DocumentsNotary/DocumentsNotary";
import FilesNotary from "@Front/Api/LeCoffreApi/Notary/FilesNotary/Files";
import CircleProgress from "@Front/Components/DesignSystem/CircleProgress";
import IconButton from "@Front/Components/DesignSystem/IconButton";
@ -24,6 +23,7 @@ import DeleteSentDocumentModal from "./DeleteSentDocumentModal";
import DocumentService from "src/common/Api/LeCoffreApi/sdk/DocumentService";
import DocumentTypeService from "src/common/Api/LeCoffreApi/sdk/DocumentTypeService";
import FileService from "src/common/Api/LeCoffreApi/sdk/FileService";
import LoaderService from "src/common/Api/LeCoffreApi/sdk/Loader/LoaderService";
type IProps = {
customerUid: string;
@ -55,14 +55,13 @@ export default function DocumentTables(props: IProps) {
const fetchDocuments = useCallback(
() => {
setDocuments([]);
LoaderService.getInstance().show();
DocumentService.getDocuments().then(async (processes: any[]) => {
if (processes.length > 0) {
let documents: any[] = processes.map((process: any) => process.processData);
// FilterBy folder.uid & depositor.uid
documents = documents.filter((document: any) => document.folder.uid === folderUid && document.depositor.uid === customerUid);
documents = documents.filter((document: any) => document.folder.uid === folderUid && document.depositor && document.depositor.uid === customerUid);
for (const document of documents) {
document.document_type = (await DocumentTypeService.getDocumentTypeByUid(document.document_type.uid)).processData;
@ -80,24 +79,45 @@ export default function DocumentTables(props: IProps) {
} else {
setDocuments([]);
}
})
LoaderService.getInstance().hide();
});
},
[customerUid, folderUid],
);
const fetchDocumentsNotary = useCallback(
() =>
DocumentsNotary.getInstance()
.get({ where: { folder: { uid: folderUid }, customer: { uid: customerUid } }, include: { files: true } })
.then(setDocumentsNotary)
.catch(console.warn),
() => {
LoaderService.getInstance().show();
DocumentService.getDocuments().then(async (processes: any[]) => {
if (processes.length > 0) {
let documents: any[] = processes.map((process: any) => process.processData);
// FilterBy folder.uid & customer.uid
documents = documents.filter((document: any) => document.folder.uid === folderUid && document.customer && document.customer.uid === customerUid);
for (const document of documents) {
if (document.files && document.files.length > 0) {
const files: any[] = [];
for (const file of document.files) {
files.push((await FileService.getFileByUid(file.uid)).processData);
}
document.files = files;
}
}
setDocumentsNotary(documents);
} else {
setDocumentsNotary([]);
}
LoaderService.getInstance().hide();
});
},
[customerUid, folderUid],
);
useEffect(() => {
// TODO: review
fetchDocuments();
//fetchDocumentsNotary();
fetchDocumentsNotary();
}, [fetchDocuments, fetchDocumentsNotary]);
const openDeleteAskedDocumentModal = useCallback(

View File

@ -135,7 +135,7 @@ export default function FolderInformation(props: IProps) {
if (processes.length > 0) {
const documents: any[] = processes.map((process: any) => process.processData);
for (const customer of folder.customers) {
customer.documents = documents.filter((document: any) => document.depositor.uid === customer.uid);
customer.documents = documents.filter((document: any) => document.depositor && document.depositor.uid === customer.uid);
}
}
resolve();

View File

@ -1,6 +1,5 @@
import backgroundImage from "@Assets/images/background_refonte.svg";
import DocumentsNotary from "@Front/Api/LeCoffreApi/Notary/DocumentsNotary/DocumentsNotary";
import Folders from "@Front/Api/LeCoffreApi/Notary/Folders/Folders";
import { EDocumentNotaryStatus } from "le-coffre-resources/dist/Notary/DocumentNotary";
import Button, { EButtonstyletype, EButtonVariant } from "@Front/Components/DesignSystem/Button";
import DragAndDrop from "@Front/Components/DesignSystem/DragAndDrop";
import Form from "@Front/Components/DesignSystem/Form";
@ -19,6 +18,11 @@ import React, { useCallback, useEffect, useMemo, useState } from "react";
import classes from "./classes.module.scss";
import LoaderService from "src/common/Api/LeCoffreApi/sdk/Loader/LoaderService";
import FolderService from "src/common/Api/LeCoffreApi/sdk/FolderService";
import DocumentService from "src/common/Api/LeCoffreApi/sdk/DocumentService";
import FileService from "src/common/Api/LeCoffreApi/sdk/FileService";
enum EClientSelection {
ALL_CLIENTS = "all_clients",
SELECTED_CLIENTS = "selected_clients",
@ -59,6 +63,64 @@ export default function SendDocuments() {
throw new Error("No clients selected");
}
LoaderService.getInstance().show();
for (const selectedClient of selectedClients) {
for (const file of files) {
await new Promise<void>((resolve: () => void) => {
const reader = new FileReader();
reader.onload = (event) => {
if (event.target?.result) {
const arrayBuffer = event.target.result as ArrayBuffer;
const uint8Array = new Uint8Array(arrayBuffer);
const fileBlob: any = {
type: file.type,
data: uint8Array
};
const fileData: any = {
file_blob: fileBlob,
file_name: file.name
};
const validatorId: string = '884cb36a346a79af8697559f16940141f068bdf1656f88fa0df0e9ecd7311fb8:0';
FileService.createFile(fileData, validatorId).then((processCreated: any) => {
const fileUid: string = processCreated.processData.uid;
const documentData: any = {
folder: {
uid: folderUid as string
},
customer: {
uid: selectedClient as string
},
files: [
{
uid: fileUid
}
],
document_status: EDocumentNotaryStatus.SENT
};
DocumentService.createDocument(documentData, validatorId).then(() => resolve());
});
}
};
reader.readAsArrayBuffer(file);
});
}
}
LoaderService.getInstance().hide();
router.push(
Module.getInstance()
.get()
.modules.pages.Folder.pages.FolderInformation.props.path.replace("[folderUid]", folderUid as string),
);
setIsSending(false);
ToasterService.getInstance().success({ title: "Succès !", description: "Votre document a été envoyée avec succès." });
/*
await Promise.all(
selectedClients.map(async (customer) => {
const promises = files.map(async (file) => {
@ -83,6 +145,7 @@ export default function SendDocuments() {
);
setIsSending(false);
ToasterService.getInstance().success({ title: "Succès !", description: "Votre document a été envoyée avec succès." });
*/
} catch (error) {
setIsSending(false);
console.warn("Error while sending files: ", error);
@ -92,18 +155,14 @@ export default function SendDocuments() {
);
const fetchFolder = useCallback(async () => {
Folders.getInstance()
.getByUid(folderUid as string, {
q: {
customers: {
include: {
contact: true,
},
},
},
})
.then((folder) => setFolder(folder))
.catch((e) => console.warn(e));
LoaderService.getInstance().show();
FolderService.getFolderByUid(folderUid as string).then((process: any) => {
if (process) {
const folder: any = process.processData;
setFolder(folder);
LoaderService.getInstance().hide();
}
});
}, [folderUid]);
const onClientSelectionChange = useCallback(

View File

@ -13,6 +13,7 @@ import classes from "./classes.module.scss";
import Note from "le-coffre-resources/dist/Customer/Note";
import NoteService from "src/common/Api/LeCoffreApi/sdk/NoteService";
import LoaderService from "src/common/Api/LeCoffreApi/sdk/Loader/LoaderService";
type IProps = {};
@ -67,6 +68,7 @@ class UpdateCustomerNoteClass extends BasePage<IPropsClass, IState> {
}
public override async componentDidMount() {
LoaderService.getInstance().show();
NoteService.getNoteByUid(this.props.noteUid).then((process: any) => {
if (process) {
const note: any = process.processData;
@ -80,15 +82,17 @@ class UpdateCustomerNoteClass extends BasePage<IPropsClass, IState> {
.get()
.modules.pages.Folder.pages.FolderInformation.props.path.replace("[folderUid]", note.folder?.uid!),
});
LoaderService.getInstance().hide();
}
});
}
private async onFormSubmit(e: React.FormEvent<HTMLFormElement> | null, values: { [key: string]: string }) {
try {
LoaderService.getInstance().show();
NoteService.getNoteByUid(this.props.noteUid).then((process: any) => {
if (process) {
NoteService.updateNote(process, { content: values["content"] }).then(() => {
this.props.router.push(this.state.backwardPath);
});

View File

@ -49,7 +49,6 @@ export default function UpdateFolderMetadata() {
setValidationError(validationErrors as ValidationError[]);
return;
}
try {
LoaderService.getInstance().show();
FolderService.getFolderByUid(folderUid).then((process: any) => {