package model;

import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

/**
 * Zentrale Datenquelle für alle statischen Auswahl-Listen (ComboBox-Optionen)
 * und standardisierte Mappings (z. B. CSV-Spalten zu SQLite-Feldern).
 */
public final class DataModels {

    private DataModels() {
        // Utility class: no instances
    }

    /** CSV → SQLite Spalten-Mapping (zentrale Definition, Reihenfolge garantiert) */
    public static Map<String, String> getCsvToSqliteMapping() {
        Map<String, String> map = new LinkedHashMap<>();
        map.put("ID", "id");
        map.put("Datum", "datum");
        map.put("Startzeit", "startzeit");
        map.put("Typ", "veranstaltungstyp");
        map.put("Titel", "titel");       
        map.put("Thema", "inhaltstyp");
        map.put("Modus", "modus");        
        map.put("Dauer (Min)", "dauer_minuten");
        map.put("Anzahl TN", "teilnehmende_anzahl");
        map.put("Typ TN", "teilnehmende_typ");        
        map.put("Von (PHID)", "durchfuehrende_person");
        map.put("Ausfall", "ausgefallen_grund");
        map.put("Kommentar", "kommentar");
        map.put("Bewertung (1–6)", "evaluation");   // <-- added line
        return map;
    }

    /** Veranstaltungstypen (z. B. Schulung, Führung) */
    public static List<String> getVeranstaltungstypen() {
        return Arrays.asList("schulung", "fuehrung", "coffeelecture", "selbstlerneinheit");
    }

    /** Modus der Veranstaltung (Präsenz, Online, Selbstlerneinheit) */
    public static List<String> getModi() {
        return Arrays.asList("online", "praesenz");
    }

    /** Typ der Teilnehmenden */
    public static List<String> getTeilnehmendeTypen() {
        return Arrays.asList("studierende", "mitarbeitende", "externe", "sonstige", "gemischt");
    }

    /** Gründe für ausgefallene Veranstaltungen */
    public static List<String> getAusgefallenGruende() {
        return Arrays.asList(
                "",
                "keine anmeldung",
                "weniger als 3 anmeldungen",
                "nicht erschienen",
                "sonstiger grund"
        );
    }

}
