hrms-api-org/src/entities/ProfileLeave.ts

347 lines
7.1 KiB
TypeScript

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;
};