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 { 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; 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; totalLeave?: number | null; status?: string | null; typeLeaveId?: string | null; reason?: string | null; };