from django import forms

from ..models import Destinataer, DokumentLink, Foerderung


class FoerderungForm(forms.ModelForm):
    """Form für das Erstellen und Bearbeiten von Förderungen"""

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        # Add empty option for optional fields
        self.fields["verwendungsnachweis"].empty_label = (
            "--- Kein Dokument verknüpfen ---"
        )
        # Ensure destinataer has proper choices
        from django.utils import timezone

        from ..models import Destinataer, DokumentLink

        self.fields["destinataer"].queryset = Destinataer.objects.all().order_by(
            "nachname", "vorname"
        )
        self.fields["verwendungsnachweis"].queryset = (
            DokumentLink.objects.all().order_by("titel")
        )
        # Set current year as default for new forms
        if not self.instance.pk:
            self.fields["jahr"].initial = timezone.now().year

    class Meta:
        model = Foerderung
        fields = [
            "destinataer",
            "jahr",
            "betrag",
            "kategorie",
            "status",
            "antragsdatum",
            "entscheidungsdatum",
            "verwendungsnachweis",
            "bemerkungen",
        ]
        widgets = {
            "destinataer": forms.Select(attrs={"class": "form-select"}),
            "jahr": forms.NumberInput(attrs={"class": "form-control"}),
            "betrag": forms.NumberInput(
                attrs={"class": "form-control", "step": "0.01"}
            ),
            "kategorie": forms.Select(attrs={"class": "form-select"}),
            "status": forms.Select(attrs={"class": "form-select"}),
            "antragsdatum": forms.DateInput(
                attrs={"class": "form-control", "type": "date"}
            ),
            "entscheidungsdatum": forms.DateInput(
                attrs={"class": "form-control", "type": "date"}
            ),
            "verwendungsnachweis": forms.Select(attrs={"class": "form-select"}),
            "bemerkungen": forms.Textarea(attrs={"class": "form-control", "rows": 3}),
        }

        labels = {
            "destinataer": "Destinatär",
            "verwendungsnachweis": "Verknüpftes Dokument",
            "bemerkungen": "Bemerkungen/Beschreibung",
            "antragsdatum": "Antragsdatum",
            "entscheidungsdatum": "Entscheidungsdatum",
        }

        help_texts = {
            "verwendungsnachweis": "Optionale Verknüpfung zu einem Dokument aus dem Paperless-System",
            "entscheidungsdatum": "Datum der Bewilligung/Ablehnung (optional)",
            "bemerkungen": "Zusätzliche Informationen zur Förderung",
        }
