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

183 lines
4.5 KiB
TypeScript

import { Entity, Column, JoinColumn, ManyToOne, OneToMany } from "typeorm";
import { EntityBase } from "./base/Base";
import { CommandType } from "./CommandType";
import { CommandSend } from "./CommandSend";
import { CommandSalary } from "./CommandSalary";
import { CommandRecive } from "./CommandRecive";
import { ProfileSalary } from "./ProfileSalary";
import { ProfileSalaryHistory } from "./ProfileSalaryHistory";
import { CommandSign } from "./CommandSign";
import { ProfileSalaryTemp } from "./ProfileSalaryTemp";
@Entity("command")
export class Command extends EntityBase {
// NEW = ใหม่
// DRAFT = แบบร่าง
// PENDING = รอผู้มีอำนาจ
// WAITING = รอออกคำสั่ง
// REPORTED = ออกคำสั่งเสร็จสิ้น
// CANCEL = ยกเลิก
@Column({
nullable: true,
comment: "สถานะ",
length: 20,
default: null,
})
status: string;
@Column({
nullable: true,
comment: "คำสั่งเรื่อง",
length: 255,
default: null,
})
issue: string;
@Column({
nullable: true,
comment: "เลขที่คำสั่ง",
length: 255,
default: null,
})
commandNo: string;
@Column({
nullable: true,
comment: "ปี",
default: null,
})
commandYear: number;
@Column({
nullable: true,
type: "datetime",
comment: "วันที่ลงนาม",
default: null,
})
commandAffectDate: Date;
@Column({
nullable: true,
type: "datetime",
comment: "วันที่คำสั่งมีผล",
default: null,
})
commandExcecuteDate: Date;
@Column({
nullable: true,
comment: "เนื้อหาคำสั่งส่วนต้น",
type: "text",
default: null,
})
detailHeader: string;
@Column({
nullable: true,
comment: "เนื้อหาคำสั่งส่วนกลาง",
type: "text",
default: null,
})
detailBody: string;
@Column({
nullable: true,
comment: "เนื้อหาคำสั่งส่วนท้าย",
type: "text",
default: null,
})
detailFooter: string;
@Column({
nullable: true,
comment: "ตำแหน่ง",
type: "text",
default: null,
})
positionDetail: string;
@Column({
nullable: true,
comment: "คำสั่งกรุงเทพมหานคร",
length: 20,
default: null,
})
isBangkok: string;
@Column({
comment: "สถานะบัญชีแนบท้าย",
default: true,
})
isAttachment: boolean;
@Column({
comment: "อัปโหลดบัญชีแนบท้าย",
default: true,
})
isUploadAttachment: boolean;
@Column({
comment: "ออกคำสั่งแบบ Digital Signature",
default: null,
})
isSignature: boolean;
@Column({
comment: "ยืนยันทำแบบร่าง",
default: false,
})
isDraft: boolean;
@Column({
comment: "ผู้มีอำนาจลงนาม",
default: false,
})
isSign: boolean;
@Column({
length: 40,
comment: "คีย์นอก(FK)ของตาราง commandType",
})
commandTypeId: string;
@ManyToOne(() => CommandType, (commandType) => commandType.commands)
@JoinColumn({ name: "commandTypeId" })
commandType: CommandType;
@Column({
nullable: true,
length: 40,
comment: "คีย์นอก(FK)ของตาราง commandSalary",
default: null,
})
commandSalaryId: string;
@ManyToOne(() => CommandSalary, (commandSalary) => commandSalary.commands)
@JoinColumn({ name: "commandSalaryId" })
commandSalary: CommandSalary;
@OneToMany(() => CommandSend, (commandSend) => commandSend.command)
commandSends: CommandSend[];
@OneToMany(() => CommandSign, (commandSign) => commandSign.command)
commandSigns: CommandSign[];
@OneToMany(() => CommandRecive, (commandRecive) => commandRecive.command)
commandRecives: CommandRecive[];
@OneToMany(() => ProfileSalary, (profileSalary) => profileSalary.command)
profileSalarys: ProfileSalary[];
@OneToMany(() => ProfileSalaryTemp, (profileSalaryTemp) => profileSalaryTemp.command)
profileSalaryTemps: ProfileSalaryTemp[];
@OneToMany(() => ProfileSalaryHistory, (profileSalaryHistory) => profileSalaryHistory.command)
profileSalaryHistorys: ProfileSalaryHistory[];
}
export class CreateCommand {
@Column()
name: string;
}
// export type UpdateCommand = Partial<CreateCommand>;