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;