interface Pagination {
  rowsPerPage: number;
}

interface DataOption {
  id: string | number;
  name: string;
}

interface ItemTabs {
  label: string;
  name: string;
}

interface TabOptions {
  label: string;
  value: string;
}

interface DataPerson {
  fullName?: string;
  citizenId: string;
  firstName: string;
  id: string;
  lastName: string;
  org: string;
  position: string;
  prefix: string;
  profileId: string;
  sendCC: string[];
}

interface DateSelectPerson {
  citizenId: string;
  firstName: string;
  id: string;
  isSit: boolean;
  lastName: string;
  name: string;
  node: number;
  nodeId: string;
  orgChild1Id: string;
  orgChild2Id: string;
  orgChild3Id: string;
  orgChild4Id: string;
  orgRootId: string;
  orgShortname: string;
  organizationName: string;
  posMasterNo: number;
  posMasterNoPrefix: string;
  posMasterNoSuffix: string;
  position: string;
  prefix: string;
  profileId: string;
}

interface ListCommand {
  id: string;
  code: string;
  name: string;
  subtitle?: string;
  commandSysId: string;
  isSalary?: boolean;
}

interface DataOrder {
  assignFullName: string;
  commandAffectDate: string | Date;
  commandExcecuteDate: string | Date;
  commandNo: string;
  commandYear: number;
  createdFullName: string;
  id: string;
  issue: string;
  status: string;
}

interface DataFileOrder {
  reportName: string;
  template: string;
  data: {
    commandDate: string;
    commandExcecuteDate: string;
    commandNo: string;
    commandTitle: string;
    commandYear: 2024;
    detailBody: string;
    detailFooter: string;
    detailHeader: string;
    name: string;
    position: string;
  };
}

interface FormDataDetail {
  id?: string;
  status?: string;
  commandNo: string;
  commandYear: number | null;
  detailHeader: string;
  detailBody: string;
  detailFooter: string;
  issue: string | null;
  commandAffectDate: Date | null;
  commandExcecuteDate: Date | null;
  commandSysId?: string;
  commandTypeName?: string;
  isBangkok?: string | null;
  isAttachment: boolean;
}

interface DataFile {
  author: string;
  category: [];
  createdAt: string;
  createdBy: string;
  description: string;
  downloadUrl: string;
  fileName: string;
  fileSize: number;
  fileType: string;
  hidden: boolean;
  keyword: [];
  metadata: {};
  path: string;
  pathname: string;
  title: string;
  updatedAt: string;
  updatedBy: string;
  upload: boolean;
}

export type {
  Pagination,
  DataOption,
  ItemTabs,
  DataPerson,
  DateSelectPerson,
  ListCommand,
  DataOrder,
  DataFileOrder,
  FormDataDetail,
  TabOptions,
  DataFile,
};
