import tomllib

import tomli_w
from fastapi import Depends
from pydantic import BaseModel

from .config import Config, get_config
from .dav.webdav import WebDAV


class DoorSaved(BaseModel):
    # Tag, an dem die Tür aufgeht
    day: int

    # Koordinaten für zwei Eckpunkte
    x1: int
    y1: int
    x2: int
    y2: int


type DoorsSaved = list[DoorSaved]


class CalendarConfig(BaseModel):
    # Dateiname Hintergrundbild
    background: str = "adventskalender.jpg"

    # Dateiname Favicon
    favicon: str = "favicon.png"

    # Türen für die UI
    doors: DoorsSaved = []

    async def change(self, cfg: Config) -> None:
        """
        Kalender Konfiguration ändern
        """

        await WebDAV.write_str(
            path=f"files/{cfg.calendar}",
            content=tomli_w.dumps(self.model_dump()),
        )


async def get_calendar_config(
    cfg: Config = Depends(get_config),
) -> CalendarConfig:
    """
    Kalender Konfiguration lesen
    """

    txt = await WebDAV.read_str(path=f"files/{cfg.calendar}")
    return CalendarConfig.model_validate(tomllib.loads(txt))
