import { Entity, Column, ManyToOne, JoinColumn } from "typeorm";
import { EntityBase } from "./base/Base";
import { ProfileInsignia } from "./ProfileInsignia";
import { Insignia } from "./Insignia";

@Entity("profileInsigniaHistory")
export class ProfileInsigniaHistory extends EntityBase {
  @Column({
    nullable: true,
    comment: "ปีที่ยื่นขอ",
    default: null,
  })
  year: number;

  @Column({ nullable: true, length: 20, comment: "ลำดับที่", default: null })
  no: string;

  @Column({ nullable: true, length: 30, comment: "เล่ม", default: null })
  volume: string;

  @Column({ nullable: true, length: 30, comment: "ตอน", default: null })
  section: string;

  @Column({ nullable: true, length: 30, comment: "หน้า", default: null })
  page: string;

  @Column({ nullable: true, type: "datetime", comment: "ลงวันที่", default: null })
  receiveDate: Date;

  @Column({ nullable: true, length: 40, comment: "คีย์นอก(FK)ของตาราง Insignia", default: null })
  insigniaId: string;

  @ManyToOne(() => Insignia, (v) => v.profileInsigniaHistories)
  insignia: Insignia;

  @Column({ nullable: true, type: "datetime", comment: "วันที่ประกาศในราชกิจจาฯ", default: null })
  dateAnnounce: Date;

  @Column({ nullable: true, length: 300, comment: "ราชกิจจาฯ ฉบับที่", default: null })
  issue: string;

  @Column({ nullable: true, length: 30, comment: "เล่มที่", default: null })
  volumeNo: string;

  @Column({ nullable: true, type: "datetime", comment: "เอกสารอ้างอิง (ลงวันที่)", default: null })
  refCommandDate: Date;

  @Column({ nullable: true, comment: "เอกสารอ้างอิง (เลขที่คำสั่ง)", type: "text", default: null })
  refCommandNo: string;

  @Column({ nullable: true, comment: "หมายเหตุ", default: null })
  note: string;

  @Column({
    comment: "แนบไฟล์เอกสาร",
    default: false,
  })
  isUpload: boolean;

  @Column({
    nullable: true,
    length: 40,
    comment: "คีย์นอก(FK)ของตาราง ProfileInsignia",
    default: null,
  })
  profileInsigniaId: string;

  @Column({
    nullable: false,
    comment: "สถานะลบข้อมูล",
    default: false,
  })
  isDeleted: boolean;

  @ManyToOne(() => ProfileInsignia, (profileInsignia) => profileInsignia.profileInsigniaHistories)
  @JoinColumn({ name: "profileInsigniaId" })
  histories: ProfileInsignia;
}
