diff --git a/src/app/api/super-admin/OfficeFoldersController.ts b/src/app/api/super-admin/OfficeFoldersController.ts index a5427559..36062499 100644 --- a/src/app/api/super-admin/OfficeFoldersController.ts +++ b/src/app/api/super-admin/OfficeFoldersController.ts @@ -47,7 +47,14 @@ export default class OfficeFoldersController extends ApiController { //init OfficeFolder resource with request body values const officeFolderRessource = OfficeFolder.hydrate(req.body); await officeFolderRessource.validateOrReject?.({ groups: ["createFolder"] , forbidUnknownValues: false }); - //validate folder + + const officeFolderNumberExist = await this.officeFoldersService.get({where: {folder_number: officeFolderRessource.folder_number}}); + + if (officeFolderNumberExist) { + this.httpValidationError(response, "Folder number already taken"); + return; + } + //call service to get prisma entity const officeFolderEntity = await this.officeFoldersService.create(officeFolderRessource); //Hydrate ressource with prisma entity diff --git a/src/common/system/controller-pattern/BaseController.ts b/src/common/system/controller-pattern/BaseController.ts index 27eb5aa9..edd1af03 100644 --- a/src/common/system/controller-pattern/BaseController.ts +++ b/src/common/system/controller-pattern/BaseController.ts @@ -20,6 +20,10 @@ export default abstract class BaseController { return this.httpResponse(response, HttpCodes.BAD_REQUEST, responseData); } + protected httpValidationError(response: Response, responseData: IResponseData = "Http Validation Error") { + return this.httpResponse(response, HttpCodes.VALIDATION_ERROR, responseData); + } + protected httpNotFoundRequest(response: Response, responseData: IResponseData = "Not Found") { return this.httpResponse(response, HttpCodes.NOT_FOUND, responseData); } diff --git a/src/common/system/controller-pattern/HttpCodes.ts b/src/common/system/controller-pattern/HttpCodes.ts index 8ca2500b..f6ce001a 100644 --- a/src/common/system/controller-pattern/HttpCodes.ts +++ b/src/common/system/controller-pattern/HttpCodes.ts @@ -2,6 +2,7 @@ enum HttpCodes { SUCCESS = 200, CREATED = 201, BAD_REQUEST = 400, + VALIDATION_ERROR = 422, INTERNAL_ERROR = 500, UNKNOWN_ERROR = 520, NOT_IMPLEMENTED = 501,