From ce740ff3270f38e7b4239a473605f116cd411875 Mon Sep 17 00:00:00 2001 From: AdisakKanthawilang Date: Tue, 12 Mar 2024 17:33:22 +0700 Subject: [PATCH] checkpoint --- src/entities/Profile.ts | 4 + src/entities/ProfileLeave.ts | 379 ++++++++++++++++++++++++++++ src/entities/ProfileLeaveHistory.ts | 376 +++++++++++++++++++++++++++ 3 files changed, 759 insertions(+) create mode 100644 src/entities/ProfileLeave.ts create mode 100644 src/entities/ProfileLeaveHistory.ts diff --git a/src/entities/Profile.ts b/src/entities/Profile.ts index 3f80a0c8..e785d845 100644 --- a/src/entities/Profile.ts +++ b/src/entities/Profile.ts @@ -11,6 +11,7 @@ import { ProfileTraining } from "./ProfileTraining"; import { ProfileInsignia } from "./ProfileInsignia"; import { ProfileHonor } from "./ProfileHonor"; import { ProfileAssessment } from "./ProfileAssessment"; +import { ProfileLeave } from "./ProfileLeave"; @Entity("profile") export class Profile extends EntityBase { @@ -161,6 +162,9 @@ export class Profile extends EntityBase { @OneToMany(() => ProfileAssessment, (profileAssessment) => profileAssessment.profile) profileAssessments: ProfileAssessment[]; + @OneToMany(() => ProfileLeave, (profileLeave) => profileLeave.profile) + profileLeaves: ProfileLeave[]; + @ManyToOne(() => PosLevel, (posLevel) => posLevel.posLevels) @JoinColumn({ name: "posLevelId" }) posLevel: PosLevel; diff --git a/src/entities/ProfileLeave.ts b/src/entities/ProfileLeave.ts new file mode 100644 index 00000000..04b56450 --- /dev/null +++ b/src/entities/ProfileLeave.ts @@ -0,0 +1,379 @@ +import { Entity, Column, ManyToOne, JoinColumn, OneToMany } from "typeorm"; +import { EntityBase } from "./base/Base"; +import { Profile } from "./Profile"; +import { ProfileLeaveHistory } from "./ProfileLeaveHistory"; + +@Entity("profileLeave") +export class ProfileLeave extends EntityBase { + @Column({ + nullable: true, + length: 40, + comment: "คีย์นอก(FK)ของตาราง Profile", + default: null, + }) + profileId: string; + + @Column({ + comment: "สถานะการใช้งาน", + default: false, + }) + isActive: boolean; + + @Column({ + nullable: true, + type: "double", + comment: "", + default: null, + }) + restCount: number; + + @Column({ + nullable: true, + type: "double", + comment: "", + default: null, + }) + restDay: number; + + @Column({ + nullable: true, + type: "double", + comment: "ลาพักผ่อน (วัน)", + default: null, + }) + sickCount: number; + + @Column({ + nullable: true, + type: "double", + comment: "ลาป่วย (วัน)", + default: null, + }) + sickDay: number; + + @Column({ + nullable: true, + type: "double", + comment: "", + default: null, + }) + otherDay: number; + + @Column({ + nullable: true, + type: "double", + comment: "", + default: null, + }) + personalCount: number; + + @Column({ + nullable: true, + type: "double", + comment: "ลากิจส่วนตัว (วัน)", + default: null, + }) + personalDay: number; + + @Column({ + nullable: true, + type: "double", + comment: "", + default: null, + }) + studyCount: number; + + @Column({ + nullable: true, + type: "double", + comment: "", + default: null, + }) + absentCount: number; + + @Column({ + nullable: true, + type: "double", + comment: "ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล (วัน)", + default: null, + }) + absentDay: number; + + @Column({ + nullable: true, + type: "double", + comment: "", + default: null, + }) + agencyCount: number; + + @Column({ + nullable: true, + type: "double", + comment: "ลาไปปฏิบัติงานในองค์การระหว่างประเทศ (วัน)", + default: null, + }) + agencyDay: number; + + @Column({ + nullable: true, + type: "double", + comment: "", + default: null, + }) + coupleCount: number; + + @Column({ + nullable: true, + type: "double", + comment: "ลาติดตามคู่สมรส (วัน)", + default: null, + }) + coupleDay: number; + + @Column({ + nullable: true, + type: "double", + comment: "", + default: null, + }) + lateCount: number; + + @Column({ + nullable: true, + type: "double", + comment: "", + default: null, + }) + lateDay: number; + + @Column({ + nullable: true, + type: "double", + comment: "", + default: null, + }) + maternityCount: number; + + @Column({ + nullable: true, + type: "double", + comment: "ลาคลอดบุตร (วัน)", + default: null, + }) + maternityDay: number; + + @Column({ + nullable: true, + type: "double", + comment: "", + default: null, + }) + militaryCount: number; + + @Column({ + nullable: true, + type: "double", + comment: "", + default: null, + }) + militaryDay: number; + + @Column({ + nullable: true, + type: "double", + comment: "", + default: null, + }) + ordainCount: number; + + @Column({ + nullable: true, + type: "double", + comment: "ลาอุปสมบทหรือการลาประกอบพิธีฮัจย์ฯ (วัน)", + default: null, + }) + ordainDay: number; + + @Column({ + nullable: true, + type: "double", + comment: "", + default: null, + }) + otherCount: number; + + @Column({ + nullable: true, + type: "datetime", + comment: "วัน เดือน ปี ที่เริ่มลา", + default: null, + }) + dateStartLeave: Date; + + @Column({ + nullable: true, + type: "datetime", + comment: "วัน เดือน ปี ที่สิ้นสุดลา", + default: null, + }) + dateEndLeave: Date; + + @Column({ + nullable: true, + type: "double", + comment: "ลาครั้งที่", + default: null, + }) + numLeave: number; + + @Column({ + nullable: true, + type: "double", + comment: "ลามาแล้ว", + default: null, + }) + sumLeave: number; + + @Column({ + nullable: true, + type: "double", + comment: "รวมเป็น", + default: null, + }) + totalLeave: number; + + @Column({ + nullable: true, + comment: "สถานะ", + type: "text", + default: null, + }) + status: string; + + @Column({ + nullable: true, + length: 40, + comment: "คีย์นอก(FK)ของตาราง TypeLeave", + default: null, + }) + typeLeaveId: string; + + @Column({ + nullable: true, + comment: "เหตุผล", + type: "text", + default: null, + }) + reason: string; + + @OneToMany(() => ProfileLeaveHistory, (profileLeaveHistory) => profileLeaveHistory.histories) + profileLeaves: ProfileLeaveHistory[]; + + @ManyToOne(() => Profile, (profile) => profile.profileLeaves) + @JoinColumn({ name: "profileId" }) + profile: Profile; +} + +export class CreateProfileLeave { + @Column("uuid") + profileId: string | null; + + @Column() + isActive: boolean; + + @Column() + restCount: number | null; + + @Column() + restDay: number | null; + + @Column() + sickCount: number | null; + + @Column() + sickDay: number | null; + + @Column() + otherDay: number | null; + + @Column() + personalCount: number | null; + + @Column() + personalDay: number | null; + + @Column() + studyCount: number | null; + + @Column() + absentCount: number | null; + + @Column() + absentDay: number | null; + + @Column() + agencyCount: number | null; + + @Column() + agencyDay: number | null; + + @Column() + coupleCount: number | null; + + @Column() + coupleDay: number | null; + + @Column() + lateCount: number | null; + + @Column() + lateDay: number | null; + + @Column() + maternityCount: number | null; + + @Column() + maternityDay: number | null; + + @Column() + militaryCount: number | null; + + @Column() + militaryDay: number | null; + + @Column() + ordainCount: number | null; + + @Column() + ordainDay: number | null; + + @Column() + otherCount: number | null; + + @Column() + dateStartLeave: Date | null; + + @Column() + dateEndLeave: Date | null; + + @Column() + numLeave: number | null; + + @Column() + sumLeave: number | null; + + @Column() + totalLeave: number | null; + + @Column() + status: string | null; + + @Column("uuid") + typeLeaveId: string | null; + + @Column() + reason: string | null; +} + +export type UpdateProfileLeave = Partial; diff --git a/src/entities/ProfileLeaveHistory.ts b/src/entities/ProfileLeaveHistory.ts new file mode 100644 index 00000000..d177f09e --- /dev/null +++ b/src/entities/ProfileLeaveHistory.ts @@ -0,0 +1,376 @@ +import { Entity, Column, ManyToOne, JoinColumn } from "typeorm"; +import { EntityBase } from "./base/Base"; +import { Profile } from "./Profile"; +import { ProfileLeave } from "./ProfileLeave"; + +@Entity("profileLeaveHistory") +export class ProfileLeaveHistory extends EntityBase { + @Column({ + comment: "สถานะการใช้งาน", + default: false, + }) + isActive: boolean; + + // @Column({ + // nullable: true, + // type: "double", + // comment: "", + // default: null, + // }) + // restCount: number; + + // @Column({ + // nullable: true, + // type: "double", + // comment: "", + // default: null, + // }) + // restDay: number; + + // @Column({ + // nullable: true, + // type: "double", + // comment: "ลาพักผ่อน (วัน)", + // default: null, + // }) + // sickCount: number; + + // @Column({ + // nullable: true, + // type: "double", + // comment: "ลาป่วย (วัน)", + // default: null, + // }) + // sickDay: number; + + // @Column({ + // nullable: true, + // type: "double", + // comment: "", + // default: null, + // }) + // otherDay: number; + + // @Column({ + // nullable: true, + // type: "double", + // comment: "", + // default: null, + // }) + // personalCount: number; + + // @Column({ + // nullable: true, + // type: "double", + // comment: "ลากิจส่วนตัว (วัน)", + // default: null, + // }) + // personalDay: number; + + // @Column({ + // nullable: true, + // type: "double", + // comment: "", + // default: null, + // }) + // studyCount: number; + + // @Column({ + // nullable: true, + // type: "double", + // comment: "", + // default: null, + // }) + // absentCount: number; + + // @Column({ + // nullable: true, + // type: "double", + // comment: "ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล (วัน)", + // default: null, + // }) + // absentDay: number; + + // @Column({ + // nullable: true, + // type: "double", + // comment: "", + // default: null, + // }) + // agencyCount: number; + + // @Column({ + // nullable: true, + // type: "double", + // comment: "ลาไปปฏิบัติงานในองค์การระหว่างประเทศ (วัน)", + // default: null, + // }) + // agencyDay: number; + + // @Column({ + // nullable: true, + // type: "double", + // comment: "", + // default: null, + // }) + // coupleCount: number; + + // @Column({ + // nullable: true, + // type: "double", + // comment: "ลาติดตามคู่สมรส (วัน)", + // default: null, + // }) + // coupleDay: number; + + // @Column({ + // nullable: true, + // type: "double", + // comment: "", + // default: null, + // }) + // lateCount: number; + + // @Column({ + // nullable: true, + // type: "double", + // comment: "", + // default: null, + // }) + // lateDay: number; + + // @Column({ + // nullable: true, + // type: "double", + // comment: "", + // default: null, + // }) + // maternityCount: number; + + // @Column({ + // nullable: true, + // type: "double", + // comment: "ลาคลอดบุตร (วัน)", + // default: null, + // }) + // maternityDay: number; + + // @Column({ + // nullable: true, + // type: "double", + // comment: "", + // default: null, + // }) + // militaryCount: number; + + // @Column({ + // nullable: true, + // type: "double", + // comment: "", + // default: null, + // }) + // militaryDay: number; + + // @Column({ + // nullable: true, + // type: "double", + // comment: "", + // default: null, + // }) + // ordainCount: number; + + // @Column({ + // nullable: true, + // type: "double", + // comment: "ลาอุปสมบทหรือการลาประกอบพิธีฮัจย์ฯ (วัน)", + // default: null, + // }) + // ordainDay: number; + + // @Column({ + // nullable: true, + // type: "double", + // comment: "", + // default: null, + // }) + // otherCount: number; + + @Column({ + nullable: true, + type: "datetime", + comment: "วัน เดือน ปี ที่เริ่มลา", + default: null, + }) + dateStartLeave: Date; + + @Column({ + nullable: true, + type: "datetime", + comment: "วัน เดือน ปี ที่สิ้นสุดลา", + default: null, + }) + dateEndLeave: Date; + + @Column({ + nullable: true, + type: "double", + comment: "ลาครั้งที่", + default: null, + }) + numLeave: number; + + @Column({ + nullable: true, + type: "double", + comment: "ลามาแล้ว", + default: null, + }) + sumLeave: number; + + @Column({ + nullable: true, + type: "double", + comment: "รวมเป็น", + default: null, + }) + totalLeave: number; + + @Column({ + nullable: true, + comment: "สถานะ", + type: "text", + default: null, + }) + status: string; + + @Column({ + nullable: true, + length: 40, + comment: "คีย์นอก(FK)ของตาราง TypeLeave", + default: null, + }) + typeLeaveId: string; + + @Column({ + nullable: true, + comment: "เหตุผล", + type: "text", + default: null, + }) + reason: string; + + @Column({ + nullable: true, + length: 40, + comment: "คีย์นอก(FK)ของตาราง ProfileLeave", + default: null, + }) + profileLeaveId: string; + + @ManyToOne(() => ProfileLeave, (profileLeave) => profileLeave.profileLeaves) + @JoinColumn({ name: "profileLeaveId" }) + histories: ProfileLeave; +} + +export class CreateProfileLeaveHistory { + @Column() + isActive: boolean; + + // @Column() + // restCount: number | null; + + // @Column() + // restDay: number | null; + + // @Column() + // sickCount: number | null; + + // @Column() + // sickDay: number | null; + + // @Column() + // otherDay: number | null; + + // @Column() + // personalCount: number | null; + + // @Column() + // personalDay: number | null; + + // @Column() + // studyCount: number | null; + + // @Column() + // absentCount: number | null; + + // @Column() + // absentDay: number | null; + + // @Column() + // agencyCount: number | null; + + // @Column() + // agencyDay: number | null; + + // @Column() + // coupleCount: number | null; + + // @Column() + // coupleDay: number | null; + + // @Column() + // lateCount: number | null; + + // @Column() + // lateDay: number | null; + + // @Column() + // maternityCount: number | null; + + // @Column() + // maternityDay: number | null; + + // @Column() + // militaryCount: number | null; + + // @Column() + // militaryDay: number | null; + + // @Column() + // ordainCount: number | null; + + // @Column() + // ordainDay: number | null; + + // @Column() + // otherCount: number | null; + + @Column() + dateStartLeave: Date | null; + + @Column() + dateEndLeave: Date | null; + + @Column() + numLeave: number | null; + + @Column() + sumLeave: number | null; + + @Column() + totalLeave: number | null; + + @Column() + status: string | null; + + @Column("uuid") + typeLeaveId: string | null; + + @Column() + reason: string | null; + + @Column("uuid") + profileLeaveId: string | null; +} + +export type UpdateProfileLeaveHistory = Partial;