export type BuchungsArt = 'intern' | 'extern' | 'wartung' | 'reservierung' | 'sonstiges' | 'lehrgang';

export const BUCHUNGS_ART_LABELS: Record<BuchungsArt, string> = {
  intern: 'Intern',
  extern: 'Extern',
  wartung: 'Wartung/Service',
  reservierung: 'Reservierung',
  sonstiges: 'Sonstiges',
  lehrgang: 'Lehrgang',
};

export const BUCHUNGS_ART_COLORS: Record<BuchungsArt, string> = {
  intern: '#1976d2',
  extern: '#e65100',
  wartung: '#616161',
  reservierung: '#7b1fa2',
  sonstiges: '#00695c',
  lehrgang: '#0288d1',
};

export interface FahrzeugBuchungListItem {
  id: string;
  fahrzeug_id: string;
  fahrzeug_name: string;
  fahrzeug_kennzeichen?: string | null;
  titel: string;
  buchungs_art: BuchungsArt;
  beginn: string; // ISO
  ende: string; // ISO
  ganztaegig: boolean;
  abgesagt: boolean;
  gebucht_von: string;
  gebucht_von_name?: string | null;
}

export interface FahrzeugBuchung extends FahrzeugBuchungListItem {
  beschreibung?: string | null;
  kontakt_person?: string | null;
  kontakt_telefon?: string | null;
  abgesagt_grund?: string | null;
  erstellt_am: string;
  aktualisiert_am: string;
}

export interface Fahrzeug {
  id: string;
  bezeichnung: string;
  kurzname: string | null;
  amtliches_kennzeichen: string | null;
  status: string;
  status_bemerkung?: string | null;
  ausser_dienst_von: string | null;
  ausser_dienst_bis: string | null;
}

export interface MaintenanceWindow {
  id: string;
  bezeichnung: string;
  kurzname: string | null;
  status: string;
  status_bemerkung: string | null;
  ausser_dienst_von: string;
  ausser_dienst_bis: string;
}

export interface BuchungsKategorie {
  id: number;
  bezeichnung: string;
  farbe: string;
  aktiv: boolean;
  sort_order: number;
}

export interface CreateBuchungInput {
  fahrzeugId: string;
  titel: string;
  beschreibung?: string | null;
  beginn: string; // ISO
  ende: string; // ISO
  buchungsArt: BuchungsArt;
  kontaktPerson?: string | null;
  kontaktTelefon?: string | null;
  ganztaegig?: boolean;
}
