import uuid

from django.contrib.auth.models import User
from django.db import models


class DokumentVorlage(models.Model):
    """Web-editierbare Vorlagen für generierte Dokumente (PDF, E-Mail, Berichte)."""

    KATEGORIE_CHOICES = [
        ("pdf", "PDF-Dokument"),
        ("email", "E-Mail"),
        ("bericht", "Bericht"),
        ("serienbrief", "Serienbrief"),
    ]

    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    schluessel = models.CharField(
        max_length=200,
        unique=True,
        verbose_name="Schlüssel",
        help_text="Interner Template-Pfad, z.B. pdf/bestaetigung.html",
    )
    bezeichnung = models.CharField(max_length=200, verbose_name="Bezeichnung")
    kategorie = models.CharField(
        max_length=30,
        choices=KATEGORIE_CHOICES,
        verbose_name="Kategorie",
    )
    html_inhalt = models.TextField(verbose_name="HTML-Inhalt")
    verfuegbare_variablen = models.JSONField(
        default=dict,
        blank=True,
        verbose_name="Verfügbare Variablen",
        help_text="JSON-Dokumentation der verfügbaren Template-Variablen",
    )
    zuletzt_bearbeitet_von = models.ForeignKey(
        User,
        null=True,
        blank=True,
        on_delete=models.SET_NULL,
        related_name="bearbeitete_vorlagen",
        verbose_name="Zuletzt bearbeitet von",
    )
    zuletzt_bearbeitet_am = models.DateTimeField(auto_now=True, verbose_name="Zuletzt bearbeitet")
    erstellt_am = models.DateTimeField(auto_now_add=True, verbose_name="Erstellt am")

    class Meta:
        verbose_name = "Dokument-Vorlage"
        verbose_name_plural = "Dokument-Vorlagen"
        ordering = ["kategorie", "bezeichnung"]

    def __str__(self):
        return f"{self.bezeichnung} ({self.schluessel})"
