from dal import autocomplete
from django import forms
from farmerapp.models import CultureableName, Farmer, CatalogLandingFields
from contacts.models import ContactDetail

class CultureFilterForm(forms.Form):
    culture = forms.ModelChoiceField(queryset=CultureableName.objects.all(), empty_label="Усі культури", required=False)


class FarmerForm(forms.ModelForm):
    registration_at = forms.DateField(
        widget=forms.DateInput(attrs={'type': 'date', 'class': 'form-control'}),
        required=False
    )
    record_date = forms.DateField(
        widget=forms.DateInput(attrs={'type': 'date', 'class': 'form-control'}),
        required=False
    )
    class Meta:
        model = Farmer
        exclude = ['tripoli_farmer_id', 'catalog_machineries', 'catalog_landing_fields']
        labels = {
            'erdpou': 'ЄДРПОУ',
            'kod_pdv': 'Код ПДВ',
            'registration_at': 'Дата реєстрації',
            'district': 'Район',
            'region': 'Регіон',
            'address': 'Адреса',
            'email': 'Електронна пошта',
            'website': 'Вебсайт',
            'director': 'Директор',
            'description': 'Опис',
            'name': 'Назва',
            'short_name': 'Коротка назва',
            'atu_code': 'Код АТУ',
            'record_number': 'Номер запису',
            'record_date': 'Дата запису',
            'phone_1': 'Телефон 1',
            'phone_2': 'Телефон 2',
            'phone_3': 'Телефон 3',
            'phone_4': 'Телефон 4',
            'phone_5': 'Телефон 5',
            'phone_6': 'Телефон 6',
            'phone_7': 'Телефон 7',
            'phone_mobile_1': 'Мобільний телефон 1',
            'phone_mobile_2': 'Мобільний телефон 2',
            'phone_mobile_3': 'Мобільний телефон 3',
            'phone_mobile_4': 'Мобільний телефон 4',
            'phone_mobile_5': 'Мобільний телефон 5',
            'org_s_status': 'Статус організації',
            'landing_area': 'Площа посадки',
            'statut_kapital': 'Статутний капітал',
            'phone_mobile_1_viber': 'Мобільний телефон 1 (Viber)',
            'phone_mobile_1_telegram': 'Мобільний телефон 1 (Telegram)',
            'phone_mobile_2_viber': 'Мобільний телефон 2 (Viber)',
            'phone_mobile_2_telegram': 'Мобільний телефон 2 (Telegram)',
            'phone_mobile_3_viber': 'Мобільний телефон 3 (Viber)',
            'phone_mobile_3_telegram': 'Мобільний телефон 3 (Telegram)',
        }
        widgets = {
            'name': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Введіть назву господарства'}),
            'erdpou': forms.NumberInput(attrs={'class': 'form-control'}),
            'kod_pdv': forms.NumberInput(attrs={'class': 'form-control'}),
            'registration_at': forms.DateInput(attrs={'class': 'form-control', 'type': 'date'}),
            'district': forms.Select(attrs={'class': 'form-select'}),
            'region': forms.Select(attrs={'class': 'form-select'}),
            'address': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Введіть адресу'}),
            'email': forms.EmailInput(attrs={'class': 'form-control', 'placeholder': 'name@example.com'}),
            'website': forms.URLInput(attrs={'class': 'form-control', 'placeholder': 'www.example.com'}),
            'director': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'ПІБ керівника'}),
            'description': forms.Textarea(attrs={'class': 'form-control', 'placeholder': 'Опис господарства...'}),
            'short_name': forms.TextInput(attrs={'class': 'form-control',  'placeholder': 'Введіть коротку назву господарства'}),
            'atu_code': forms.TextInput(attrs={'class': 'form-control'}),
            'record_number': forms.TextInput(attrs={'class': 'form-control'}),
            'record_date': forms.DateInput(attrs={'class': 'form-control', 'type': 'date'}),
            'phone_1': forms.TextInput(attrs={'class': 'form-control', 'placeholder': '+38(123)234 56 78'}),
            'phone_2': forms.TextInput(attrs={'class': 'form-control', 'placeholder': '+38(123)234 56 78'}),
            'phone_3': forms.TextInput(attrs={'class': 'form-control', 'placeholder': '+38(123)234 56 78'}),
            'phone_4': forms.TextInput(attrs={'class': 'form-control', 'placeholder': '+38(123)234 56 78'}),
            'phone_5': forms.TextInput(attrs={'class': 'form-control', 'placeholder': '+38(123)234 56 78'}),
            'phone_6': forms.TextInput(attrs={'class': 'form-control', 'placeholder': '+38(123)234 56 78'}),
            'phone_7': forms.TextInput(attrs={'class': 'form-control', 'placeholder': '+38(123)234 56 78'}),
            'phone_mobile_1': forms.TextInput(attrs={'class': 'form-control', 'placeholder': '+38(123)234 56 78'}),
            'phone_mobile_2': forms.TextInput(attrs={'class': 'form-control', 'placeholder': '+38(123)234 56 78'}),
            'phone_mobile_3': forms.TextInput(attrs={'class': 'form-control', 'placeholder': '+38(123)234 56 78'}),
            'phone_mobile_4': forms.TextInput(attrs={'class': 'form-control', 'placeholder': '+38(123)234 56 78'}),
            'phone_mobile_5': forms.TextInput(attrs={'class': 'form-control', 'placeholder': '+38(123)234 56 78'}),
            'org_s_status': forms.TextInput(attrs={'class': 'form-control'}),
            'landing_area': forms.NumberInput(attrs={'class': 'form-control', 'placeholder': 'га'}),
            'statut_kapital': forms.NumberInput(attrs={'class': 'form-control', 'placeholder': 'грн'}),
            'phone_mobile_1_viber': forms.TextInput(attrs={'class': 'form-control', 'placeholder': '+38(123)234 56 78'}),
            'phone_mobile_1_telegram': forms.TextInput(attrs={'class': 'form-control', 'placeholder': '+38(123)234 56 78'}),
            'phone_mobile_2_viber': forms.TextInput(attrs={'class': 'form-control', 'placeholder': '+38(123)234 56 78'}),
            'phone_mobile_2_telegram': forms.TextInput(attrs={'class': 'form-control', 'placeholder': '+38(123)234 56 78'}),
            'phone_mobile_3_viber': forms.TextInput(attrs={'class': 'form-control', 'placeholder': '+38(123)234 56 78'}),
            'phone_mobile_3_telegram': forms.TextInput(attrs={'class': 'form-control', 'placeholder': '+38(123)234 56 78'}),
        }


class LandingFieldForm(forms.ModelForm):
    class Meta:
        model = CatalogLandingFields
        fields = '__all__'  # Аналогічно, можете вибрати конкретні поля для включення


class ContactDetailForm(forms.ModelForm):
    class Meta:
        model = ContactDetail
        fields = ['contact_type', 'value']
        labels = {
            'contact_type': 'Тип контакту',
            'value': 'Значення',
        }
        widgets = {
            'contact_type': forms.Select(attrs={'class': 'form-control'}),
            'value': forms.TextInput(attrs={'class': 'form-control'}),
        }


class CultureFilterForm(forms.Form):
    selected_culture_names = forms.ModelMultipleChoiceField(
        queryset=CultureableName.objects.filter(active=True),
        widget=autocomplete.ModelSelect2Multiple(
            url='culture-autocomplete',
            attrs={
                'data-placeholder': 'Введіть назву культури...',
                'data-minimum-input-length': 1,
            }
        ),
        required=False,
        label='Культури'
    )