// ─── Nested entities ──────────────────────────────────────────────────────────
export interface AuditCompany {
  id:   number;
  name: string;
}

export interface AuditStageRef {
  id:   number;
  name: string;
}

export interface AuditUser {
  id:        number;
  firstName: string;
  lastName:  string;
  email:     string;
}

// ─── Entity ───────────────────────────────────────────────────────────────────
export type AuditStatus = "Planned" | "In Progress" | "Completed" | "Cancelled" | "Scheduled";

export interface CompanyAudit {
  // ── original fields (unchanged) ──────────────────────────────────────────
  id:          number;
  company:     AuditCompany;
  auditStage:  AuditStageRef;
  leadAuditor: AuditUser;
  auditDate:   string;
  status:      AuditStatus;
  notes:       string;
  findings:    string;
  created_at:  string;
  updated_at:  string;

  // ── NEW optional fields (fixes all 8 TS errors in mapper) ────────────────
  auditBy?:    string;          // some APIs return auditor name as flat string
  audit_by?:   string;
  auditType?:  string;          // e.g. "Initial Certification"
  audit_type?: string;
  auditMode?:  string;          // e.g. "Online" | "Offline"
  audit_mode?: string;
  auditYear?:  string | number; // e.g. "2025-2026" or 2026
  audit_year?: string | number;
}

// ─── DTOs ─────────────────────────────────────────────────────────────────────
export interface CreateCompanyAuditDto {
  company_id:      number;
  audit_stage_id:  number;
  lead_auditor_id: number;
  auditDate:       string;
  status?:         AuditStatus;
  notes?:          string;
  findings?:       string;
}

export type UpdateCompanyAuditDto = Partial<CreateCompanyAuditDto>;

// ─── Pagination meta ──────────────────────────────────────────────────────────
export interface PaginationMeta {
  total:       number;
  page:        number;
  limit:       number;
  totalPages:  number;
  hasNextPage: boolean;
  hasPrevPage: boolean;
}

// ─── Paginated response ───────────────────────────────────────────────────────
export interface PaginatedCompanyAuditsResponse {
  data: CompanyAudit[];
  meta: PaginationMeta;
}

// ─── Table row ────────────────────────────────────────────────────────────────
export interface CompanyAuditRow {
  // ── original fields (unchanged) ──────────────────────────────────────────
  sno:          number;
  id:           number;
  companyName:  string;
  companyId:    number;
  auditStage:   string;
  auditStageId: number;
  leadAuditor:  string;
  auditDate:    string;
  status:       AuditStatus;
  notes:        string;
  findings:     string;
  created_at:   string;
  updated_at:   string;
  raw:          CompanyAudit;
  [key: string]: any;           // keeps dynamic access working

  // ── NEW fields (used by row component + mapper) ───────────────────────────
  auditBy:   string;            // "Audit By" column   (Image 2)
  auditType: string;            // "Audit Type" column (Image 2)
  auditMode: string;            // "Audit Mode" column (Image 2)
  auditYear: string;            // "Audit Year" column (Image 2)
  createdAt: string;            // "Created At" column (Image 2, camelCase alias)
}