import { Entity, Column, ManyToOne, JoinColumn, OneToMany } from "typeorm"; import { EntityBase } from "./base/Base"; import { Profile } from "./Profile"; import { ProfileEmployee } from "./ProfileEmployee"; import { ProfileTrainingHistory } from "./ProfileTrainingHistory"; @Entity("profileTraining") export class ProfileTraining extends EntityBase { @Column({ nullable: true, length: 40, comment: "คีย์นอก(FK)ของตาราง Profile", default: null, }) profileId: string; @Column({ nullable: true, length: 40, comment: "คีย์นอก(FK)ของตาราง ProfileEmployee", default: null, }) profileEmployeeId: string; @Column({ nullable: true, type: "datetime", comment: "วันเริ่มต้นการฝึกอบรม/ดูงาน ", default: null, }) startDate: Date; @Column({ nullable: true, type: "datetime", comment: "วันสิ้นสุดการฝึกอบรม/ดูงาน ", default: null, }) endDate: Date; @Column({ nullable: true, length: 200, comment: "เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ ", default: null, }) numberOrder: string; @Column({ nullable: true, length: 200, comment: "หัวข้อการฝึกอบรม/ดูงาน ", default: null, }) topic: string; @Column({ nullable: true, length: 200, comment: "สถานที่ฝึกอบรม/ดูงาน ", default: null, }) place: string; @Column({ nullable: true, type: "datetime", comment: "คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่ ", default: null, }) dateOrder: Date; @Column({ nullable: true, length: 200, comment: "หน่วยงานที่รับผิดชอบจัดการฝึกอบรม/ดูงาน ", default: null, }) department: string; @Column({ nullable: true, length: 200, comment: "รวมระยะเวลาในการฝึกอบรม/ดูงาน ", default: null, }) duration: string; @Column({ nullable: true, length: 200, comment: "ชื่อโครงการ/หลักสูตรการฝึกอบรม ", default: null, }) name: string; @Column({ nullable: true, comment: "ปีที่อบรม (พ.ศ.) ", default: null, }) yearly: number; @Column({ nullable: true, comment: "ประเภทช่วงเวลาการศึกษา", default: null, }) isDate: boolean; @Column({ nullable: true, length: 40, comment: "ไอดีโครงการ/หลักสูตรการฝึกอบรม", default: null, }) developmentId: string; @OneToMany( () => ProfileTrainingHistory, (profileTrainingHistory) => profileTrainingHistory.histories, ) profileTrainingHistories: ProfileTrainingHistory[]; @ManyToOne(() => Profile, (profile) => profile.profileTrainings) @JoinColumn({ name: "profileId" }) profile: Profile; @ManyToOne(() => ProfileEmployee, (ProfileEmployee) => ProfileEmployee.profileTrainings) @JoinColumn({ name: "profileEmployeeId" }) profileEmployee: ProfileEmployee; } export class CreateProfileTraining { profileId: string | null; startDate: Date | null; endDate: Date | null; numberOrder: string | null; topic: string | null; place: string | null; dateOrder: Date | null; department: string | null; duration: string | null; name: string | null; yearly: number | null; isDate: boolean | null; developmentId?: string | null; } export class CreateProfileEmployeeTraining { profileEmployeeId: string | null; startDate: Date | null; endDate: Date | null; numberOrder: string | null; topic: string | null; place: string | null; dateOrder: Date | null; department: string | null; duration: string | null; name: string | null; yearly: number | null; isDate: boolean | null; developmentId?: string | null; } export type UpdateProfileTraining = { startDate?: Date | null; endDate?: Date | null; numberOrder?: string | null; topic?: string | null; place?: string | null; dateOrder?: Date | null; department?: string | null; duration?: string | null; name?: string | null; yearly?: number | null; isDate?: boolean | null; };