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.personal_id === 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); } }