interface ResListCommand {
  data: {
    result: {
      data: DataListCommand[];
      total: number;
    };
  };
}

interface DataListCommand {
  assignFullName: string;
  commandAffectDate: null | Date | string;
  commandExcecuteDate: null | Date | string;
  commandNo: string;
  commandYear: number;
  createdFullName: string;
  id: string;
  status: string;
  issue?: string;
  commandCode?: string;
  commandType?: string;
}

interface DataCommandType {
  category: string;
  commandCode: string;
  createdAt: string | Date;
  createdFullName: string;
  createdUserId: string;
  id: string;
  lastUpdateFullName: string;
  lastUpdateUserId: string;
  lastUpdatedAt: string | Date;
  name: string;
  subtitle: string;
}

interface DataFileDownload {
  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;
}

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 DataDirector {
  actFullName: string;
  citizenId: string;
  firstName: string;
  id: string;
  isDirector: number;
  lastName: string;
  orgRootId: string;
  posLevel: string;
  posType: string;
  position: string;
  prefix: string;
}

interface DataAuthority {
  id: string;
  prefix: string;
  firstName: string;
  lastName: string;
  position: string;
  profileId: string;
  comment: string;
  isSignatory: boolean;
}

interface DataOperators {
  commandId: string;
  createdAt: string;
  createdFullName: string;
  createdUserId: string;
  firstName: string;
  id: string;
  lastName: string;
  lastUpdateFullName: string;
  lastUpdateUserId: string;
  lastUpdatedAt: string;
  orderNo: number;
  posLevel: string;
  posNo: string;
  posType: string;
  position: string;
  positionExecutive: string;
  prefix: string;
  profileId: string;
  roleName: string;
  posExecutiveName?: string;
  positionSign?: string;
}

interface DataProfile {
  birthDate: string;
  child1: string;
  child1DnaId: string;
  child1Id: string;
  child1ShortName: string;
  child2: string;
  child2DnaId: string;
  child2Id: string;
  child2ShortName: string;
  child3: string | null;
  child3DnaId: string | null;
  child3Id: string | null;
  child3ShortName: string | null;
  child4: string | null;
  child4DnaId: string | null;
  child4Id: string | null;
  child4ShortName: string | null;
  citizenId: string;
  educationDegree: string | null;
  email: string | null;
  firstName: string;
  id: string;
  keycloak: string;
  lastName: string;
  name: string;
  organization: string;
  phone: string | null;
  posLevelId: string;
  posLevelName: string;
  posMasterNo: number;
  posNo:string;
  posTypeId:string;
  posTypeName: string;
  position: string;
  positionLevel: string;
  positionLevelName: string;
  positionType: string;
  positionTypeName: string;
  prefix: string;
  rank: string;
  root: string;
  rootDnaId: string;
  rootId:string;
  rootShortName: string;
  salary: number;
}

export type {
  ResListCommand,
  DataListCommand,
  DataCommandType,
  DataFileDownload,
  DataFileOrder,
  DataDirector,
  DataAuthority,
  DataOperators,
  DataProfile
};
