"""
Formulários — App Appointments
================================
Formulários para reserva de consultas.
"""

from django import forms
from django.utils.translation import gettext_lazy as _

from .models import Cita, Servicio


TAILWIND_INPUT = (
    "w-full px-4 py-3 border border-gray-200 rounded-xl "
    "focus:ring-2 focus:ring-rosa/20 focus:border-rosa outline-none transition-all duration-300"
)


class ReservarCitaForm(forms.Form):
    """Formulário para que o paciente reserve uma consulta."""

    servicio = forms.UUIDField(
        widget=forms.Select(attrs={
            "class": TAILWIND_INPUT,
            "id": "id_servicio",
        }),
    )
    fecha = forms.DateField(
        widget=forms.DateInput(attrs={
            "type": "date",
            "class": TAILWIND_INPUT,
            "id": "id_fecha",
        }),
    )
    hora = forms.CharField(
        widget=forms.Select(attrs={
            "class": TAILWIND_INPUT,
            "id": "id_hora",
        }),
    )
    notas = forms.CharField(
        required=False,
        widget=forms.Textarea(attrs={
            "class": TAILWIND_INPUT,
            "rows": 3,
            "placeholder": "Notas adicionais (opcional)",
            "id": "id_notas",
        }),
    )

    def clean_servicio(self):
        servicio_id = self.cleaned_data["servicio"]
        try:
            return Servicio.objects.get(id=servicio_id, is_active=True)
        except Servicio.DoesNotExist:
            raise forms.ValidationError(_("Serviço não válido."))


class NotasDoctoraForm(forms.Form):
    """Formulário para notas da doutora numa consulta."""

    notas_doctora = forms.CharField(
        required=False,
        widget=forms.Textarea(attrs={
            "class": TAILWIND_INPUT,
            "rows": 3,
            "placeholder": "Notas sobre a consulta",
        }),
    )
