import { Column, Entity, ManyToOne, OneToMany, JoinColumn } from "typeorm";
import { EntityBase } from "./base/Base";
import { Profile } from "./Profile";
import { ProfileEmployee } from "./ProfileEmployee";
import { ProfileFamilyMotherHistory } from "./ProfileFamilyMotherHistory";

@Entity("profileFamilyMother")
export class ProfileFamilyMother extends EntityBase {
  @Column({
    nullable: true,
    default: null,
    comment: "คำนำหน้ามารดา",
  })
  motherPrefix: string;

  @Column({
    nullable: true,
    default: null,
    comment: "ชื่อมารดา",
  })
  motherFirstName: string;

  @Column({
    nullable: true,
    default: null,
    comment: "นามสกุลมารดา",
  })
  motherLastName: string;

  @Column({
    nullable: true,
    default: null,
    comment: "นามสกุลมารดาเดิม",
  })
  motherLastNameOld: string;

  @Column({
    nullable: true,
    default: null,
    comment: "อาชีพบิดา",
  })
  motherCareer: string;

  @Column({
    nullable: true,
    default: null,
    comment: "เลขที่บัตรประชาชนมารดา",
  })
  motherCitizenId: string;

  @Column({
    nullable: true,
    default: null,
    comment: "มีชีวิตมารดา",
  })
  motherLive: boolean;

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

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

  @OneToMany(() => ProfileFamilyMotherHistory, (v) => v.profileFamilyMother)
  histories: ProfileFamilyMotherHistory[];

  @ManyToOne(() => Profile, (v) => v.profileFamilyMother)
  @JoinColumn({ name: "profileId" })
  profile: Profile;

  @ManyToOne(() => ProfileEmployee, (v) => v.profileFamilyMother)
  @JoinColumn({ name: "profileEmployeeId" })
  profileEmployee: ProfileEmployee;
}

export type CreateProfileFamilyMother = {
  profileId: string;
  motherPrefix: string | null;
  motherFirstName: string | null;
  motherLastName: string | null;
  motherLastNameOld: string | null;
  motherCareer: string | null;
  motherCitizenId: string | null;
  motherLive: boolean | null;
};

export type CreateProfileEmployeeFamilyMother = {
  profileEmployeeId: string;
  motherPrefix: string | null;
  motherFirstName: string | null;
  motherLastName: string | null;
  motherLastNameOld: string | null;
  motherCareer: string | null;
  motherCitizenId: string | null;
  motherLive: boolean | null;
};

export type UpdateProfileFamilyMother = {
  motherPrefix: string | null;
  motherFirstName: string | null;
  motherLastName: string | null;
  motherLastNameOld: string | null;
  motherCareer: string | null;
  motherCitizenId: string | null;
  motherLive: boolean | null;
};
