from django import forms

from accounts.models import User


class SignupForm(forms.Form):
    name = forms.CharField(
        label="Nome",
        max_length=120,
        min_length=2,
        widget=forms.TextInput(attrs={"class": "form-control", "placeholder": "Nome completo"}),
    )
    email = forms.EmailField(
        label="E-mail",
        widget=forms.EmailInput(attrs={"class": "form-control", "placeholder": "E-mail"}),
    )
    password = forms.CharField(
        label="Senha",
        widget=forms.PasswordInput(
            attrs={"class": "form-control", "placeholder": "Senha (mín. 8 caracteres)"}
        ),
        min_length=8,
    )
    password_confirm = forms.CharField(
        label="Confirmar senha",
        widget=forms.PasswordInput(
            attrs={"class": "form-control", "placeholder": "Confirmar senha"}
        ),
    )

    def clean_email(self):
        email = self.cleaned_data["email"].lower().strip()
        if User.objects.filter(email=email).exists():
            raise forms.ValidationError("Este e-mail já está cadastrado.")
        return email

    def clean(self):
        data = super().clean()
        if data.get("password") != data.get("password_confirm"):
            raise forms.ValidationError("As senhas devem ser iguais.")
        return data


class LoginForm(forms.Form):
    email = forms.EmailField(
        label="E-mail",
        widget=forms.EmailInput(attrs={"class": "form-control", "placeholder": "E-mail"}),
    )
    password = forms.CharField(
        label="Senha",
        widget=forms.PasswordInput(attrs={"class": "form-control", "placeholder": "Senha"}),
    )
