hrms-api-org/src/entities/ProfileTraining.ts
2025-11-03 15:57:41 +07:00

184 lines
4.6 KiB
TypeScript

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({
type: 'longtext',
nullable: true,
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({
comment: "ข้อมูลจาก Entry",
default: false,
})
isEntry: 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;
};