diff --git a/src/front/Api/LeCoffreApi/SuperAdmin/Documents/Documents.ts b/src/front/Api/LeCoffreApi/SuperAdmin/Documents/Documents.ts index 488969ff..e15c4f7e 100644 --- a/src/front/Api/LeCoffreApi/SuperAdmin/Documents/Documents.ts +++ b/src/front/Api/LeCoffreApi/SuperAdmin/Documents/Documents.ts @@ -82,4 +82,14 @@ export default class Documents extends BaseSuperAdmin { return Promise.reject(err); } } + + public async delete(uid: string): Promise { + const url = new URL(this.baseURl.concat(`/${uid}`)); + try { + return await this.deleteRequest(url); + } catch (err) { + this.onError(err); + return Promise.reject(err); + } + } } diff --git a/src/front/Components/DesignSystem/UserFolder/UserFolderHeader/index.tsx b/src/front/Components/DesignSystem/UserFolder/UserFolderHeader/index.tsx index b82b80c2..bdc82961 100644 --- a/src/front/Components/DesignSystem/UserFolder/UserFolderHeader/index.tsx +++ b/src/front/Components/DesignSystem/UserFolder/UserFolderHeader/index.tsx @@ -67,7 +67,6 @@ export default class UserFolderHeader extends React.Component { } private hasPendingFiles() { - console.log(this.props.folder.documents); const documents = this.props.folder.documents?.filter((document) => document.depositor?.contact?.uid === this.props.customer.contact?.uid) ?? []; const notAskedDocuments = documents.filter((document) => document.document_status === EDocumentStatus.DEPOSITED) ?? []; diff --git a/src/front/Components/DesignSystem/UserFolder/index.tsx b/src/front/Components/DesignSystem/UserFolder/index.tsx index 8e0b391b..2abe3b37 100644 --- a/src/front/Components/DesignSystem/UserFolder/index.tsx +++ b/src/front/Components/DesignSystem/UserFolder/index.tsx @@ -15,6 +15,7 @@ import classes from "./classes.module.scss"; import DocumentList from "./DocumentList"; import UserFolderHeader from "./UserFolderHeader"; import { EDocumentStatus } from "le-coffre-resources/dist/Customer/Document"; +import Documents from "@Front/Api/LeCoffreApi/SuperAdmin/Documents/Documents"; type IProps = { customer: Customer; @@ -26,6 +27,7 @@ type IProps = { }; type IState = { isOpenDeletionModal: boolean; + selectedDocumentToDelete: string; }; export default class UserFolder extends React.Component { @@ -39,10 +41,12 @@ export default class UserFolder extends React.Component { super(props); this.state = { isOpenDeletionModal: false, + selectedDocumentToDelete: "", }; this.closeDeletionModal = this.closeDeletionModal.bind(this); this.openDeletionModal = this.openDeletionModal.bind(this); this.changeUserFolder = this.changeUserFolder.bind(this); + this.deleteAskedDocument = this.deleteAskedDocument.bind(this); } public override render(): JSX.Element { const documentsAsked: Document[] | null = this.getDocumentsByStatus("ASKED"); @@ -55,6 +59,7 @@ export default class UserFolder extends React.Component { { this.rootRefElement.current?.style.setProperty("--animation-delay", this.props.animationDelay!.toString().concat("ms")); } + private async deleteAskedDocument(){ + try{ + await Documents.getInstance().delete(this.state.selectedDocumentToDelete); + window.location.reload(); + }catch(e){ + console.error(e); + } + } + private calculateDocumentsPercentageProgress(): number { if (!this.props.customer.documents) return 0; const totalDocuments: number = this.props.customer.documents.length; const numberDocumentsAsked: number = this.getDocumentsByStatus(EDocumentStatus.ASKED)?.length || 0; - return Math.round(((totalDocuments - numberDocumentsAsked) / totalDocuments) * 100); + + const percentage = Math.round(((totalDocuments - numberDocumentsAsked) / totalDocuments) * 100); + if(!percentage) return 0; + return percentage; } private getDocumentsByStatus(status: string): Document[] | null { @@ -159,9 +176,11 @@ export default class UserFolder extends React.Component { } private openDeletionModal(uid?: string): void { - // TODO: call API to delete document + if(!uid) return; + this.setState({ isOpenDeletionModal: true, + selectedDocumentToDelete: uid, }); } private closeDeletionModal(): void {