// =============================================================================
// Atemschutz (Breathing Apparatus) Carrier Management — Frontend Type Definitions
// =============================================================================

export type UntersuchungErgebnis = 'tauglich' | 'bedingt_tauglich' | 'nicht_tauglich';

export const UntersuchungErgebnisLabel: Record<UntersuchungErgebnis, string> = {
  tauglich: 'Tauglich',
  bedingt_tauglich: 'Bedingt tauglich',
  nicht_tauglich: 'Nicht tauglich',
};

// ── Core Entity ────────────────────────────────────────────────────────────

export interface AtemschutzTraeger {
  id: string;
  user_id: string;
  atemschutz_lehrgang: boolean;
  lehrgang_datum: string | null;
  untersuchung_datum: string | null;
  untersuchung_gueltig_bis: string | null;
  untersuchung_ergebnis: UntersuchungErgebnis | null;
  leistungstest_datum: string | null;
  leistungstest_gueltig_bis: string | null;
  leistungstest_bestanden: boolean | null;
  bemerkung: string | null;
  created_at: string;
  updated_at: string;
}

// ── List / Overview Shape (joined with user data) ──────────────────────────

export interface AtemschutzUebersicht extends AtemschutzTraeger {
  user_name: string | null;
  user_given_name: string | null;
  user_family_name: string | null;
  user_email: string;
  mitglied_status: string | null;
  dienstgrad: string | null;
  untersuchung_gueltig: boolean;
  untersuchung_tage_rest: number | null;
  leistungstest_gueltig: boolean;
  leistungstest_tage_rest: number | null;
  einsatzbereit: boolean;
}

// ── Dashboard KPI ──────────────────────────────────────────────────────────

export interface AtemschutzStats {
  total: number;
  mitLehrgang: number;
  untersuchungGueltig: number;
  untersuchungAbgelaufen: number;
  untersuchungBaldFaellig: number;
  leistungstestGueltig: number;
  leistungstestAbgelaufen: number;
  leistungstestBaldFaellig: number;
  einsatzbereit: number;
}

// ── Request Payload Types ──────────────────────────────────────────────────

export interface CreateAtemschutzPayload {
  user_id: string;
  atemschutz_lehrgang?: boolean;
  lehrgang_datum?: string;
  untersuchung_datum?: string;
  untersuchung_gueltig_bis?: string;
  untersuchung_ergebnis?: UntersuchungErgebnis;
  leistungstest_datum?: string;
  leistungstest_gueltig_bis?: string;
  leistungstest_bestanden?: boolean;
  bemerkung?: string;
}

export type UpdateAtemschutzPayload = Omit<Partial<CreateAtemschutzPayload>, 'user_id'>;
