From 22cf1f5b1053df8565d7febb33ce0f86df498113 Mon Sep 17 00:00:00 2001 From: Maxime Lalo Date: Mon, 18 Sep 2023 15:35:36 +0200 Subject: [PATCH 1/3] :sparkles: Removing anchor function from documents --- .../FolderInformation/classes.module.scss | 7 ++- .../Folder/FolderInformation/index.tsx | 13 ++++ .../Layouts/Folder/ViewDocuments/index.tsx | 62 +++++-------------- 3 files changed, 31 insertions(+), 51 deletions(-) diff --git a/src/front/Components/Layouts/Folder/FolderInformation/classes.module.scss b/src/front/Components/Layouts/Folder/FolderInformation/classes.module.scss index a1052297..e4477922 100644 --- a/src/front/Components/Layouts/Folder/FolderInformation/classes.module.scss +++ b/src/front/Components/Layouts/Folder/FolderInformation/classes.module.scss @@ -57,6 +57,7 @@ .button-container { width: 100%; display: flex; + gap: 16px; text-align: center; justify-content: center; @@ -72,12 +73,12 @@ margin-left: 0; margin-top: 12px; - >* { + > * { flex: 1; } } - >* { + > * { width: 100%; } } @@ -86,4 +87,4 @@ .modal-title { margin-bottom: 24px; } -} \ No newline at end of file +} diff --git a/src/front/Components/Layouts/Folder/FolderInformation/index.tsx b/src/front/Components/Layouts/Folder/FolderInformation/index.tsx index bb6a30c5..8bd2e922 100644 --- a/src/front/Components/Layouts/Folder/FolderInformation/index.tsx +++ b/src/front/Components/Layouts/Folder/FolderInformation/index.tsx @@ -45,6 +45,7 @@ class FolderInformationClass extends BasePage { this.getCompletionNumber = this.getCompletionNumber.bind(this); this.onArchivedDescriptionInputChange = this.onArchivedDescriptionInputChange.bind(this); this.deleteFolder = this.deleteFolder.bind(this); + this.anchorFolder = this.anchorFolder.bind(this); } // TODO: Message if the user has not created any folder yet @@ -93,6 +94,11 @@ class FolderInformationClass extends BasePage { + {this.everyDocumentValidated() && ( + + )} {!this.doesFolderHaveCustomer() && ( @@ -137,6 +143,13 @@ class FolderInformationClass extends BasePage { }); } + private anchorFolder() {} + + private everyDocumentValidated(): boolean { + if (!this.state.selectedFolder?.documents) return false; + return this.state.selectedFolder?.documents.every((document) => document.document_status === EDocumentStatus.VALIDATED); + } + private async deleteFolder() { if (!this.state.selectedFolder?.uid) return; await Folders.getInstance().delete(this.state.selectedFolder.uid); diff --git a/src/front/Components/Layouts/Folder/ViewDocuments/index.tsx b/src/front/Components/Layouts/Folder/ViewDocuments/index.tsx index 81bb3a8d..68faf697 100644 --- a/src/front/Components/Layouts/Folder/ViewDocuments/index.tsx +++ b/src/front/Components/Layouts/Folder/ViewDocuments/index.tsx @@ -1,9 +1,7 @@ import LeftArrowIcon from "@Assets/Icons/left-arrow.svg"; import RightArrowIcon from "@Assets/Icons/right-arrow.svg"; import Documents from "@Front/Api/LeCoffreApi/Notary/Documents/Documents"; -import ValidateAnchoringGif from "@Front/Assets/images/validate_anchoring.gif"; import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button"; -import CheckBox from "@Front/Components/DesignSystem/CheckBox"; import FilePreview from "@Front/Components/DesignSystem/FilePreview"; import Confirm from "@Front/Components/DesignSystem/Modal/Confirm"; import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography"; @@ -32,7 +30,6 @@ type IState = { isRefuseModalVisible: boolean; isValidateModalVisible: boolean; refuseText: string; - hasValidateAnchoring: boolean; selectedFileIndex: number; selectedFile: File | null; validatedPercentage: number; @@ -47,7 +44,6 @@ class ViewDocumentsClass extends BasePage { isValidateModalVisible: false, isRefuseModalVisible: false, refuseText: "", - hasValidateAnchoring: false, selectedFileIndex: 0, selectedFile: null, validatedPercentage: this.getRandomPercentageForOcr(), @@ -58,7 +54,7 @@ class ViewDocumentsClass extends BasePage { this.openValidateModal = this.openValidateModal.bind(this); this.openRefuseModal = this.openRefuseModal.bind(this); this.onRefuseTextChange = this.onRefuseTextChange.bind(this); - this.validateAnchoring = this.validateAnchoring.bind(this); + this.validateDocument = this.validateDocument.bind(this); this.goToNext = this.goToNext.bind(this); this.goToPrevious = this.goToPrevious.bind(this); @@ -117,7 +113,7 @@ class ViewDocumentsClass extends BasePage { - + )} @@ -129,30 +125,16 @@ class ViewDocumentsClass extends BasePage { + confirmText={"Confirmer"}>
- {!this.state.hasValidateAnchoring && ( - - Êtes-vous sûr de vouloir ancrer ce document ? - - )} - {this.state.hasValidateAnchoring && ( -
- - Le document s'ancre dans la blockchain. - - Anchoring animation -
- -
-
- )} + + Êtes-vous sûr de vouloir valider ce document ? +
{ } } - private async validateAnchoring() { - this.setState({ - hasValidateAnchoring: true, - }); - + private async validateDocument() { try { await Documents.getInstance().put(this.props.documentUid, { document_status: EDocumentStatus.VALIDATED, }); - const timeoutDelay = 9800; - setTimeout(() => { - this.setState({ - isValidateModalVisible: false, - }); - this.props.router.push( - Module.getInstance() - .get() - .modules.pages.Folder.pages.FolderInformation.props.path.replace("[folderUid]", this.props.folderUid), - ); - }, timeoutDelay); - - setTimeout(() => { - this.setState({ - hasValidateAnchoring: false, - }); - }, timeoutDelay + 1000); + this.props.router.push( + Module.getInstance() + .get() + .modules.pages.Folder.pages.FolderInformation.props.path.replace("[folderUid]", this.props.folderUid), + ); } catch (e) { console.error(e); } From d1bb681e7425b64a558082850ee764cbbaf98593 Mon Sep 17 00:00:00 2001 From: Maxime Lalo Date: Mon, 18 Sep 2023 15:45:22 +0200 Subject: [PATCH 2/3] :sparkles: Anchor and certify on folder page --- .../FolderInformation/classes.module.scss | 10 +++ .../Folder/FolderInformation/index.tsx | 83 ++++++++++++++++++- 2 files changed, 90 insertions(+), 3 deletions(-) diff --git a/src/front/Components/Layouts/Folder/FolderInformation/classes.module.scss b/src/front/Components/Layouts/Folder/FolderInformation/classes.module.scss index e4477922..8d16dc82 100644 --- a/src/front/Components/Layouts/Folder/FolderInformation/classes.module.scss +++ b/src/front/Components/Layouts/Folder/FolderInformation/classes.module.scss @@ -88,3 +88,13 @@ margin-bottom: 24px; } } + +.validate-document-container { + .document-validating-container { + .validate-gif { + width: 100%; + height: 100%; + object-fit: contain; + } + } +} diff --git a/src/front/Components/Layouts/Folder/FolderInformation/index.tsx b/src/front/Components/Layouts/Folder/FolderInformation/index.tsx index 8bd2e922..f58687e3 100644 --- a/src/front/Components/Layouts/Folder/FolderInformation/index.tsx +++ b/src/front/Components/Layouts/Folder/FolderInformation/index.tsx @@ -13,10 +13,13 @@ import { EDocumentStatus } from "le-coffre-resources/dist/Notary/Document"; import Link from "next/link"; import { NextRouter, useRouter } from "next/router"; import { ChangeEvent } from "react"; +import Image from "next/image"; +import ValidateAnchoringGif from "@Front/Assets/images/validate_anchoring.gif"; import BasePage from "../../Base"; import classes from "./classes.module.scss"; import ClientSection from "./ClientSection"; +import CheckBox from "@Front/Components/DesignSystem/CheckBox"; type IProps = {}; @@ -29,6 +32,8 @@ type IState = { selectedFolder: OfficeFolder | null; isArchivedModalOpen: boolean; inputArchivedDescripton: string; + isValidateModalVisible: boolean; + hasValidateAnchoring: boolean; }; class FolderInformationClass extends BasePage { public constructor(props: IPropsClass) { @@ -37,6 +42,8 @@ class FolderInformationClass extends BasePage { selectedFolder: null, isArchivedModalOpen: false, inputArchivedDescripton: "", + isValidateModalVisible: false, + hasValidateAnchoring: false, }; this.onSelectedFolder = this.onSelectedFolder.bind(this); this.openArchivedModal = this.openArchivedModal.bind(this); @@ -45,7 +52,9 @@ class FolderInformationClass extends BasePage { this.getCompletionNumber = this.getCompletionNumber.bind(this); this.onArchivedDescriptionInputChange = this.onArchivedDescriptionInputChange.bind(this); this.deleteFolder = this.deleteFolder.bind(this); - this.anchorFolder = this.anchorFolder.bind(this); + this.closeModal = this.closeModal.bind(this); + this.validateAnchoring = this.validateAnchoring.bind(this); + this.openValidateModal = this.openValidateModal.bind(this); } // TODO: Message if the user has not created any folder yet @@ -95,7 +104,7 @@ class FolderInformationClass extends BasePage { Archiver le dossier {this.everyDocumentValidated() && ( - )} @@ -134,6 +143,41 @@ class FolderInformationClass extends BasePage { )} + +
+ {!this.state.hasValidateAnchoring && ( + + Afin de certifier les documents associés au dossier, cliquez sur “Ancrez et certifier” et les documents + seront certifiés sur la blockchain. + + )} + {this.state.hasValidateAnchoring && ( +
+ + Vous pouvez désormais télécharger les feuilles d'ancrage et les mettre dans la GED de votre logiciel de + rédaction d'acte. + + Anchoring animation +
+ +
+
+ )} +
+
); } @@ -143,7 +187,40 @@ class FolderInformationClass extends BasePage { }); } - private anchorFolder() {} + private closeModal() { + this.setState({ + isValidateModalVisible: false, + }); + } + + private openValidateModal() { + this.setState({ + isValidateModalVisible: true, + }); + } + + private async validateAnchoring() { + this.setState({ + hasValidateAnchoring: true, + }); + + try { + const timeoutDelay = 9800; + setTimeout(() => { + this.setState({ + isValidateModalVisible: false, + }); + }, timeoutDelay); + + setTimeout(() => { + this.setState({ + hasValidateAnchoring: false, + }); + }, timeoutDelay + 1000); + } catch (e) { + console.error(e); + } + } private everyDocumentValidated(): boolean { if (!this.state.selectedFolder?.documents) return false; From 915c66720c63afc204808b5e47138c6722bad2e4 Mon Sep 17 00:00:00 2001 From: Maxime Lalo Date: Tue, 19 Sep 2023 17:10:46 +0200 Subject: [PATCH 3/3] :bug: Forgot anchor condition --- .../Components/Layouts/Folder/FolderInformation/index.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/front/Components/Layouts/Folder/FolderInformation/index.tsx b/src/front/Components/Layouts/Folder/FolderInformation/index.tsx index f58687e3..d97cf1bd 100644 --- a/src/front/Components/Layouts/Folder/FolderInformation/index.tsx +++ b/src/front/Components/Layouts/Folder/FolderInformation/index.tsx @@ -224,7 +224,10 @@ class FolderInformationClass extends BasePage { private everyDocumentValidated(): boolean { if (!this.state.selectedFolder?.documents) return false; - return this.state.selectedFolder?.documents.every((document) => document.document_status === EDocumentStatus.VALIDATED); + return ( + this.state.selectedFolder?.documents?.length >= 1 && + this.state.selectedFolder?.documents.every((document) => document.document_status === EDocumentStatus.VALIDATED) + ); } private async deleteFolder() {