hrms-api-probation/src/controllers/AssignPermissionsController.ts
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 114a27c5e6 Assign Survey
2024-10-31 16:23:44 +07:00

71 lines
2 KiB
TypeScript

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);
}
}