diff --git a/src/entities/LeaveType.ts b/src/entities/LeaveType.ts new file mode 100644 index 00000000..cb839791 --- /dev/null +++ b/src/entities/LeaveType.ts @@ -0,0 +1,41 @@ +import { Entity, Column, OneToMany } from "typeorm"; +import { EntityBase } from "./base/Base"; + +import { ProfileLeave } from "./ProfileLeave"; + +@Entity("leaveType") +export class LeaveType extends EntityBase { + @Column({ + nullable: true, + comment: "ประเภทการลา", + length: 255, + default: null, + }) + name: string; + + @Column({ + nullable: true, + comment: "รหัสประเภอการลา", + length: 255, + default: null, + }) + code: number; + + @Column({ + nullable: true, + comment: "ลาได้สูงสุด(วัน)", + default: true, + }) + limit: number; + + @OneToMany(() => ProfileLeave, (v) => v.leaveType) + profileLeave: ProfileLeave; +} + +export class CreateBloodGroup { + name: string | null; + code: number | null; + limit: number | null; +} + +export type UpdateBloodGroup = Partial; diff --git a/src/entities/ProfileLeave.ts b/src/entities/ProfileLeave.ts index 2c448f35..918a3286 100644 --- a/src/entities/ProfileLeave.ts +++ b/src/entities/ProfileLeave.ts @@ -2,6 +2,7 @@ import { Entity, Column, ManyToOne, JoinColumn, OneToMany } from "typeorm"; import { EntityBase } from "./base/Base"; import { Profile } from "./Profile"; import { ProfileLeaveHistory } from "./ProfileLeaveHistory"; +import { LeaveType } from "./LeaveType"; @Entity("profileLeave") export class ProfileLeave extends EntityBase { @@ -13,227 +14,37 @@ export class ProfileLeave extends EntityBase { }) profileId: string; - @Column({ - comment: "สถานะการใช้งาน", - default: false, - }) - isActive: boolean; - @Column({ nullable: true, - type: "double", - comment: "", + length: 40, + comment: "คีย์นอก(FK)ของตาราง LeaveType", 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; + leaveTypeId: string; @Column({ nullable: true, type: "datetime", - comment: "วัน เดือน ปี ที่เริ่มลา", + comment: "วัน เดือน ปี ที่ลา", default: null, }) - dateStartLeave: Date; - - @Column({ - nullable: true, - type: "datetime", - comment: "วัน เดือน ปี ที่สิ้นสุดลา", - default: null, - }) - dateEndLeave: Date; + dateLeave: Date; @Column({ nullable: true, type: "double", - comment: "ลาครั้งที่", + comment: "จำนวนวันลา", default: null, }) - numLeave: number; + leaveDays: number; @Column({ nullable: true, type: "double", - comment: "ลามาแล้ว", + comment: "ลามาเเล้ว", default: null, }) - sumLeave: number; + leverCount: number; @Column({ nullable: true, @@ -251,14 +62,6 @@ export class ProfileLeave extends EntityBase { }) status: string; - @Column({ - nullable: true, - length: 40, - comment: "คีย์นอก(FK)ของตาราง TypeLeave", - default: null, - }) - typeLeaveId: string; - @Column({ nullable: true, comment: "เหตุผล", @@ -270,6 +73,10 @@ export class ProfileLeave extends EntityBase { @OneToMany(() => ProfileLeaveHistory, (profileLeaveHistory) => profileLeaveHistory.histories) profileLeaves: ProfileLeaveHistory[]; + @ManyToOne(() => LeaveType, (leaveType) => leaveType.profileLeave) + @JoinColumn({ name: "leaveTypeId" }) + leaveType: LeaveType; + @ManyToOne(() => Profile, (profile) => profile.profileLeaves) @JoinColumn({ name: "profileId" }) profile: Profile; @@ -277,71 +84,20 @@ export class ProfileLeave extends EntityBase { export class CreateProfileLeave { profileId: string | null; - isActive: boolean; - restCount: number | null; - restDay: number | null; - sickCount: number | null; - sickDay: number | null; - otherDay: number | null; - personalCount: number | null; - personalDay: number | null; - studyCount: number | null; - absentCount: number | null; - absentDay: number | null; - agencyCount: number | null; - agencyDay: number | null; - coupleCount: number | null; - coupleDay: number | null; - lateCount: number | null; - lateDay: number | null; - maternityCount: number | null; - maternityDay: number | null; - militaryCount: number | null; - militaryDay: number | null; - ordainCount: number | null; - ordainDay: number | null; - otherCount: number | null; - dateStartLeave: Date | null; - dateEndLeave: Date | null; - numLeave: number | null; - sumLeave: number | null; + leaveTypeId: string | null; + dateLeave: Date | null; + leaveDays: number | null; + leverCount: number | null; totalLeave: number | null; status: string | null; - typeLeaveId: string | null; reason: string | null; } export type UpdateProfileLeave = { - isActive?: boolean; - restCount?: number | null; - restDay?: number | null; - sickCount?: number | null; - sickDay?: number | null; - otherDay?: number | null; - personalCount?: number | null; - personalDay?: number | null; - studyCount?: number | null; - absentCount?: number | null; - absentDay?: number | null; - agencyCount?: number | null; - agencyDay?: number | null; - coupleCount?: number | null; - coupleDay?: number | null; - lateCount?: number | null; - lateDay?: number | null; - maternityCount?: number | null; - maternityDay?: number | null; - militaryCount?: number | null; - militaryDay?: number | null; - ordainCount?: number | null; - ordainDay?: number | null; - otherCount?: number | null; - dateStartLeave?: Date | null; - dateEndLeave?: Date | null; - numLeave?: number | null; - sumLeave?: number | null; + dateLeave?: Date | null; + leaveDays?: number | null; + leverCount?: number | null; totalLeave?: number | null; status?: string | null; - typeLeaveId?: string | null; reason?: string | null; };