From 51a6453f39b48ec8bb5bd009b57885f4124170dd Mon Sep 17 00:00:00 2001 From: "DESKTOP-1R2VSQH\\Lenovo ThinkPad E490" Date: Thu, 31 Oct 2024 14:23:48 +0700 Subject: [PATCH] assignPermission --- .../AssignPermissionsController.ts | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/controllers/AssignPermissionsController.ts diff --git a/src/controllers/AssignPermissionsController.ts b/src/controllers/AssignPermissionsController.ts new file mode 100644 index 0000000..32a05a6 --- /dev/null +++ b/src/controllers/AssignPermissionsController.ts @@ -0,0 +1,71 @@ +import { Controller, Route, Security, Tags, Request, Get, Path } from "tsoa"; +import { RequestWithUser } from "../middlewares/user"; +import { AppDataSource } from "../database/data-source"; +import HttpSuccess from "../interfaces/http-success"; +import CallAPI from "../interfaces/call-api"; + +import { AssignDirector } from "../entities/AssignDirector"; +import { Assign } from "../entities/Assign"; + +@Route("api/v1/probation/permissions") +@Tags("สิทธิฟอร์มมอบหมายงาน") +@Security("bearerAuth") +export class AssignPermissionsController extends Controller { + private assignDirector = AppDataSource.getRepository(AssignDirector); + private assignRepository = AppDataSource.getRepository(Assign); + + @Get("{id}") + async GetAssignPermissions( + @Request() request: RequestWithUser, + @Path() id: string + ) { + const director = await this.assignDirector.find({ + where: { assign_id: id }, + }); + + const personalId = await new CallAPI() + .GetData(request, "/org/profile/keycloak") + .catch((error) => { + console.error("Error calling API:", error); + }); + + const role = director.find((e: any) => e.role === personalId)?.role; + + const reportPersonId = await this.assignRepository.findOneBy({ + reportPersonId: personalId, + }); + + const response = { + tab1: { + isEdit: role === "commander", + isView: true, + }, + tab2: { + isEdit: role === "mentor", + isView: true, + }, + tab3: { + isEdit: role === "commander", + isView: role === "commander" || role === "chairman", + }, + tab4: { + isEdit: role === "commander", + isView: role === "commander" || role === "chairman", + }, + tab5: { + isEdit: Boolean(reportPersonId), + isView: true, + }, + tab6: { + isEdit: true, + isView: true, + }, + tab7: { + isEdit: false, + isView: true, + }, + }; + + return new HttpSuccess(response); + } +}