from django import forms
from .models import CustomUser
from tenant_management.models import Client

class CustomUserForm(forms.ModelForm):
    password = forms.CharField(widget=forms.PasswordInput(), label="Senha")
    confirm_password = forms.CharField(widget=forms.PasswordInput(), label="Confirme a Senha")
    schema_name = forms.ChoiceField(choices=[], label="Schema Associado")
    email = forms.EmailField(required=True, label="E-mail")

    # ✅ Novo campo para escolher a data de expiração
    trial_expiration = forms.DateField(
        widget=forms.SelectDateWidget,
        label="Data de Expiração do Período de Teste",
        required=False
    )

    class Meta:
        model = CustomUser
        fields = ['username', 'email', 'password', 'confirm_password', 'schema_name', 'trial_expiration']

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['schema_name'].choices = [
            (client.schema_name, client.schema_name) for client in Client.objects.all()
        ]

    def clean(self):
        cleaned_data = super().clean()
        password = cleaned_data.get("password")
        confirm_password = cleaned_data.get("confirm_password")

        if password and confirm_password and password != confirm_password:
            raise forms.ValidationError("As senhas não coincidem.")
        return cleaned_data
