diff --git a/src/app/api/super-admin/DeedsController.ts b/src/app/api/super-admin/DeedsController.ts index 382c9e7d..8dc14408 100644 --- a/src/app/api/super-admin/DeedsController.ts +++ b/src/app/api/super-admin/DeedsController.ts @@ -1,10 +1,11 @@ import { Response, Request } from "express"; -import { Controller, Get } from "@ControllerPattern/index"; +import { Controller, Get, Put } from "@ControllerPattern/index"; import ApiController from "@Common/system/controller-pattern/ApiController"; import DeedsService from "@Services/super-admin/DeedsService/DeedsService"; import { Service } from "typedi"; import { Deeds } from "@prisma/client"; import { Deed } from "le-coffre-resources/dist/SuperAdmin"; +import { validateOrReject } from "class-validator"; @Controller() @Service() @@ -62,4 +63,36 @@ export default class DeedsController extends ApiController { } this.httpSuccess(response, await this.deedsService.getByUid("uid")); } + + /** + * @description Modify a specific deed by uid + */ + @Put("/api/v1/super-admin/deeds/:uid") + protected async put(req: Request, response: Response) { + try { + const uid = req.params["uid"]; + if (!uid) { + throw new Error("No uid provided"); + } + //init OfficeFolder resource with request body values + const deedEntity = Deed.hydrate(req.body); + + //validate folder + await validateOrReject(deedEntity, { groups: ["updateDeed"], forbidUnknownValues: false }); + + //call service to get prisma entity + const prismaEntityUpdated = await this.deedsService.update(uid, deedEntity); + + //Hydrate ressource with prisma entity + const deedEntityUpdated = Deed.hydrate(prismaEntityUpdated, { + strategy: "excludeAll", + }); + + //success + this.httpSuccess(response, deedEntityUpdated); + } catch (error) { + this.httpBadRequest(response, error); + return; + } + } } diff --git a/src/app/api/super-admin/FilesController.ts b/src/app/api/super-admin/FilesController.ts index ff0c393c..2ca5f7b1 100644 --- a/src/app/api/super-admin/FilesController.ts +++ b/src/app/api/super-admin/FilesController.ts @@ -86,7 +86,7 @@ export default class FilesController extends ApiController { const fileEntity = File.hydrate(req.body); //validate file - await validateOrReject(fileEntity, { groups: ["create"] }); + await validateOrReject(fileEntity, { groups: ["updateFile"] }); //call service to get prisma entity const prismaEntityUpdated: Files = await this.filesService.update(uid, fileEntity);