interface OptionData {
  id: string | undefined;
  name: string | undefined;
  code: string | undefined;
}

interface FormLeavetMainData {
  type: string;
  numDate: string;
  extend: string;
  use: string;
  numAll: string;
  numDone: string;
  numNot: string;
  numCancel: string;
}

interface formListLeaveData {
  no: string;
  date: string | null;
  type: string;
  status: string;
  year: string;
}

interface TypeLeave {
  code: string;
  createdAt: Date;
  createdFullName: string;
  createdUserId: string;
  id: string;
  lastUpdateFullName: string;
  lastUpdateUserId: string;
  lastUpdatedAt: Date | null;
  limit: number;
  name: string;
}

interface LeaveItem {
  text: string;
  color: string;
  value: number;
  all: number;
  use: number;
  remain: number;
}

interface MainList {
  id: string;
  leaveTypeName: string;
  leaveLimit: number;
  leaveExtend: number;
  leavePercent: number;
  leaveCountSend: number;
  leaveCountApprove: number;
  leaveCountReject: number;
  leaveCountDelete: number;
}

interface LeaveDocument {
  fileName: string;
  pathName: string;
  id: string;
}

interface FormData {
  id: string;
  leaveTypeName: string;
  leaveTypeId: string;
  fullname: string;
  dateSendLeave: Date | null;
  status: string;
  leaveStartDate: Date | null;
  leaveEndDate: Date | null;
  leaveCount: number;
  leaveWrote: string;
  leaveAddress: string;
  leaveNumber: string;
  leaveDetail: string;
  leaveDocument: LeaveDocument[];
  leaveDraftDocument: string;
  leaveLastStart: Date | null;
  leaveLastEnd: Date | null;
  leaveTotal: number;
  leavebirthDate: Date | null;
  leavegovernmentDate: Date | null;
  leaveSalary: number;
  leaveSalaryText: string;
  leaveTypeDay: string;
  wifeDayName: string;
  wifeDayDateBorn: Date | null;
  restDayOldTotal: number;
  restDayCurrentTotal: number;
  ordainDayStatus: string;
  ordainDayLocationName: string;
  ordainDayLocationAddress: string;
  ordainDayLocationNumber: string;
  ordainDayOrdination: Date | null;
  ordainDayBuddhistLentName: string;
  ordainDayBuddhistLentAddress: string;
  hajjDayStatus: string;
  absentDaySummon: string;
  absentDayLocation: string;
  absentDayRegistorDate: Date | null;
  absentDayGetIn: string;
  absentDayAt: string;
  studyDaySubject: string;
  studyDayDegreeLevel: string;
  studyDayUniversityName: string;
  studyDayTrainingSubject: string;
  studyDayTrainingName: string;
  studyDayCountry: string;
  studyDayScholarship: string;
  coupleDayName: string;
  coupleDayPosition: string;
  coupleDayLevel: string;
  coupleDayLevelCountry: string;
  coupleDayCountryHistory: string;
  coupleDayTotalHistory: string;
  coupleDayStartDateHistory: Date | null;
  coupleDayEndDateHistory: Date | null;
  coupleDaySumTotalHistory: string;
  approveStep: string;
  dear: string;
  leaveRangeEnd: string;
  leaveLast: string;
  leaveSubTypeName: string;
  leaveRange: string;
}

interface DocumentLists {
  docId: string;
  path: string;
  name: string;
}

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

export type {
  OptionData,
  FormLeavetMainData,
  formListLeaveData,
  TypeLeave,
  LeaveItem,
  MainList,
  FormData,
  DocumentLists,
  DataOptions,
};
