371 lines
14 KiB
TypeScript
371 lines
14 KiB
TypeScript
|
|
import { AppDataSource } from "../database/data-source";
|
||
|
|
import {
|
||
|
|
Body,
|
||
|
|
Example,
|
||
|
|
Get,
|
||
|
|
Path,
|
||
|
|
Post,
|
||
|
|
Put,
|
||
|
|
Request,
|
||
|
|
Response,
|
||
|
|
Route,
|
||
|
|
Security,
|
||
|
|
SuccessResponse,
|
||
|
|
Tags,
|
||
|
|
Delete,
|
||
|
|
} from "tsoa";
|
||
|
|
import HttpStatusCode from "../interfaces/http-status";
|
||
|
|
import { Evaluation } from "../entities/Evaluation";
|
||
|
|
import HttpSuccess from "../interfaces/http-success";
|
||
|
|
import { EvaluationLogs } from "../entities/EvaluationLogs";
|
||
|
|
import HttpError from "../interfaces/http-error";
|
||
|
|
import { Education } from "../entities/Education";
|
||
|
|
import { Certificate } from "../entities/Certificate";
|
||
|
|
import { Salary } from "../entities/Salary";
|
||
|
|
import { Training } from "../entities/Training";
|
||
|
|
import { Assessment } from "../entities/Assessment";
|
||
|
|
import { Director } from "../entities/Director";
|
||
|
|
import { Meeting } from "../entities/Meeting";
|
||
|
|
import { Brackets } from "typeorm";
|
||
|
|
import CallAPI from "../interfaces/call-api";
|
||
|
|
import { RequestWithUser } from "../middlewares/user";
|
||
|
|
import Extension from "../interfaces/extension";
|
||
|
|
import { Not } from "typeorm"
|
||
|
|
@Route("api/v1/evaluation/report")
|
||
|
|
@Tags("report")
|
||
|
|
@Security("bearerAuth")
|
||
|
|
@Response(
|
||
|
|
HttpStatusCode.INTERNAL_SERVER_ERROR,
|
||
|
|
"เกิดข้อผิดพลาด ไม่สามารถทำรายการได้ กรุณาลองใหม่ในภายหลัง",
|
||
|
|
)
|
||
|
|
@SuccessResponse(HttpStatusCode.OK, "สำเร็จ")
|
||
|
|
export class ReoportController {
|
||
|
|
private evaluationRepository = AppDataSource.getRepository(Evaluation);
|
||
|
|
private evaluationLogsRepository = AppDataSource.getRepository(EvaluationLogs);
|
||
|
|
private educationRepository = AppDataSource.getRepository(Education);
|
||
|
|
private certificateRepository = AppDataSource.getRepository(Certificate);
|
||
|
|
private salaryRepository = AppDataSource.getRepository(Salary);
|
||
|
|
private trainingRepository = AppDataSource.getRepository(Training);
|
||
|
|
private assessmentRepository = AppDataSource.getRepository(Assessment);
|
||
|
|
private directorRepository = AppDataSource.getRepository(Director);
|
||
|
|
private meetingRepository = AppDataSource.getRepository(Meeting);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Report ระบบประเมินบุคคล
|
||
|
|
*
|
||
|
|
* @summary Report ระบบประเมินบุคคล (ADMIN & USER)
|
||
|
|
*
|
||
|
|
* @param {string} id id ข้อมูลการประเมิน
|
||
|
|
*/
|
||
|
|
@Get("check-spec-report/{id}")
|
||
|
|
async checkSpecGetReport(@Request() request: RequestWithUser, @Path() id: string) {
|
||
|
|
const evaluation = await AppDataSource.getRepository(Evaluation)
|
||
|
|
.createQueryBuilder("evaluation")
|
||
|
|
.leftJoin("evaluation.education", "education")
|
||
|
|
.leftJoin("evaluation.certificate", "certificate")
|
||
|
|
.leftJoin("evaluation.salaries", "salaries")
|
||
|
|
.leftJoin("evaluation.training", "training")
|
||
|
|
.leftJoin("evaluation.assessment", "assessment")
|
||
|
|
.where("evaluation.id = :id", { id })
|
||
|
|
.select([
|
||
|
|
"evaluation.id",
|
||
|
|
"evaluation.userId",
|
||
|
|
"evaluation.subject",
|
||
|
|
"evaluation.isEducationalQft",
|
||
|
|
"evaluation.isGovermantServiceHtr",
|
||
|
|
"evaluation.isOperatingExp",
|
||
|
|
"evaluation.isMinPeriodOfTenure",
|
||
|
|
"evaluation.isHaveSpecificQft",
|
||
|
|
"evaluation.isHaveProLicense",
|
||
|
|
"evaluation.isHaveMinPeriodOrHoldPos",
|
||
|
|
"evaluation.type",
|
||
|
|
"evaluation.prefix",
|
||
|
|
"evaluation.fullName",
|
||
|
|
"evaluation.position",
|
||
|
|
"evaluation.posNo",
|
||
|
|
"evaluation.oc",
|
||
|
|
"evaluation.salary",
|
||
|
|
"evaluation.positionLevel",
|
||
|
|
"evaluation.birthDate",
|
||
|
|
"evaluation.govAge",
|
||
|
|
"evaluation.experience",
|
||
|
|
|
||
|
|
"education.educationLevel",
|
||
|
|
"education.institute",
|
||
|
|
"education.isDate",
|
||
|
|
"education.startDate",
|
||
|
|
"education.endDate",
|
||
|
|
"education.finishDate",
|
||
|
|
"education.isEducation",
|
||
|
|
"education.degree",
|
||
|
|
"education.field",
|
||
|
|
"education.fundName",
|
||
|
|
"education.gpa",
|
||
|
|
"education.country",
|
||
|
|
"education.other",
|
||
|
|
"education.duration",
|
||
|
|
"education.durationYear",
|
||
|
|
|
||
|
|
"certificate.certificateType",
|
||
|
|
"certificate.issuer",
|
||
|
|
"certificate.certificateNo",
|
||
|
|
"certificate.issueDate",
|
||
|
|
"certificate.expireDate",
|
||
|
|
|
||
|
|
"salaries.date",
|
||
|
|
"salaries.amount",
|
||
|
|
"salaries.positionSalaryAmount",
|
||
|
|
"salaries.mouthSalaryAmount",
|
||
|
|
"salaries.position",
|
||
|
|
"salaries.posNo",
|
||
|
|
"salaries.salaryClass",
|
||
|
|
"salaries.salaryRef",
|
||
|
|
"salaries.refCommandNo",
|
||
|
|
"salaries.refCommandDate",
|
||
|
|
"salaries.salaryStatus",
|
||
|
|
|
||
|
|
"training.name",
|
||
|
|
"training.topic",
|
||
|
|
"training.startDate",
|
||
|
|
"training.endDate",
|
||
|
|
"training.yearly",
|
||
|
|
"training.place",
|
||
|
|
"training.duration",
|
||
|
|
"training.department",
|
||
|
|
"training.numberOrder",
|
||
|
|
"training.dateOrder",
|
||
|
|
|
||
|
|
"assessment.date",
|
||
|
|
"assessment.point1Total",
|
||
|
|
"assessment.point1",
|
||
|
|
"assessment.point2Total",
|
||
|
|
"assessment.point2",
|
||
|
|
"assessment.pointSumTotal",
|
||
|
|
"assessment.pointSum",
|
||
|
|
])
|
||
|
|
.getOne();
|
||
|
|
|
||
|
|
if (!evaluation) {
|
||
|
|
return "ไม่พบข้อมูล";
|
||
|
|
}
|
||
|
|
let root: any
|
||
|
|
let dateStart: any
|
||
|
|
let dateRetireLaw: any
|
||
|
|
let org: any
|
||
|
|
let commanderFullname: any
|
||
|
|
let commanderPosition: any
|
||
|
|
let commanderRootName: any
|
||
|
|
let commanderOrg: any
|
||
|
|
let commanderAboveFullname: any
|
||
|
|
let commanderAbovePosition: any
|
||
|
|
let commanderAboveRootName: any
|
||
|
|
let commanderAboveOrg: any
|
||
|
|
if (!evaluation.userId) {
|
||
|
|
return "ไม่พบข้อมูลผู้ขอประเมิน";
|
||
|
|
}
|
||
|
|
await new CallAPI()
|
||
|
|
.GetData(request, `/org/profile/keycloak/commander/${evaluation.userId}`)
|
||
|
|
.then(async (x) => {
|
||
|
|
root = x.root,
|
||
|
|
dateStart = x.dateStart,
|
||
|
|
dateRetireLaw = x.dateRetireLaw,
|
||
|
|
org = x.org,
|
||
|
|
commanderFullname = x.commanderFullname,
|
||
|
|
commanderPosition = x.commanderPosition,
|
||
|
|
commanderRootName = x.commanderRootName,
|
||
|
|
commanderOrg = x.commanderOrg,
|
||
|
|
commanderAboveFullname = x.commanderAboveFullname,
|
||
|
|
commanderAbovePosition = x.commanderAbovePosition,
|
||
|
|
commanderAboveRootName = x.commanderAboveRootName,
|
||
|
|
commanderAboveOrg = x.commanderAboveOrg
|
||
|
|
})
|
||
|
|
.catch();
|
||
|
|
const evaluationOld = await this.evaluationRepository.find({
|
||
|
|
where: {
|
||
|
|
id: Not(id),
|
||
|
|
userId: evaluation.userId,
|
||
|
|
step: "DONE"
|
||
|
|
}
|
||
|
|
});
|
||
|
|
let subjectOld = evaluationOld.length > 0
|
||
|
|
? evaluationOld.map(x => x.subject).join(", ")
|
||
|
|
: "ไม่มี"
|
||
|
|
let thaiYear:number = new Date().getFullYear()+543
|
||
|
|
let years = {
|
||
|
|
lastTwoYear: Extension.ToThaiNumber((thaiYear-2).toString()),
|
||
|
|
lastOneYear: Extension.ToThaiNumber((thaiYear-1).toString()),
|
||
|
|
currentYear: Extension.ToThaiNumber(thaiYear.toString()),
|
||
|
|
}
|
||
|
|
const dataEvaluation = {
|
||
|
|
isEducationalQft: evaluation.isEducationalQft,
|
||
|
|
isGovermantServiceHtr: evaluation.isGovermantServiceHtr,
|
||
|
|
isOperatingExp: evaluation.isOperatingExp,
|
||
|
|
isMinPeriodOfTenure: evaluation.isMinPeriodOfTenure,
|
||
|
|
isHaveSpecificQft: evaluation.isHaveSpecificQft,
|
||
|
|
isHaveProLicense: evaluation.isHaveProLicense,
|
||
|
|
isHaveMinPeriodOrHoldPos: evaluation.isHaveMinPeriodOrHoldPos,
|
||
|
|
type: evaluation.type,
|
||
|
|
prefix: evaluation.prefix,
|
||
|
|
fullName: evaluation.prefix && evaluation.fullName ? `${evaluation.prefix}${evaluation.fullName}` : "-",
|
||
|
|
position: evaluation.position ? evaluation.position : "-",
|
||
|
|
posNo: evaluation.posNo ? Extension.ToThaiNumber(evaluation.posNo) : "-",
|
||
|
|
oc: evaluation.oc ? evaluation.oc : "-",
|
||
|
|
org: org ? org : "-", //สังกัด
|
||
|
|
root: root ? root : "-", //หน่วยงาน
|
||
|
|
salary: evaluation.salary ? Extension.ToThaiNumber(evaluation.salary) : "-",
|
||
|
|
positionLevel: evaluation.positionLevel ? evaluation.positionLevel : "-",
|
||
|
|
birthDate: evaluation.birthDate != null && evaluation.birthDate != ""
|
||
|
|
? Extension.ToThaiNumber(Extension.ToThaiShortDate_noPrefix(new Date(evaluation.birthDate)))
|
||
|
|
: "-",
|
||
|
|
govAge: evaluation.govAge != null
|
||
|
|
? Extension.ToThaiNumber(evaluation.govAge)
|
||
|
|
: "-",
|
||
|
|
experience: evaluation.experience ? evaluation.experience : "-",
|
||
|
|
dateStart: dateStart
|
||
|
|
? Extension.ToThaiNumber(Extension.ToThaiShortDate(new Date(dateStart)))
|
||
|
|
: "-",
|
||
|
|
dateRetireLaw: dateRetireLaw
|
||
|
|
? Extension.ToThaiNumber(Extension.ToThaiShortDate(new Date(dateRetireLaw)))
|
||
|
|
: "-",
|
||
|
|
subject: evaluation.subject != null ? evaluation.subject : "-",
|
||
|
|
subjectOld: subjectOld,
|
||
|
|
educations: evaluation.education.length > 0
|
||
|
|
? evaluation.education.map((education) => ({
|
||
|
|
educationLevel: education.educationLevel
|
||
|
|
? Extension.ToThaiNumber(education.educationLevel)
|
||
|
|
: "-",
|
||
|
|
institute: education.institute
|
||
|
|
? Extension.ToThaiNumber(education.institute)
|
||
|
|
: "-",
|
||
|
|
finishYear: education.finishDate
|
||
|
|
? Extension.ToThaiNumber((Extension.ToThaiYear(education.finishDate.getFullYear())).toString())
|
||
|
|
: "-",
|
||
|
|
isDate: education.isDate,
|
||
|
|
startDate: education.startDate,
|
||
|
|
endDate: education.endDate,
|
||
|
|
finishDate: education.finishDate
|
||
|
|
? Extension.ToThaiNumber(Extension.ToThaiShortDate(education.finishDate).toString())
|
||
|
|
: "-",
|
||
|
|
isEducation: education.isEducation,
|
||
|
|
degree: education.degree
|
||
|
|
? Extension.ToThaiNumber(education.degree)
|
||
|
|
: "-",
|
||
|
|
field: education.field
|
||
|
|
? Extension.ToThaiNumber(education.field)
|
||
|
|
: "-",
|
||
|
|
fundName: education.fundName,
|
||
|
|
gpa: education.gpa,
|
||
|
|
country: education.country,
|
||
|
|
other: education.other,
|
||
|
|
duration: education.duration,
|
||
|
|
durationYear: education.durationYear,
|
||
|
|
}))
|
||
|
|
: [{
|
||
|
|
educationLevel: "-",
|
||
|
|
institute: "-",
|
||
|
|
finishYear: "-",
|
||
|
|
finishDate: "-",
|
||
|
|
degree: "-",
|
||
|
|
field: "-"
|
||
|
|
}],
|
||
|
|
certificates: evaluation.certificate.length > 0
|
||
|
|
? evaluation.certificate.map((certificate) => ({
|
||
|
|
certificateType: certificate.certificateType
|
||
|
|
? Extension.ToThaiNumber(certificate.certificateType)
|
||
|
|
: "-",
|
||
|
|
issuer: certificate.issuer
|
||
|
|
? Extension.ToThaiNumber(certificate.issuer)
|
||
|
|
: "-",
|
||
|
|
certificateNo: certificate.certificateNo
|
||
|
|
? Extension.ToThaiNumber(certificate.certificateNo)
|
||
|
|
: "-",
|
||
|
|
issueDate: certificate.issueDate,
|
||
|
|
expireDate: certificate.expireDate,
|
||
|
|
}))
|
||
|
|
: [{
|
||
|
|
certificateType: "-",
|
||
|
|
issuer: "-",
|
||
|
|
certificateNo: "-",
|
||
|
|
issueDate: "-",
|
||
|
|
expireDate: "-",
|
||
|
|
}],
|
||
|
|
salaries: evaluation.salaries.length > 0
|
||
|
|
? evaluation.salaries.map((salaries) => ({
|
||
|
|
date: salaries.date
|
||
|
|
? Extension.ToThaiNumber(Extension.ToThaiShortDate_noPrefix(salaries.date))
|
||
|
|
: "-",
|
||
|
|
amount: salaries.amount
|
||
|
|
? Extension.ToThaiNumber(salaries.amount.toLocaleString())
|
||
|
|
: "-",
|
||
|
|
position: salaries.position
|
||
|
|
? Extension.ToThaiNumber(salaries.position)
|
||
|
|
: "-",
|
||
|
|
positionSalaryAmount: salaries.positionSalaryAmount,
|
||
|
|
mouthSalaryAmount: salaries.mouthSalaryAmount,
|
||
|
|
posNo: salaries.posNo,
|
||
|
|
salaryClass: salaries.salaryClass,
|
||
|
|
salaryRef: salaries.salaryRef,
|
||
|
|
refCommandNo: salaries.refCommandNo,
|
||
|
|
refCommandDate: salaries.refCommandDate,
|
||
|
|
salaryStatus: salaries.salaryStatus,
|
||
|
|
}))
|
||
|
|
: [{
|
||
|
|
date: "-",
|
||
|
|
amount: "-",
|
||
|
|
position: "-",
|
||
|
|
}],
|
||
|
|
trainings: evaluation.training.length > 0
|
||
|
|
? evaluation.training.map((training) => ({
|
||
|
|
name: training.name
|
||
|
|
? Extension.ToThaiNumber(training.name)
|
||
|
|
: "-",
|
||
|
|
topic: training.topic
|
||
|
|
? Extension.ToThaiNumber(training.topic)
|
||
|
|
: "-",
|
||
|
|
startDate: training.startDate
|
||
|
|
? Extension.ToThaiNumber(Extension.ToThaiShortDate_noPrefix(training.startDate))
|
||
|
|
: "-",
|
||
|
|
endDate: training.endDate
|
||
|
|
? Extension.ToThaiNumber(Extension.ToThaiShortDate_noPrefix(training.endDate))
|
||
|
|
: "-",
|
||
|
|
yearly: training.yearly
|
||
|
|
? Extension.ToThaiNumber(training.yearly.toString())
|
||
|
|
: "-",
|
||
|
|
place: training.place,
|
||
|
|
duration: training.duration,
|
||
|
|
department: training.department,
|
||
|
|
numberOrder: training.numberOrder,
|
||
|
|
dateOrder: training.dateOrder,
|
||
|
|
}))
|
||
|
|
: [{
|
||
|
|
name: "-",
|
||
|
|
topic: "-",
|
||
|
|
yearly: "-",
|
||
|
|
}],
|
||
|
|
assessments: evaluation.assessment.map((assessment) => ({
|
||
|
|
date: assessment.date,
|
||
|
|
point1Total: assessment.point1Total,
|
||
|
|
point1: assessment.point1,
|
||
|
|
point2Total: assessment.point2Total,
|
||
|
|
point2: assessment.point2,
|
||
|
|
pointSumTotal: assessment.pointSumTotal,
|
||
|
|
pointSum: assessment.pointSum,
|
||
|
|
})),
|
||
|
|
commanderFullname: commanderFullname ? commanderFullname : "-",
|
||
|
|
commanderPosition: commanderPosition ? commanderPosition : "-",
|
||
|
|
commanderRootName: commanderRootName ? commanderRootName : "-",
|
||
|
|
commanderOrg: commanderOrg ? commanderOrg : "-",
|
||
|
|
commanderAboveFullname: commanderAboveFullname ? commanderAboveFullname : "-",
|
||
|
|
commanderAbovePosition: commanderAbovePosition ? commanderAbovePosition : "-",
|
||
|
|
commanderAboveRootName: commanderAboveRootName ? commanderAboveRootName : "-",
|
||
|
|
commanderAboveOrg: commanderAboveOrg ? commanderAboveOrg : "-",
|
||
|
|
years: years
|
||
|
|
};
|
||
|
|
|
||
|
|
if (!dataEvaluation) {
|
||
|
|
return "ไม่พบข้อมูล";
|
||
|
|
}
|
||
|
|
return new HttpSuccess(dataEvaluation);
|
||
|
|
}
|
||
|
|
}
|