// ---------------------------------------------------------------------------
// Frontend events types — mirrors backend events model
// ---------------------------------------------------------------------------

export interface WiederholungConfig {
  typ: 'wöchentlich' | 'zweiwöchentlich' | 'monatlich_datum' | 'monatlich_erster_wochentag' | 'monatlich_letzter_wochentag';
  intervall?: number;
  bis: string; // YYYY-MM-DD
  wochentag?: number; // 0=Mon...6=Sun
}

export interface VeranstaltungKategorie {
  id: string;
  name: string;
  beschreibung?: string | null;
  farbe: string; // hex color e.g. '#1976d2'
  icon?: string | null; // MUI icon name
  zielgruppen: string[];
  alle_gruppen: boolean;
  erstellt_am: string;
  aktualisiert_am: string;
}

export interface VeranstaltungListItem {
  id: string;
  titel: string;
  beschreibung?: string | null;
  ort?: string | null;
  kategorie_id?: string | null;
  kategorie_name?: string | null;
  kategorie_farbe?: string | null;
  kategorie_icon?: string | null;
  datum_von: string; // ISO string
  datum_bis: string; // ISO string
  ganztaegig: boolean;
  zielgruppen: string[];
  alle_gruppen: boolean;
  abgesagt: boolean;
  anmeldung_erforderlich: boolean;
  wiederholung?: WiederholungConfig | null;
  wiederholung_parent_id?: string | null;
}

export interface Veranstaltung extends VeranstaltungListItem {
  ort_url?: string | null;
  max_teilnehmer?: number | null;
  anmeldung_bis?: string | null;
  erstellt_von: string;
  erstellt_von_name?: string | null;
  abgesagt_grund?: string | null;
  abgesagt_am?: string | null;
  erstellt_am: string;
  aktualisiert_am: string;
  wiederholung?: WiederholungConfig | null;
  wiederholung_parent_id?: string | null;
}

export interface GroupInfo {
  id: string;
  label: string;
}

export interface CreateVeranstaltungInput {
  titel: string;
  beschreibung?: string | null;
  ort?: string | null;
  ort_url?: string | null;
  kategorie_id?: string | null;
  datum_von: string; // ISO
  datum_bis: string; // ISO
  ganztaegig: boolean;
  zielgruppen: string[];
  alle_gruppen: boolean;
  max_teilnehmer?: number | null;
  anmeldung_erforderlich: boolean;
  anmeldung_bis?: string | null;
  wiederholung?: WiederholungConfig | null;
}

export interface ConflictEvent {
  id: string;
  titel: string;
  datum_von: string; // ISO
  datum_bis: string; // ISO
  kategorie_name: string | null;
}
