From 542c568e10c3e164ab8465dda99acbfcefc44393 Mon Sep 17 00:00:00 2001 From: Maxime Lalo Date: Mon, 9 Oct 2023 11:22:23 +0200 Subject: [PATCH] :bug: Cannot anchor a folder if not all documents are validated --- .../api/notary/OfficeFolderAnchorsController.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/app/api/notary/OfficeFolderAnchorsController.ts b/src/app/api/notary/OfficeFolderAnchorsController.ts index 62c9d3d7..3a43a703 100644 --- a/src/app/api/notary/OfficeFolderAnchorsController.ts +++ b/src/app/api/notary/OfficeFolderAnchorsController.ts @@ -2,7 +2,7 @@ import { Response, Request } from "express"; import { Controller, Get, Post } from "@ControllerPattern/index"; import ApiController from "@Common/system/controller-pattern/ApiController"; import { Service } from "typedi"; -import { OfficeFolder } from "le-coffre-resources/dist/Notary"; +import { Document, OfficeFolder } from "le-coffre-resources/dist/Notary"; import { getFolderHashes } from "@Common/optics/notary"; import OfficeFoldersService from "@Services/notary/OfficeFoldersService/OfficeFoldersService"; import OfficeFolderAnchorsRepository from "@Repositories/OfficeFolderAnchorsRepository"; @@ -136,6 +136,18 @@ export default class OfficeFoldersController extends ApiController { const officeFolder = OfficeFolder.hydrate(officeFolderFound, { strategy: "excludeAll" }); + // Check if every document is validated in a folder + const documents = officeFolder.documents ?? []; + const documentsValidated = documents.filter((document) => { + let documentHydrated = Document.hydrate(document, { strategy: "excludeAll" }); + return documentHydrated.document_status === "VALIDATED"; + }); + + if (documentsValidated.length !== documents.length && documents.length !== 0) { + this.httpBadRequest(response, "Cannot anchor a folder with non validated documents"); + return; + } + const folderHashes = getFolderHashes(officeFolder); if (folderHashes.length === 0) {