from django import forms

from .models import Customer


class CustomerForm(forms.ModelForm):
    class Meta:
        model = Customer
        fields = [
            'customer_type',
            'status',
            'first_name',
            'last_name',
            'company_name',
            'email',
            'phone',
            'address_line1',
            'address_line2',
            'postal_code',
            'city',
            'country',
            'notes',
            'owner',
            'tags',
        ]
        labels = {
            'customer_type': 'Type',
            'status': 'Statut',
            'first_name': 'Prenom',
            'last_name': 'Nom',
            'company_name': 'Societe',
            'email': 'Email',
            'phone': 'Telephone',
            'address_line1': 'Adresse ligne 1',
            'address_line2': 'Adresse ligne 2',
            'postal_code': 'Code postal',
            'city': 'Ville',
            'country': 'Pays',
            'notes': 'Notes',
            'owner': 'Proprietaire',
            'tags': 'Tags',
        }
        widgets = {
            'customer_type': forms.Select(attrs={'class': 'form-select'}),
            'status': forms.Select(attrs={'class': 'form-select'}),
            'first_name': forms.TextInput(attrs={'class': 'form-control'}),
            'last_name': forms.TextInput(attrs={'class': 'form-control'}),
            'company_name': forms.TextInput(attrs={'class': 'form-control'}),
            'email': forms.EmailInput(attrs={'class': 'form-control'}),
            'phone': forms.TextInput(attrs={'class': 'form-control'}),
            'address_line1': forms.TextInput(attrs={'class': 'form-control'}),
            'address_line2': forms.TextInput(attrs={'class': 'form-control'}),
            'postal_code': forms.TextInput(attrs={'class': 'form-control'}),
            'city': forms.TextInput(attrs={'class': 'form-control'}),
            'country': forms.TextInput(attrs={'class': 'form-control'}),
            'notes': forms.Textarea(attrs={'class': 'form-control', 'rows': 4}),
            'owner': forms.Select(attrs={'class': 'form-select'}),
            'tags': forms.SelectMultiple(attrs={'class': 'form-select', 'size': 5}),
        }

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['owner'].required = False
        self.fields['email'].required = False
        self.fields['tags'].required = False

    def clean_email(self):
        email = self.cleaned_data.get('email', '').strip()
        return email.lower()