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) {