hrms-api-probation/src/controllers/ReportController.ts
2024-09-05 16:56:22 +07:00

1075 lines
41 KiB
TypeScript

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