# forms.py
from django import forms
from .models import ContactPerson, ContactDetail
from farmerapp.models import Farmer
from django.forms import inlineformset_factory
from dal import autocomplete



class ContactDetailForm(forms.ModelForm):
    class Meta:
        model = ContactDetail
        fields = ['contact_type', 'value']
        widgets =  {
            'contact_type': forms.Select(attrs={'class': 'form-select'}),
            'value': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Введіть контактні дані'})
        }


class ContactPersonForm(forms.ModelForm):
    farmers = forms.ModelMultipleChoiceField(
        queryset=Farmer.objects.all(),
        required=False,
        widget=autocomplete.ModelSelect2Multiple(
            url='dataapp:farmer-autocomplete',
            attrs={
                'class': 'form-control',
                'data-placeholder': 'Виберіть фермерські господарства'
            }
        )
    )

    class Meta:
        model = ContactPerson
        fields = ['surname', 'name', 'father_name', 'position', 'birth_date', 'farmers']
        labels = {
            'name': 'Ім\'я',
            'surname': 'Прізвище',
            'father_name': 'По батькові',
            'position': 'Посада',
            'birth_date': 'Дата народження',
            'farmers': 'Фермерські господарства',
        }
        widgets = {
            'name': forms.TextInput(attrs={'class': 'form-control'}),
            'surname': forms.TextInput(attrs={'class': 'form-control'}),
            'father_name': forms.TextInput(attrs={'class': 'form-control'}),
            'position': forms.TextInput(attrs={'class': 'form-control'}),
            'birth_date': forms.DateInput(attrs={'class': 'form-control', 'type': 'date'}),
        }

        def __init__(self, *args, **kwargs):
            super(ContactPersonForm, self).__init__(*args, **kwargs)
            if self.instance and self.instance.pk:
                self.fields['farmers'].initial = self.instance.farmers.all()


ContactDetailFormSet = inlineformset_factory(
    ContactPerson,
    ContactDetail,
    fields=('contact_type', 'value'),
    extra=1,
    can_delete=True,
    widgets={
        'contact_type': forms.Select(attrs={'class': 'form-control'}),
        'value': forms.TextInput(attrs={'class': 'form-control'}),
    },
    labels={
        'DELETE': 'Видалити',
    }
)


class FarmerContactForm(forms.Form):
    farmer = forms.ModelChoiceField(
        queryset=Farmer.objects.all(),
        widget=autocomplete.ModelSelect2(
            url='farmer-autocomplete',  # Це має відповідати вашому URL у urls.py
            attrs={
                'class': 'form-control',
                'data-placeholder': 'Внесіть фермера'
            }
        ),
        required=False
    )

# Create a formset for ContactDetail


ContactDetailFormSet = inlineformset_factory(ContactPerson, ContactDetail, form=ContactDetailForm, extra=1)


class AddExistingContactPersonForm(forms.Form):
    contact_person = forms.ModelChoiceField(
        queryset=ContactPerson.objects.all(),
        widget=autocomplete.ModelSelect2(
            url='contacts:contact-person-autocomplete',
            attrs={
                'class': 'form-control',
                'data-placeholder': 'Виберіть контактну особу',
                'data-minimum-input-length': '0',
            }
        )
    )
