71 lines
2 KiB
TypeScript
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);
|
|
}
|
|
}
|