"""Hilfsfunktionen zum Laden konfigurierbarer Kategorie-Optionen."""

from sqlalchemy.orm import Session

from models.kategorie_option import KategorieOption


def get_optionen(db: Session, gruppe: str, nur_aktive: bool = True) -> list[KategorieOption]:
    q = db.query(KategorieOption).filter(KategorieOption.gruppe == gruppe)
    if nur_aktive:
        q = q.filter(KategorieOption.aktiv == True)
    return q.order_by(KategorieOption.position, KategorieOption.label).all()


def get_optionen_dict(db: Session, gruppe: str) -> dict[str, str]:
    """Gibt {wert: label} zurueck."""
    return {o.wert: o.label for o in get_optionen(db, gruppe)}


def get_farben_dict(db: Session, gruppe: str) -> dict[str, str]:
    """Gibt {wert: farbe} zurueck."""
    return {o.wert: o.farbe for o in get_optionen(db, gruppe) if o.farbe}


def get_icons_dict(db: Session, gruppe: str) -> dict[str, str]:
    """Gibt {wert: icon} zurueck."""
    return {o.wert: o.icon for o in get_optionen(db, gruppe) if o.icon}


def alle_gruppen(db: Session) -> list[str]:
    return [r[0] for r in db.query(KategorieOption.gruppe).distinct().order_by(KategorieOption.gruppe).all()]


# Menschenlesbare Gruppennamen
GRUPPEN_LABELS = {
    "aktivitaet_art": "Aktivität - Art",
    "aktivitaet_status": "Aktivität - Status",
    "kampagne_typ": "Kampagne - Typ",
    "kampagne_status": "Kampagne - Status",
    "kampagne_kontakt_status": "Kampagne-Kontakt - Status",
    "veranstaltung_typ": "Veranstaltung - Typ",
    "veranstaltung_status": "Veranstaltung - Status",
    "teilnehmer_rolle": "Teilnehmer - Rolle",
    "teilnehmer_status": "Teilnehmer - Status",
    "beziehung_typ": "Beziehung - Typ",
    "kontakt_anrede": "Kontakt - Anrede",
    "kontakt_titel": "Kontakt - Titel",
    "spende_typ": "Spende - Typ",
    "spende_zahlungsart": "Spende - Zahlungsart",
    "spende_quittung": "Spende - Quittung",
    "app_einstellungen": "App-Einstellungen",
}
