// lib/api/types/training-certificate.types.ts
// Types for the Training Certificates module (mirrors certificate.types.ts pattern)

export type TrainingStatus =
  | "pending_scan"
  | "active"
  | "expired"
  | "revoked"
  | "fake";

export type VerificationDomain = "local" | "international";

/** Raw shape returned by the NestJS backend */
export interface TrainingCertificateApi {
  id: number;
  participant_name: string;
  participant_company: string | null;
  course_title: string;
  training_location: string;
  training_date: string;
  training_date_end: string | null;
  valid_until: string | null;
  certificate_no: string;
  qrcode_token: string;
  fingerprint: string;
  verification_domain: VerificationDomain;
  batch_ref: string | null;
  scan_pdf_url: string | null;
  scan_uploaded_at: string | null;
  status: TrainingStatus;
  created_at: string;
  updated_at: string;
  standard?: { id: number; name?: string; title?: string } | null;
  // present on list responses
  qrCode?: string;
  verification_url?: string;
}

/** Row shape used by the table (after mapping) */
export interface TrainingRowType {
  sno: number;
  id: number;
  certificate_no: string;
  participant_name: string;
  participant_company: string;
  course_title: string;
  standard_name: string;
  training_location: string;
  training_date: string;
  training_date_end: string | null;
  valid_until: string | null;
  status: TrainingStatus;
  verification_domain: VerificationDomain;
  batch_ref: string;
  scan_pdf_url: string | null;
  scan_uploaded_at: string | null;
  qrCode: string;
  verification_url: string;
  created_at: string;
}

export interface CreateTrainingCertificateDto {
  participant_name: string;
  participant_company?: string;
  course_title: string;
  standard_id?: number;
  training_location: string;
  training_date: string;
  training_date_end?: string;
  valid_until?: string;
  certificate_no?: string; // manual override — empty = auto QRS-TRG-YY-NNN
  verification_domain?: VerificationDomain;
}

export interface BatchCreateTrainingDto {
  course_title: string;
  standard_id?: number;
  training_location: string;
  training_date: string;
  training_date_end?: string;
  valid_until?: string;
  verification_domain?: VerificationDomain;
  participants: Array<{
    participant_name: string;
    participant_company?: string;
  }>;
}

export interface CreatedTrainingCertificate {
  certificate: TrainingCertificateApi;
  qrCode: string;
  verification_url: string;
}

export interface BatchCreateTrainingResponse {
  batch_ref: string;
  count: number;
  certificates: CreatedTrainingCertificate[];
}

export interface TrainingListResponse {
  data: TrainingCertificateApi[];
  total: number;
  page: number;
  lastPage: number;
}