import { Entity, Column, ManyToOne, JoinColumn, OneToMany } from "typeorm"; import { EntityBase } from "./base/Base"; import { Profile } from "./Profile"; import { ProfileAssistanceHistory } from "./ProfileAssistanceHistory"; import { ProfileEmployee } from "./ProfileEmployee"; import { Command } from "./Command"; @Entity("profileAssistance") export class ProfileAssistance extends EntityBase { @Column({ nullable: true, length: 40, comment: "คีย์นอก(FK)ของตาราง Profile", default: null, }) profileId: string; @Column({ comment: "สถานะ", default: "PENDING", length: 20, }) status: string; @Column({ nullable: true, comment: "หน่วยงานที่ให้ช่วยราชการ", default: null, }) agency: string; @Column({ nullable: true, type: "datetime", comment: "วันเริ่มช่วยราชการ", default: null, }) dateStart: Date; @Column({ nullable: true, type: "datetime", comment: "วันสิ้นสุดการช่วยราชการ", default: null, }) dateEnd: Date; @Column({ nullable: true, comment: "เลขที่คำสั่ง", default: null, }) commandNo: string; @Column({ nullable: true, comment: "ชื่อคำสั่ง", default: null, }) commandName: string; @Column({ nullable: true, comment: "id อ้างอิงรายการ", default: null, }) refId: string; @Column({ nullable: true, comment: "เอกสารอ้างอิง", default: null, }) document: string; @Column({ comment: "แนบไฟล์เอกสาร", default: false, }) isUpload: boolean; @Column({ comment: "วันที่ออกคำสั่ง", type: "datetime", nullable: true, }) refCommandDate: Date; @Column({ nullable: true, length: 40, comment: "คีย์นอก(FK)ของตาราง command", default: null, }) commandId: string; @ManyToOne(() => Command, (command) => command.profileSalarys) @JoinColumn({ name: "commandId" }) command: Command; @Column({ nullable: true, length: 40, comment: "คีย์นอก(FK)ของตาราง ProfileEmployee", default: null, }) profileEmployeeId: string; @OneToMany( () => ProfileAssistanceHistory, (profileAssistanceHistory) => profileAssistanceHistory.histories, ) profileAssistanceHistorys: ProfileAssistanceHistory[]; @ManyToOne(() => Profile, (profile) => profile.profileAbilities) @JoinColumn({ name: "profileId" }) profile: Profile; @ManyToOne(() => ProfileEmployee, (ProfileEmployee) => ProfileEmployee.profileAbilities) @JoinColumn({ name: "profileEmployeeId" }) profileEmployee: ProfileEmployee; } export class CreateProfileAssistance { profileId: string | null; agency: string | null; dateStart: Date | null; dateEnd: Date | null; commandNo: string | null; document: string | null; refCommandDate?: string | null; commandId?: string | null; isUpload?: boolean | null; commandName?: string | null; } export class CreateProfileAssistanceEmployee { profileEmployeeId: string | null; agency: string | null; dateStart: Date | null; dateEnd: Date | null; commandNo: string | null; document: string | null; refCommandDate?: string | null; commandId?: string | null; isUpload?: boolean | null; commandName?: string | null; } export type UpdateProfileAssistance = { agency?: string | null; dateStart?: Date | null; dateEnd?: Date | null; commandNo?: string | null; document?: string | null; isUpload?: boolean | null; refCommandDate?: string | null; commandId?: string | null; commandName?: string | null; };