interface ResponseObject {
  id: string;
  name: string;
  shortName: string;
  insigniaTypeName: string;
  createdAt: Date;
  lastUpdatedAt: Date;
  lastUpdateFullName: string;
  isActive: boolean;
  note: string;
  insigniaTypeId: string;
}

interface ResponsePeriod {
  period_amount: number;
  period_doc: string;
  period_end: string;
  period_id: string;
  period_isActive: boolean;
  period_name: string;
  period_round: number;
  period_start: string;
  period_status: string;
  period_year: number;
  period_revision: string;
}

interface ResponseNoSend {
  orgId: string;
  orgName: string;
}

interface ResponseRound {
  id: string;
  name: string;
  year: number;
}

interface ResponseAllocate {
  allocate: number;
  createdAt: string;
  id: string;
  lastUpdatedAt: string;
  organizationOrganization: string;
  remain: number;
  total: number;
}

interface ResponseInsigniaType {
  createdAt: string;
  id: string;
  insigniaTypeId: string;
  insigniaTypeName: string;
  isActive: boolean;
  lastUpdateFullName: string;
  lastUpdatedAt: string;
  name: string;
  note: string;
  shortName: string;
}

interface ResponseRecordLists {
  profileId?: string;
  address: string;
  citizenId: string;
  date: Date;
  datePayment: Date;
  dateReceive: Date;
  dateReceiveInsignia: string;
  dateReturnInsignia: string;
  docReceiveInsignia: string;
  docReturnInsignia: string;
  fullName: string;
  id: string;
  issue: string;
  no: string;
  number: string;
  orgReceiveInsignia: string;
  orgReturnInsignia: string;
  organizationOrganizationReceive: string;
  organizationOrganizationSend: string;
  page: string;
  position: string;
  prefix: string;
  profileType: string;
  requestInsignia: string;
  requestInsigniaId: string;
  requestInsigniaShortName: string;
  salary: number;
  section: string;
  status: string;
  typePayment: string;
  volumeNo: string;
  orgReceiveInsigniaId: string;
  orgReturnInsigniaId: string;
}

interface ResponseProfile {
  avatar: string;
  avatarName: string;
  citizenId: string;
  firstName: string;
  id: string;
  lastName: string;
  org: string;
  orgRevisionId: string;
  orgRootShortName: string;
  posExecutive: string;
  posLevel: string;
  posLevelId: string;
  posNo: string;
  posType: string;
  posTypeId: string;
  position: string;
  prefix: string;
  rank: string;
  root: string;
  rootId: string;
}

interface ResponseManageList {
  citizenId: string;
  docs: string;
  fullName: string;
  id: string;
  isApprove: boolean;
  lastInsignia: string;
  level: string;
  markDiscipline: boolean;
  markLeave: boolean;
  markRate: boolean;
  markInsignia: boolean;
  posNo: string;
  position: string;
  profileId: string;
  profileType: string;
  rank: string;
  reason: string;
  requestDate: Date;
  requestInsignia: string;
  requestInsigniaShortName: string;
  requestNote: string;
  salary: string;
  status: string;
}

interface ResponseDataInsignia {
  document: string;
  isLock: boolean;
  name: string;
  organizationName: string;
  periodId: string;
  requestId: string;
  requestNote: string;
  requestStatus: string;
  round: number;
  year: number;
  items: ResponseManageList[];
}

interface ResponsePosition {
  id: string;
  posDictName: string;
  posLevelId: string;
  posLevelName: number;
  posTypeId: string;
  posTypeName: string;
  posTypeShortName: string;
}

export type {
  ResponseObject,
  ResponsePeriod,
  ResponseNoSend,
  ResponseRound,
  ResponseAllocate,
  ResponseInsigniaType,
  ResponseRecordLists,
  ResponseProfile,
  ResponseManageList,
  ResponseDataInsignia,
  ResponsePosition,
};
