import type { zipCodeOption } from "../../components/PersonalDetail/profileType";
interface DataOption {
  id: number | null;
  name: string;
  disable?: boolean;
}
interface DataOption1 {
  id: string | null;
  name: string | null;
  disable?: boolean;
}
interface DataOptionInsignia {
  id: string;
  name: string;
  typeName: string;
}

interface optionData {
  id: string;
  name: string;
}

interface EduOps {
  levelOptions: optionData[];
  positionPathOptions: optionData[];
}

interface InformationOps {
  prefixOps: optionData[];
  genderOps: optionData[];
  bloodOps: optionData[];
  statusOps: optionData[];
  religionOps: optionData[];
  employeeClassOps: optionData[];
  employeeTypeOps: optionData[];
}

interface AddressOps {
  provinceOps: optionData[];
  districtOps: optionData[];
  districtCOps: optionData[];
  subdistrictOps: zipCodeOption[];
  subdistrictCOps: zipCodeOption[];
}

interface InsigniaOps {
  insigniaOptions: DataOptionInsignia[];
}

interface Pagination {
  rowsPerPage: number;
}

interface treeTab {
  id: string;
  label: string;
  children: treeTab[];
}

interface CheckboxItem {
  id: number;
  label: string;
}

interface Property {
  name: string;
  value: boolean;
}

interface PointExam {
  pointA: number;
  pointB: number;
  pointC: number;
  pointTotalA: number;
  pointTotalB: number;
  pointTotalC: number;
  point: number;
  pointTotal: number;
  examNumber: number;
  examRound: number;
  pass: string | null;
}

interface Education {
  id: string;
  educationLevel: string;
  educationLevelId: string;
  institute: string;
  degree: string;
  field: string;
  gpa: string;
  country: string;
  duration: string;
  other: string;
  fundName: string;
  durationYear: number;
  finishDate: Date;
  isDate: string;
  startDate: Date;
  endDate: Date;
  positionPath: string;
  isEducation: boolean;
}

interface Family {
  couple: string;
  marryPrefix: string;
  marryPrefixId: string;
  marryFirstName: string;
  marryLastName: string;
  marryOccupation: string;
  fatherPrefix: string;
  fatherPrefixId: string;
  fatherFirstName: string;
  fatherLastName: string;
  fatherOccupation: string;
  motherPrefix: string;
  motherPrefixId: string;
  motherFirstName: string;
  motherLastName: string;
  motherOccupation: string;
}

interface Address {
  registAddress: string;
  registSubDistrict: string;
  registSubDistrictId: string;
  registZipCode: string;
  registDistrict: string;
  registDistrictId: string;
  registProvince: string;
  registProvinceId: string;
  currentAddress: string;
  currentSubDistrict: string;
  currentSubDistrictId: string;
  currentZipCode: string;
  currentDistrict: string;
  currentDistrictId: string;
  currentProvince: string;
  currentProvinceId: string;
  registSame: string;
}

interface Certificate {
  id: string;
  certificateNo: string;
  issuer: string;
  issueDate: Date;
  expireDate: Date;
  certificateType: string;
}

const AddressDataDefualt: Address = {
  registAddress: "",
  currentAddress: "",
  registSubDistrict: "",
  registSubDistrictId: "",
  registZipCode: "",
  registDistrict: "",
  registDistrictId: "",
  registProvince: "",
  registProvinceId: "",
  currentSubDistrict: "",
  currentSubDistrictId: "",
  currentZipCode: "",
  currentDistrict: "",
  currentDistrictId: "",
  currentProvince: "",
  currentProvinceId: "",
  registSame: "0",
};

const FamilyDataDefualt: Family = {
  couple: "0",
  marryPrefix: "",
  marryPrefixId: "",
  marryFirstName: "",
  marryLastName: "",
  marryOccupation: "",
  fatherPrefix: "",
  fatherPrefixId: "",
  fatherFirstName: "",
  fatherLastName: "",
  fatherOccupation: "",
  motherPrefix: "",
  motherPrefixId: "",
  motherFirstName: "",
  motherLastName: "",
  motherOccupation: "",
};
interface Assign {
  id: number;
  personal_id: string;
  knowlage_skill_map_no: number;
  round_no: number;
  date_start: Date;
  date_finish: Date;
  behavior_desc: string;
  other_desc: string;
  other4_desc: string;
  othor5_no1_desc: string;
  othor5_no2_desc: string;
  experimenter_dated: Date;
  createdAt: Date;
  updatedAt: Date;
}
export type {
  DataOption,
  DataOptionInsignia,
  treeTab,
  InformationOps,
  AddressOps,
  Pagination,
  EduOps,
  DataOption1,
  InsigniaOps,
  CheckboxItem,
  Property,
  PointExam,
  Education,
  Family,
  Address,
  optionData,
  Certificate,
  Assign,
};

export { AddressDataDefualt, FamilyDataDefualt };
