import { Entity, Column, OneToMany, ManyToOne, JoinColumn } from "typeorm"; import { EntityBase } from "./base/Base"; import { KpiPeriod } from "./kpiPeriod"; import { KpiUserSpecial } from "./kpiUserSpecial"; import { KpiUserRole } from "./kpiUserRole"; import { KpiUserPlanned } from "./kpiUserPlanned"; import { KpiUserCapacity } from "./kpiUserCapacity"; import { KpiUserEvaluationReason } from "./kpiUserEvaluationReason"; import { KpiUserDevelopment } from "./kpiUserDevelopment"; @Entity("kpiUserEvaluation") export class KpiUserEvaluation extends EntityBase { @Column({ nullable: true, comment: "คำนำหน้า", length: 255, default: null, }) prefix: string; @Column({ nullable: true, comment: "ชื่อ", length: 255, default: null, }) firstName: string; @Column({ nullable: true, comment: "สกุล", length: 255, default: null, }) lastName: string; @Column({ nullable: true, length: 40, comment: "ไอดีโปรไฟล์", default: null, }) profileId: string; @Column({ nullable: true, length: 40, comment: "ไอดีผู้ประเมิน", default: null, }) evaluatorId: string; @Column({ nullable: true, length: 40, comment: "ไอดีผู้บังคับบัญชาเหนือขึ้นไป", default: null, }) commanderId: string; @Column({ nullable: true, length: 40, comment: "ไอดีผู้บังคับบัญชาเหนือขึ้นไปอีกชั้นหนึ่ง", default: null, }) commanderHighId: string; @Column({ // "สถานะการประเมินผล ดังนี้ PENDING = รอดำเนินการ, INPROGRESS = กําลังดำเนินการ, DONE = ประเมินเสร็จสิ้น", nullable: true, length: 40, comment: "สถานะการประเมินผล ดังนี้ NEW = รอดำเนินการ, INPROGRESS = กําลังดำเนินการ, DONE = ประเมินเสร็จสิ้น", default: "NEW", }) evaluationStatus: string; @Column({ // "ผลการประเมิน ดังนี้ PENDING = รอดำเนินการ, PASSED = ผ่านการประเมิน, NOTPASSED = ไม่ผ่านการประเมิน", nullable: true, length: 40, comment: "ผลการประเมิน ดังนี้ PENDING = รอดำเนินการ, PASSED = ผ่านการประเมิน, NOTPASSED = ไม่ผ่านการประเมิน", default: null, }) evaluationResults: string; @Column({ comment: "คำขอแก้ไข", default: false, }) isReqEdit: boolean; @Column({ type: "double", nullable: true, default: null, comment: "งานตามแผนปฏิบัติราชการประจำปี ร้อยละ", }) plannedPoint: number; @Column({ type: "double", nullable: true, default: null, comment: "งานตามหน้าที่ความรับผิดชอบหลัก ร้อยละ", }) rolePoint: number; @Column({ type: "double", nullable: true, default: null, comment: "งานที่ได้รับมอบหมายพิเศษ ร้อยละ", }) specialPoint: number; @Column({ type: "double", nullable: true, default: null, comment: "สมรรถนะ ร้อยละ", }) capacityPoint: number; @Column({ nullable: true, length: 40, comment: "คีย์นอก(FK)ของตาราง kpiPeriodId", default: null, }) kpiPeriodId: string; @ManyToOne(() => KpiPeriod, (kpiPeriod) => kpiPeriod.kpiUserEvaluations) @JoinColumn({ name: "kpiPeriodId" }) kpiPeriod: KpiPeriod; @OneToMany(() => KpiUserCapacity, (kpiUserCapacity) => kpiUserCapacity.kpiUserEvaluation) kpiUserCapacitys: KpiUserCapacity[]; @OneToMany(() => KpiUserPlanned, (kpiUserPlanned) => kpiUserPlanned.kpiUserEvaluation) kpiUserPlanneds: KpiUserPlanned[]; @OneToMany(() => KpiUserRole, (kpiUserRole) => kpiUserRole.kpiUserEvaluation) kpiUserRoles: KpiUserRole[]; @OneToMany(() => KpiUserSpecial, (kpiUserSpecial) => kpiUserSpecial.kpiUserEvaluation) kpiUserSpecials: KpiUserSpecial[]; @OneToMany(() => KpiUserDevelopment, (kpiUserDevelopment) => kpiUserDevelopment.kpiUserEvaluation) kpiUserDevelopments: KpiUserDevelopment[]; @OneToMany( () => KpiUserEvaluationReason, (kpiUserEvaluationReason) => kpiUserEvaluationReason.kpiUserEvaluation, ) kpiUserEvaluationReasons: KpiUserEvaluationReason[]; } export class createKpiUserEvaluation { @Column() prefix: string; @Column() firstName: string; @Column() lastName: string; @Column() kpiPeriodId: string; @Column() profileId: string; @Column() evaluatorId: string | null; @Column() commanderId: string | null; @Column() commanderHighId: string | null; } export class updateKpiUserEvaluation { @Column() prefix: string; @Column() firstName: string; @Column() lastName: string; @Column() kpiPeriodId: string; @Column() profileId: string; } export class updateKpiUserCheckEvaluation { @Column() evaluatorId: string | null; @Column() commanderId: string | null; @Column() commanderHighId: string | null; } export class updateKpiUserPointEvaluation { @Column() plannedPoint: number | null; @Column() rolePoint: number | null; @Column() specialPoint: number | null; @Column() capacityPoint: number | null; }