interface DataOption {
  id: string;
  name: string;
}
interface Salary {
  id: string;
  salaryType: string;
  posType: string;
  posLevel: string;
  isActive: boolean;
  date: Date; //ให้ไว้ ณ วันที่
  startDate: Date;
  endDate: Date;
  detail: string;
}

interface SalaryRate {
  id: string;
  salary: number;
  salaryHalf: number;
  salaryHalfSpecial: number;
  salaryFull: number;
  salaryFullSpecial: number;
  salaryFullHalf: number;
  salaryFullHalfSpecial: number;
  isNext: boolean;
}

interface SalaryPosType {
  id: string;
  posTypeName: string;
  posTypeRank: string;
  posLevels: SalaryPosLevel[];
}

interface SalaryPosLevel {
  id: string;
  posLevelAuthority: string;
  posLevelName: string;
  posLevelRank: number;
}

interface RowList {
  id: string;
  period: string | null;
  isActive: boolean | null;
  isClose: boolean | null;
  effectiveDate: Date | null | string;
  year: number | null;
  status: string | null;
  revisionId: string | null;
}

interface Row {
  data: [Row];
  total: number;
}

interface DataPosSalary {
  amount: number;
  createdAt: string;
  createdFullName: string;
  createdUserId: string;
  date: string;
  id: string;
  lastUpdateFullName: string;
  lastUpdateUserId: string;
  lastUpdatedAt: string;
  mouthSalaryAmount: number;
  order: number;
  posNo: string;
  position: string;
  positionExecutive: string;
  positionLevel: string;
  positionLine: string;
  positionPathSide: string;
  positionSalaryAmount: number;
  positionType: string;
  profileEmployeeId: string;
  profileId: string;
  refCommandNo: string;
  templateDoc: string;
}

interface DataDiscipline {
  date: string;
  detail: string;
  id: string;
  lastUpdateFullName: string;
  lastUpdatedAt: string;
  level: string;
  refCommandDate: string;
  refCommandNo: string;
  unStigma: string;
}
interface DataLeave {
  id: string;
  createdAt: string;
  createdUserId: string;
  lastUpdatedAt: string;
  lastUpdateUserId: string;
  createdFullName: string;
  lastUpdateFullName: string;
  profileId: string;
  profileEmployeeId: string;
  leaveTypeId: string;
  dateLeaveStart: string;
  dateLeaveEnd: string;
  leaveDays: number;
  leaveCount: number;
  totalLeave: number;
  status: string;
  reason: string;
  leaveType: {
    id: string;
    createdAt: string;
    createdUserId: string;
    lastUpdatedAt: string;
    lastUpdateUserId: string;
    createdFullName: string;
    lastUpdateFullName: string;
    name: string;
    code: string;
    limit: number;
  };
}

export type {
  Salary,
  SalaryRate,
  SalaryPosType,
  SalaryPosLevel,
  RowList,
  Row,
  DataOption,
  DataPosSalary,
  DataDiscipline,
  DataLeave,
};
