import { Controller, Route, Security, Tags, Body, Request, SuccessResponse, Response, Get, Query, Put, } from "tsoa"; import { AppDataSource } from "../database/data-source"; import HttpSuccess from "../interfaces/http-success"; import HttpStatusCode from "../interfaces/http-status"; import HttpError from "../interfaces/http-error"; import { RequestWithUser } from "../middlewares/user"; import { DataPass, setLogDataDiff } from "../interfaces/utils"; import { Personal } from "../entities/Personal"; import { Assign } from "../entities/Assign"; import { EvaluateChairman } from "../entities/EvaluateChairman"; import { EvaluateResult } from "../entities/EvaluateResult"; import { EvaluateAssessor } from "../entities/EvaluateAssessor"; import { AssignDirector } from "../entities/AssignDirector"; import { EvaluateAchievement } from "../entities/EvaluateAchievement"; import { EvaluateCommander } from "../entities/EvaluateCommander"; import CallAPI from "../interfaces/call-api"; @Route("api/v1/probation/report") @Tags("Report") @Security("bearerAuth") @Response( HttpStatusCode.INTERNAL_SERVER_ERROR, "เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง", ) @SuccessResponse(HttpStatusCode.OK, "สำเร็จ") export class ReportController extends Controller { private evaluateChairmanRepository = AppDataSource.getRepository(EvaluateChairman); private evaluateResultRepository = AppDataSource.getRepository(EvaluateResult); private personalRepository = AppDataSource.getRepository(Personal); private evaluateAssessorRepository = AppDataSource.getRepository(EvaluateAssessor); private assignDirectorRepository = AppDataSource.getRepository(AssignDirector); private evaluateAchievementRepository = AppDataSource.getRepository(EvaluateAchievement); private evaluateCommanderRepository = AppDataSource.getRepository(EvaluateCommander); /** * API สำหรับออกรายงาน * * @summary ผลการทดลองปฏิบัติราชการ * */ @Get("") async GetReport(@Query() assign_id: string) { const evaluate = await this.evaluateChairmanRepository.findOne({ where: { assign_id }, }); const result = await this.evaluateResultRepository.findOne({ where: { assign_id }, }); if (!evaluate || !result) { return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผลการทดลองปฏิบัติราชการ"); } const develop_total_score = await (Number(evaluate.develop_orientation_score) + Number(evaluate.develop_self_learning_score) + Number(evaluate.develop_training_seminar_score) + Number(evaluate.develop_other_training_score)); const develop_total_percent = await (Number(evaluate.develop_orientation_percent) + Number(evaluate.develop_orientation_percent) + Number(evaluate.develop_self_learning_percent) + Number(evaluate.develop_training_seminar_percent)); const data = await { develop_orientation_score: evaluate.develop_orientation_score, develop_self_learning_score: evaluate.develop_self_learning_score, develop_training_seminar_score: evaluate.develop_training_seminar_score, develop_other_training_score: evaluate.develop_other_training_score, develop_total_score, develop_orientation_percent: evaluate.develop_orientation_percent, develop_self_learning_percent: evaluate.develop_self_learning_percent, develop_training_seminar_percent: evaluate.develop_training_seminar_percent, develop_other_training_percent: evaluate.develop_other_training_percent, develop_total_percent, develop_result: evaluate.develop_result, achievement_score: evaluate.achievement_score, achievement_score_total: evaluate.achievement_score_total, achievement_percent: evaluate.achievement_percent, achievement_result: evaluate.achievement_result, behavior_score: evaluate.behavior_score, behavior_score_total: evaluate.behavior_score_total, behavior_percent: evaluate.behavior_percent, behavior_result: evaluate.behavior_result, sum_score: evaluate.sum_score, sum_percent: evaluate.sum_percent, reason: result.reson, pass_result: result.pass_result, evaluate_date: result.chairman_dated, }; return new HttpSuccess(data); } /** * API แสดงรายการผู้ผ่านทดลองงาน * * @summary รายการผู้ผ่านทดลองงาน * */ @Get("pass") async GetPass() { const lists = await this.personalRepository.find({ where: { probation_status: 2 }, }); let data: DataPass[] = []; await Promise.all( lists.map(async (list) => { const assign = await AppDataSource.getRepository(Assign).findOne({ select: ["date_start", "date_finish"], where: { personal_id: list.personal_id }, }); if (assign) data.push({ person: { id: list.personal_id, name: `${list.prefixName}${list.firstName} ${list.lastName}`, }, assign, }); }), ); return new HttpSuccess(data); } /** * API แสดงรายการผู้ไม่ผ่านทดลองงาน * * @summary รายการคนไม่ผ่านการทดลองปฏิบัติราชการและรอไปออกคำสั่ง * */ @Get("not-pass") async GetDataNotPass() { const lists = await this.personalRepository.find({ where: { probation_status: 3 }, }); let data: DataPass[] = []; await Promise.all( lists.map(async (list) => { const assign = await AppDataSource.getRepository(Assign).findOne({ select: ["date_start", "date_finish"], where: { personal_id: list.personal_id }, }); if (assign) data.push({ person: { id: list.personal_id, name: `${list.prefixName}${list.firstName} ${list.lastName}`, }, assign, }); }), ); return new HttpSuccess(data); } /** * API แสดงรายการคนที่ถูกขยายระยะเวลาทดลองงาน * * @summary รายการคนที่ถูกขยายระยะเวลาทดลองปฏิบัติหน้าที่ราชการและรอไปออกคำสั่ง * */ @Get("expand") async GetDataExpand() { const lists = await this.personalRepository.find({ select: ["personal_id"], where: { probation_status: 7 }, }); return new HttpSuccess(lists); } /** * API สำหรับปรับสถานะการดึงไปออกคำสั่ง * * @summary ปรับสถานะการดึงไปออกคำสั่ง * */ @Put("status") async UpdateStatus( @Query() personal_id: string, @Body() requestBody: { command_no: string }, @Request() request: RequestWithUser, ) { const personal = await this.personalRepository.findOne({ where: { personal_id }, }); const before = personal; if (!personal) { return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลบุคคล"); } personal.order_number = requestBody.command_no; personal.probation_status = 8; personal.updateFullName = request.user.name; personal.updateUserId = request.user.sub; this.personalRepository.save(personal, { data: request }); setLogDataDiff(request, { before, after: personal }); const resultText = (await personal.probation_status) === 2 ? "ไม่ต่ำกว่ามาตรฐานที่กำหนด เห็นควรให้รับราชการต่อ" : "ต่ำกว่ามาตรฐานที่กำหนด เห็นควรให้ออกจากราชการ"; await new CallAPI() .PostData(request, "/placement/noti", { subject: "ผลการประเมินการทดลองปฏิบัติหน้าที่ราชการ", body: `ผลการประเมินการทดลองปฏิบัติหน้าที่ราชการ ${resultText}`, receiverUserId: personal_id, payload: "", isSendMail: false, isSendInbox: true, isSendNotification: true, }) .catch((error) => { console.error("Error calling API:", error); }); return new HttpSuccess(); } /** * API สำหรับปรับสถานะการดึงไปออกคำสั่ง * * @summary ปรับสถานะการดึงไปออกคำสั่ง * */ @Put("change-status") async ChangeStatus( @Query() personal_id: string, @Body() reqBody: { status: number }, @Request() request: RequestWithUser, ) { const personal = await this.personalRepository.findOne({ where: { personal_id }, }); const before = personal; if (!personal) { return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลบุคคล"); } personal.probation_status = await reqBody.status; personal.updateFullName = request.user.name; personal.updateUserId = request.user.sub; await this.personalRepository.save(personal, { data: request }); setLogDataDiff(request, { before, after: personal }); return new HttpSuccess(); } /** * API แสดงข้อมูลแบบบันทึกผลตาม id * * @summary ข้อมูลแบบบันทึกผลตาม id * */ @Get("form-record") async GetDataFormRecord(@Query() id: string) { const evaluate = await this.evaluateAssessorRepository.findOne({ where: { id }, }); if (!evaluate) { return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล"); } const directorData = await this.assignDirectorRepository.findOne({ select: ["personal_id", "fullname", "position", "posType", "posLevel", "role", "dated"], where: { personal_id: evaluate.director_id }, }); if (!directorData) { return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล"); } const director = await { ...directorData, name: directorData.fullname, position: directorData.position, }; const achievements = await this.evaluateAchievementRepository.find({ select: ["evaluate_expect_level", "evaluate_output_level"], where: { evaluate_id: evaluate.id }, }); if (!achievements) { return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล"); } let achievement: any = []; await Promise.all( achievements.map(async (element) => { const evaluate_expect_level = await { col1: element.evaluate_expect_level == 1 ? "/" : "", col2: element.evaluate_expect_level == 2 ? "/" : "", col3: element.evaluate_expect_level == 3 ? "/" : "", col4: element.evaluate_expect_level == 4 ? "/" : "", col5: element.evaluate_expect_level == 5 ? "/" : "", }; const evaluate_output_level = await { col1: element.evaluate_output_level == 1 ? "/" : "", col2: element.evaluate_output_level == 2 ? "/" : "", col3: element.evaluate_output_level == 3 ? "/" : "", col4: element.evaluate_output_level == 4 ? "/" : "", col5: element.evaluate_output_level == 5 ? "/" : "", }; achievement.push({ ...element, evaluate_expect_level, evaluate_output_level, }); }), ); const evaluateData = await { id: evaluate.id, no: evaluate.no, date_start: evaluate.date_start, date_finish: evaluate.date_finish, sign_dated: evaluate.assessor_dated, knowledge_level: { col1: evaluate.knowledge_level == 1 ? "/" : "", col2: evaluate.knowledge_level == 2 ? "/" : "", col3: evaluate.knowledge_level == 3 ? "/" : "", col4: evaluate.knowledge_level == 4 ? "/" : "", col5: evaluate.knowledge_level == 5 ? "/" : "", }, skill_level: { col1: evaluate.skill_level == 1 ? "/" : "", col2: evaluate.skill_level == 2 ? "/" : "", col3: evaluate.skill_level == 3 ? "/" : "", col4: evaluate.skill_level == 4 ? "/" : "", col5: evaluate.skill_level == 5 ? "/" : "", }, competency_level: { col1: evaluate.competency_level == 1 ? "/" : "", col2: evaluate.competency_level == 2 ? "/" : "", col3: evaluate.competency_level == 3 ? "/" : "", col4: evaluate.competency_level == 4 ? "/" : "", col5: evaluate.competency_level == 5 ? "/" : "", }, learn_level: { col1: evaluate.learn_level == 1 ? "/" : "", col2: evaluate.learn_level == 2 ? "/" : "", col3: evaluate.learn_level == 3 ? "/" : "", col4: evaluate.learn_level == 4 ? "/" : "", col5: evaluate.learn_level == 5 ? "/" : "", }, apply_level: { col1: evaluate.apply_level == 1 ? "/" : "", col2: evaluate.apply_level == 2 ? "/" : "", col3: evaluate.apply_level == 3 ? "/" : "", col4: evaluate.apply_level == 4 ? "/" : "", col5: evaluate.apply_level == 5 ? "/" : "", }, achievement_other_desc: evaluate.achievement_other_desc, achievement_other_level: evaluate.achievement_other_level != null ? { col1: evaluate.achievement_other_level == 1 ? "/" : "", col2: evaluate.achievement_other_level == 2 ? "/" : "", col3: evaluate.achievement_other_level == 3 ? "/" : "", col4: evaluate.achievement_other_level == 4 ? "/" : "", col5: evaluate.achievement_other_level == 5 ? "/" : "", } : { col1: "", col2: "", col3: "", col4: "", col5: "", }, achievement_strength_desc: evaluate.achievement_strength_desc, achievement_improve_desc: evaluate.achievement_improve_desc, conduct1_level: { col1: evaluate.conduct1_level == 1 ? "/" : "", col2: evaluate.conduct1_level == 2 ? "/" : "", col3: evaluate.conduct1_level == 3 ? "/" : "", col4: evaluate.conduct1_level == 4 ? "/" : "", col5: evaluate.conduct1_level == 5 ? "/" : "", }, conduct2_level: { col1: evaluate.conduct2_level == 1 ? "/" : "", col2: evaluate.conduct2_level == 2 ? "/" : "", col3: evaluate.conduct2_level == 3 ? "/" : "", col4: evaluate.conduct2_level == 4 ? "/" : "", col5: evaluate.conduct2_level == 5 ? "/" : "", }, conduct3_level: { col1: evaluate.conduct3_level == 1 ? "/" : "", col2: evaluate.conduct3_level == 2 ? "/" : "", col3: evaluate.conduct3_level == 3 ? "/" : "", col4: evaluate.conduct3_level == 4 ? "/" : "", col5: evaluate.conduct3_level == 5 ? "/" : "", }, conduct4_level: { col1: evaluate.conduct4_level == 1 ? "/" : "", col2: evaluate.conduct4_level == 2 ? "/" : "", col3: evaluate.conduct4_level == 3 ? "/" : "", col4: evaluate.conduct4_level == 4 ? "/" : "", col5: evaluate.conduct4_level == 5 ? "/" : "", }, moral1_level: { col1: evaluate.moral1_level == 1 ? "/" : "", col2: evaluate.moral1_level == 2 ? "/" : "", col3: evaluate.moral1_level == 3 ? "/" : "", col4: evaluate.moral1_level == 4 ? "/" : "", col5: evaluate.moral1_level == 5 ? "/" : "", }, moral2_level: { col1: evaluate.moral2_level == 1 ? "/" : "", col2: evaluate.moral2_level == 2 ? "/" : "", col3: evaluate.moral2_level == 3 ? "/" : "", col4: evaluate.moral2_level == 4 ? "/" : "", col5: evaluate.moral2_level == 5 ? "/" : "", }, moral3_level: { col1: evaluate.moral3_level == 1 ? "/" : "", col2: evaluate.moral3_level == 2 ? "/" : "", col3: evaluate.moral3_level == 3 ? "/" : "", col4: evaluate.moral3_level == 4 ? "/" : "", col5: evaluate.moral3_level == 5 ? "/" : "", }, discipline1_level: { col1: evaluate.discipline1_level == 1 ? "/" : "", col2: evaluate.discipline1_level == 2 ? "/" : "", col3: evaluate.discipline1_level == 3 ? "/" : "", col4: evaluate.discipline1_level == 4 ? "/" : "", col5: evaluate.discipline1_level == 5 ? "/" : "", }, discipline2_level: { col1: evaluate.discipline2_level == 1 ? "/" : "", col2: evaluate.discipline2_level == 2 ? "/" : "", col3: evaluate.discipline2_level == 3 ? "/" : "", col4: evaluate.discipline2_level == 4 ? "/" : "", col5: evaluate.discipline2_level == 5 ? "/" : "", }, discipline3_level: { col1: evaluate.discipline3_level == 1 ? "/" : "", col2: evaluate.discipline3_level == 2 ? "/" : "", col3: evaluate.discipline3_level == 3 ? "/" : "", col4: evaluate.discipline3_level == 4 ? "/" : "", col5: evaluate.discipline3_level == 5 ? "/" : "", }, discipline4_level: { col1: evaluate.discipline4_level == 1 ? "/" : "", col2: evaluate.discipline4_level == 2 ? "/" : "", col3: evaluate.discipline4_level == 3 ? "/" : "", col4: evaluate.discipline4_level == 4 ? "/" : "", col5: evaluate.discipline4_level == 5 ? "/" : "", }, discipline5_level: { col1: evaluate.discipline5_level == 1 ? "/" : "", col2: evaluate.discipline5_level == 2 ? "/" : "", col3: evaluate.discipline5_level == 3 ? "/" : "", col4: evaluate.discipline5_level == 4 ? "/" : "", col5: evaluate.discipline5_level == 5 ? "/" : "", }, behavior_other_desc: evaluate.behavior_other_desc, behavior_other_level: evaluate.behavior_other_level != null ? { col1: evaluate.behavior_other_level == 1 ? "/" : "", col2: evaluate.behavior_other_level == 2 ? "/" : "", col3: evaluate.behavior_other_level == 3 ? "/" : "", col4: evaluate.behavior_other_level == 4 ? "/" : "", col5: evaluate.behavior_other_level == 5 ? "/" : "", } : { col1: "", col2: "", col3: "", col4: "", col5: "", }, behavior_strength_desc: evaluate.behavior_strength_desc, behavior_improve_desc: evaluate.behavior_improve_desc, orientation: evaluate.orientation, self_learning: evaluate.self_learning, training_seminar: evaluate.training_seminar, other_training: evaluate.other_training, createdAt: evaluate.createdAt, updatedAt: evaluate.updatedAt, achievements: achievement, role: director.role, }; const assign = await AppDataSource.getRepository(Assign).findOne({ select: ["id", "personal_id", "round_no", "date_start", "date_finish"], where: { id: evaluate.assign_id }, }); if (!assign) { return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล"); } const experimenteeData = await this.personalRepository.findOne({ where: { personal_id: assign.personal_id, }, }); if (!experimenteeData) { return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล"); } const experimentee = await { ...experimenteeData, name: `${experimenteeData.prefixName}${experimenteeData.firstName} ${experimenteeData.lastName}`, PositionLevelName: experimenteeData.positionLevelName, PositionLineName: experimenteeData.positionLineName, Position: experimenteeData.positionName, Department: "-", OrganizationOrganization: experimenteeData.orgRootName, Oc: experimenteeData.organization, }; const data = await { experimentee: experimentee ? experimentee : null, director: director ? director : null, assign, evaluate: evaluateData, }; return new HttpSuccess(data); } /** * API แสดงข้อมูลแบบประเมินผล (ผู้บังคับบัญชา) ตาม id * * @summary ข้อมูลแบบประเมินผล (ผู้บังคับบัญชา) ตาม id * */ @Get("evaluate-commander") async GetDataEvaluateCommander(@Query() id: string) { const evaluate = await this.evaluateCommanderRepository.findOne({ where: { id }, }); if (!evaluate) { return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล"); } const evaluateData = await { id: evaluate.id, no: evaluate.no, date_start: evaluate.date_start, date_finish: evaluate.date_finish, sign_dated: evaluate.commander_dated, knowledge_level: { col1: evaluate.knowledge_level == 1 ? "/" : "", col2: evaluate.knowledge_level == 2 ? "/" : "", col3: evaluate.knowledge_level == 3 ? "/" : "", col4: evaluate.knowledge_level == 4 ? "/" : "", col5: evaluate.knowledge_level == 5 ? "/" : "", }, skill_level: { col1: evaluate.skill_level == 1 ? "/" : "", col2: evaluate.skill_level == 2 ? "/" : "", col3: evaluate.skill_level == 3 ? "/" : "", col4: evaluate.skill_level == 4 ? "/" : "", col5: evaluate.skill_level == 5 ? "/" : "", }, competency_level: { col1: evaluate.competency_level == 1 ? "/" : "", col2: evaluate.competency_level == 2 ? "/" : "", col3: evaluate.competency_level == 3 ? "/" : "", col4: evaluate.competency_level == 4 ? "/" : "", col5: evaluate.competency_level == 5 ? "/" : "", }, learn_level: { col1: evaluate.learn_level == 1 ? "/" : "", col2: evaluate.learn_level == 2 ? "/" : "", col3: evaluate.learn_level == 3 ? "/" : "", col4: evaluate.learn_level == 4 ? "/" : "", col5: evaluate.learn_level == 5 ? "/" : "", }, apply_level: { col1: evaluate.apply_level == 1 ? "/" : "", col2: evaluate.apply_level == 2 ? "/" : "", col3: evaluate.apply_level == 3 ? "/" : "", col4: evaluate.apply_level == 4 ? "/" : "", col5: evaluate.apply_level == 5 ? "/" : "", }, success_level: { col1: evaluate.success_level == 1 ? "/" : "", col2: evaluate.success_level == 2 ? "/" : "", col3: evaluate.success_level == 3 ? "/" : "", col4: evaluate.success_level == 4 ? "/" : "", col5: evaluate.success_level == 5 ? "/" : "", }, achievement_other_desc: evaluate.achievement_other_desc, achievement_other_level: evaluate.achievement_other_level != null ? { col1: evaluate.achievement_other_level == 1 ? "/" : "", col2: evaluate.achievement_other_level == 2 ? "/" : "", col3: evaluate.achievement_other_level == 3 ? "/" : "", col4: evaluate.achievement_other_level == 4 ? "/" : "", col5: evaluate.achievement_other_level == 5 ? "/" : "", } : { col1: "", col2: "", col3: "", col4: "", col5: "", }, conduct1_level: { col1: evaluate.conduct1_level == 1 ? "/" : "", col2: evaluate.conduct1_level == 2 ? "/" : "", col3: evaluate.conduct1_level == 3 ? "/" : "", col4: evaluate.conduct1_level == 4 ? "/" : "", col5: evaluate.conduct1_level == 5 ? "/" : "", }, conduct2_level: { col1: evaluate.conduct2_level == 1 ? "/" : "", col2: evaluate.conduct2_level == 2 ? "/" : "", col3: evaluate.conduct2_level == 3 ? "/" : "", col4: evaluate.conduct2_level == 4 ? "/" : "", col5: evaluate.conduct2_level == 5 ? "/" : "", }, conduct3_level: { col1: evaluate.conduct3_level == 1 ? "/" : "", col2: evaluate.conduct3_level == 2 ? "/" : "", col3: evaluate.conduct3_level == 3 ? "/" : "", col4: evaluate.conduct3_level == 4 ? "/" : "", col5: evaluate.conduct3_level == 5 ? "/" : "", }, conduct4_level: { col1: evaluate.conduct4_level == 1 ? "/" : "", col2: evaluate.conduct4_level == 2 ? "/" : "", col3: evaluate.conduct4_level == 3 ? "/" : "", col4: evaluate.conduct4_level == 4 ? "/" : "", col5: evaluate.conduct4_level == 5 ? "/" : "", }, moral1_level: { col1: evaluate.moral1_level == 1 ? "/" : "", col2: evaluate.moral1_level == 2 ? "/" : "", col3: evaluate.moral1_level == 3 ? "/" : "", col4: evaluate.moral1_level == 4 ? "/" : "", col5: evaluate.moral1_level == 5 ? "/" : "", }, moral2_level: { col1: evaluate.moral2_level == 1 ? "/" : "", col2: evaluate.moral2_level == 2 ? "/" : "", col3: evaluate.moral2_level == 3 ? "/" : "", col4: evaluate.moral2_level == 4 ? "/" : "", col5: evaluate.moral2_level == 5 ? "/" : "", }, moral3_level: { col1: evaluate.moral3_level == 1 ? "/" : "", col2: evaluate.moral3_level == 2 ? "/" : "", col3: evaluate.moral3_level == 3 ? "/" : "", col4: evaluate.moral3_level == 4 ? "/" : "", col5: evaluate.moral3_level == 5 ? "/" : "", }, discipline1_level: { col1: evaluate.discipline1_level == 1 ? "/" : "", col2: evaluate.discipline1_level == 2 ? "/" : "", col3: evaluate.discipline1_level == 3 ? "/" : "", col4: evaluate.discipline1_level == 4 ? "/" : "", col5: evaluate.discipline1_level == 5 ? "/" : "", }, discipline2_level: { col1: evaluate.discipline2_level == 1 ? "/" : "", col2: evaluate.discipline2_level == 2 ? "/" : "", col3: evaluate.discipline2_level == 3 ? "/" : "", col4: evaluate.discipline2_level == 4 ? "/" : "", col5: evaluate.discipline2_level == 5 ? "/" : "", }, discipline3_level: { col1: evaluate.discipline3_level == 1 ? "/" : "", col2: evaluate.discipline3_level == 2 ? "/" : "", col3: evaluate.discipline3_level == 3 ? "/" : "", col4: evaluate.discipline3_level == 4 ? "/" : "", col5: evaluate.discipline3_level == 5 ? "/" : "", }, discipline4_level: { col1: evaluate.discipline4_level == 1 ? "/" : "", col2: evaluate.discipline4_level == 2 ? "/" : "", col3: evaluate.discipline4_level == 3 ? "/" : "", col4: evaluate.discipline4_level == 4 ? "/" : "", col5: evaluate.discipline4_level == 5 ? "/" : "", }, discipline5_level: { col1: evaluate.discipline5_level == 1 ? "/" : "", col2: evaluate.discipline5_level == 2 ? "/" : "", col3: evaluate.discipline5_level == 3 ? "/" : "", col4: evaluate.discipline5_level == 4 ? "/" : "", col5: evaluate.discipline5_level == 5 ? "/" : "", }, behavior_other_desc: evaluate.behavior_other_desc, behavior_other_level: evaluate.behavior_other_level != null ? { col1: evaluate.behavior_other_level == 1 ? "/" : "", col2: evaluate.behavior_other_level == 2 ? "/" : "", col3: evaluate.behavior_other_level == 3 ? "/" : "", col4: evaluate.behavior_other_level == 4 ? "/" : "", col5: evaluate.behavior_other_level == 5 ? "/" : "", } : { col1: "", col2: "", col3: "", col4: "", col5: "", }, behavior_strength_desc: evaluate.behavior_strength_desc, behavior_improve_desc: evaluate.behavior_improve_desc, orientation: evaluate.orientation, self_learning: evaluate.self_learning, training_seminar: evaluate.training_seminar, other_training: evaluate.other_training, createdAt: evaluate.createdAt, updatedAt: evaluate.updatedAt, }; const assign = await AppDataSource.getRepository(Assign).findOne({ select: ["id", "personal_id", "round_no", "date_start", "date_finish"], where: { id: evaluate.assign_id }, }); if (!assign) { return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล"); } const experimenteeData = await this.personalRepository.findOne({ where: { personal_id: assign.personal_id, }, }); if (!experimenteeData) { return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล"); } const experimentee = await { ...experimenteeData, name: `${experimenteeData.prefixName}${experimenteeData.firstName} ${experimenteeData.lastName}`, PositionLevelName: experimenteeData.positionLevelName, PositionLineName: experimenteeData.positionLineName, Position: experimenteeData.positionName, Department: "-", OrganizationOrganization: experimenteeData.orgRootName, Oc: experimenteeData.organization, }; const commanderData = await this.assignDirectorRepository.findOne({ select: [ "personal_id", "fullname", "position", "position", "posType", "posLevel", "role", "dated", ], where: { personal_id: evaluate.director_id }, }); if (!commanderData) { return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล"); } const commander = await { ...commanderData, name: commanderData.fullname, Position: commanderData.position, }; return new HttpSuccess({ experimentee: experimentee ? experimentee : null, commander: commander ? commander : null, assign, evaluate: evaluateData, }); } /** * API แสดงข้อมูลแบบประเมินผล (คณะกรรมการ) ตาม id * * @summary ข้อมูลแบบประเมินผล (คณะกรรมการ) ตาม id * */ @Get("evaluate-chairman") async GetDataEvaluateChairman(@Query() id: string) { const evaluate = await this.evaluateChairmanRepository.findOne({ where: { id }, }); if (!evaluate) { return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล"); } const develop_total_score = await (Number(evaluate.develop_orientation_score) + Number(evaluate.develop_self_learning_score) + Number(evaluate.develop_training_seminar_score) + Number(evaluate.develop_other_training_score)); const develop_total_percent = await (Number(evaluate.develop_orientation_percent) + Number(evaluate.develop_orientation_percent) + Number(evaluate.develop_self_learning_percent) + Number(evaluate.develop_training_seminar_percent)); const evaluateData = await { id: evaluate.id, // director_id: evaluate.director_id, // assign_id: evaluate.assign_id, no: evaluate.no, date_start: evaluate.date_start, date_finish: evaluate.date_finish, chairman_dated: evaluate.chairman_dated, director1_dated: evaluate.director1_dated, director2_dated: evaluate.director2_dated, knowledge_level: { col1: evaluate.knowledge_level == 1 ? "/" : "", col2: evaluate.knowledge_level == 2 ? "/" : "", col3: evaluate.knowledge_level == 3 ? "/" : "", col4: evaluate.knowledge_level == 4 ? "/" : "", col5: evaluate.knowledge_level == 5 ? "/" : "", }, apply_level: { col1: evaluate.apply_level == 1 ? "/" : "", col2: evaluate.apply_level == 2 ? "/" : "", col3: evaluate.apply_level == 3 ? "/" : "", col4: evaluate.apply_level == 4 ? "/" : "", col5: evaluate.apply_level == 5 ? "/" : "", }, success_level: { col1: evaluate.success_level == 1 ? "/" : "", col2: evaluate.success_level == 2 ? "/" : "", col3: evaluate.success_level == 3 ? "/" : "", col4: evaluate.success_level == 4 ? "/" : "", col5: evaluate.success_level == 5 ? "/" : "", }, achievement_other_desc: evaluate.achievement_other_desc, achievement_other_level: evaluate.achievement_other_level != null ? { col1: evaluate.achievement_other_level == 1 ? "/" : "", col2: evaluate.achievement_other_level == 2 ? "/" : "", col3: evaluate.achievement_other_level == 3 ? "/" : "", col4: evaluate.achievement_other_level == 4 ? "/" : "", col5: evaluate.achievement_other_level == 5 ? "/" : "", } : { col1: "", col2: "", col3: "", col4: "", col5: "", }, conduct1_level: { col1: evaluate.conduct1_level == 1 ? "/" : "", col2: evaluate.conduct1_level == 2 ? "/" : "", col3: evaluate.conduct1_level == 3 ? "/" : "", col4: evaluate.conduct1_level == 4 ? "/" : "", col5: evaluate.conduct1_level == 5 ? "/" : "", }, conduct2_level: { col1: evaluate.conduct2_level == 1 ? "/" : "", col2: evaluate.conduct2_level == 2 ? "/" : "", col3: evaluate.conduct2_level == 3 ? "/" : "", col4: evaluate.conduct2_level == 4 ? "/" : "", col5: evaluate.conduct2_level == 5 ? "/" : "", }, conduct3_level: { col1: evaluate.conduct3_level == 1 ? "/" : "", col2: evaluate.conduct3_level == 2 ? "/" : "", col3: evaluate.conduct3_level == 3 ? "/" : "", col4: evaluate.conduct3_level == 4 ? "/" : "", col5: evaluate.conduct3_level == 5 ? "/" : "", }, conduct4_level: { col1: evaluate.conduct4_level == 1 ? "/" : "", col2: evaluate.conduct4_level == 2 ? "/" : "", col3: evaluate.conduct4_level == 3 ? "/" : "", col4: evaluate.conduct4_level == 4 ? "/" : "", col5: evaluate.conduct4_level == 5 ? "/" : "", }, moral1_level: { col1: evaluate.moral1_level == 1 ? "/" : "", col2: evaluate.moral1_level == 2 ? "/" : "", col3: evaluate.moral1_level == 3 ? "/" : "", col4: evaluate.moral1_level == 4 ? "/" : "", col5: evaluate.moral1_level == 5 ? "/" : "", }, moral2_level: { col1: evaluate.moral2_level == 1 ? "/" : "", col2: evaluate.moral2_level == 2 ? "/" : "", col3: evaluate.moral2_level == 3 ? "/" : "", col4: evaluate.moral2_level == 4 ? "/" : "", col5: evaluate.moral2_level == 5 ? "/" : "", }, moral3_level: { col1: evaluate.moral3_level == 1 ? "/" : "", col2: evaluate.moral3_level == 2 ? "/" : "", col3: evaluate.moral3_level == 3 ? "/" : "", col4: evaluate.moral3_level == 4 ? "/" : "", col5: evaluate.moral3_level == 5 ? "/" : "", }, discipline1_level: { col1: evaluate.discipline1_level == 1 ? "/" : "", col2: evaluate.discipline1_level == 2 ? "/" : "", col3: evaluate.discipline1_level == 3 ? "/" : "", col4: evaluate.discipline1_level == 4 ? "/" : "", col5: evaluate.discipline1_level == 5 ? "/" : "", }, discipline2_level: { col1: evaluate.discipline2_level == 1 ? "/" : "", col2: evaluate.discipline2_level == 2 ? "/" : "", col3: evaluate.discipline2_level == 3 ? "/" : "", col4: evaluate.discipline2_level == 4 ? "/" : "", col5: evaluate.discipline2_level == 5 ? "/" : "", }, discipline3_level: { col1: evaluate.discipline3_level == 1 ? "/" : "", col2: evaluate.discipline3_level == 2 ? "/" : "", col3: evaluate.discipline3_level == 3 ? "/" : "", col4: evaluate.discipline3_level == 4 ? "/" : "", col5: evaluate.discipline3_level == 5 ? "/" : "", }, discipline4_level: { col1: evaluate.discipline4_level == 1 ? "/" : "", col2: evaluate.discipline4_level == 2 ? "/" : "", col3: evaluate.discipline4_level == 3 ? "/" : "", col4: evaluate.discipline4_level == 4 ? "/" : "", col5: evaluate.discipline4_level == 5 ? "/" : "", }, discipline5_level: { col1: evaluate.discipline5_level == 1 ? "/" : "", col2: evaluate.discipline5_level == 2 ? "/" : "", col3: evaluate.discipline5_level == 3 ? "/" : "", col4: evaluate.discipline5_level == 4 ? "/" : "", col5: evaluate.discipline5_level == 5 ? "/" : "", }, behavior_other_desc: evaluate.behavior_other_desc, behavior_other_level: evaluate.behavior_other_level != null ? { col1: evaluate.behavior_other_level == 1 ? "/" : "", col2: evaluate.behavior_other_level == 2 ? "/" : "", col3: evaluate.behavior_other_level == 3 ? "/" : "", col4: evaluate.behavior_other_level == 4 ? "/" : "", col5: evaluate.behavior_other_level == 5 ? "/" : "", } : { col1: "", col2: "", col3: "", col4: "", col5: "", }, achievement_score: evaluate.achievement_score, achievement_score_total: evaluate.achievement_score_total, achievement_percent: evaluate.achievement_percent, achievement_result: evaluate.achievement_result, behavior_score: evaluate.behavior_score, behavior_score_total: evaluate.behavior_score_total, behavior_percent: evaluate.behavior_percent, behavior_result: evaluate.behavior_result, sum_score: evaluate.sum_score, sum_percent: evaluate.sum_percent, develop_orientation_score: evaluate.develop_orientation_score, develop_self_learning_score: evaluate.develop_self_learning_score, develop_training_seminar_score: evaluate.develop_training_seminar_score, develop_other_training_score: evaluate.develop_other_training_score, develop_total_score: develop_total_score, develop_orientation_percent: evaluate.develop_orientation_percent, develop_self_learning_percent: evaluate.develop_self_learning_percent, develop_training_seminar_percent: evaluate.develop_training_seminar_percent, develop_other_training_percent: evaluate.develop_other_training_percent, develop_total_percent: develop_total_percent, develop_result: evaluate.develop_result, evaluate_result: evaluate.evaluate_result, createdAt: evaluate.createdAt, updatedAt: evaluate.updatedAt, }; const assign = await AppDataSource.getRepository(Assign).findOne({ select: ["id", "personal_id", "round_no", "date_start", "date_finish"], where: { id: evaluate.assign_id }, }); if (!assign) { return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล"); } const experimenteeData = await this.personalRepository.findOne({ where: { personal_id: assign.personal_id, }, }); if (!experimenteeData) { return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล"); } const experimentee = await { ...experimenteeData, name: `${experimenteeData.prefixName}${experimenteeData.firstName} ${experimenteeData.lastName}`, PositionLevelName: experimenteeData.positionLevelName, PositionLineName: experimenteeData.positionLineName, Position: experimenteeData.positionName, Department: "-", OrganizationOrganization: experimenteeData.orgRootName, Oc: experimenteeData.organization, }; const directorData = await this.assignDirectorRepository.find({ select: ["personal_id", "fullname", "position", "posType", "posLevel", "role", "dated"], where: { assign_id: assign.id }, }); if (!directorData) { return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล"); } const director = await Promise.all( directorData.map(async (element) => { return { ...element, name: element.fullname, Position: element.position, }; }), ); const mentorData = await (director.find((x) => x.role == "mentor") ?? null); const mentor = mentorData != null ? mentorData : null; const commanderData = await (director.find((x) => x.role == "commander") ?? null); const commander = commanderData != null ? commanderData : null; const chairmanData = await (director.find((x) => x.role == "chairman") ?? null); const chairman = chairmanData != null ? chairmanData : null; return new HttpSuccess({ experimentee: experimentee ? experimentee : null, chairman: chairman ? chairman : null, director1: commander ? commander : null, director2: mentor ? mentor : null, assign, evaluate: evaluateData, }); } }