from django import forms
from django.contrib.auth.forms import AuthenticationForm
from django.utils.translation import gettext_lazy as _
from django.core.exceptions import ValidationError
from django.forms import widgets


object_type_choices = (
    ('new', _('Новостройка')),
    ('old', _('Вторичный объект')),

)

project_type_choices = (
    ('new', _('Новостройка')),
    ('old', _('Вторичный объект')),

)


class ProjectRequestForm(forms.Form):
    # account_type = forms.ChoiceField(choices=account_type_choices, initial='sender', required=True)
    firstname = forms.CharField(label=_('Имя'), required=True)
    lastname = forms.CharField(label=_('Фамилия'), required=True)

    project_role = forms.CharField(label=_('Роль в проекте'), required=True)
    phone = forms.CharField(label=_('Телефон'), required=True)
    email = forms.EmailField(label=_('Email'), required=True)

    company_name = forms.CharField(label=_('Название компании'), required=True)
    city = forms.CharField(label=_('Город'), required=True)
    state = forms.CharField(label=_('Штат (Регион)'), required=True)
    site_url = forms.URLField(label=_('Сайт компании'), required=True)

    area = forms.IntegerField(label=_('Площадь проекта'), required=True)
    object_type = forms.ChoiceField(label=_('Тип объекта'), choices=object_type_choices, required=True)
    rates_set_D = forms.DateField(label=_('Срок действия набора ставок (приблизительный)'), required=True)
    finish_construction_D = forms.DateField(label=_('Дата окончания строительства (приблизительная)'), required=True)
    project_type = forms.ChoiceField(label=_('Тип проекта'), choices=project_type_choices, required=True)
    construction_budget = forms.IntegerField(label=_('Бюджет строительства'), required=True)

    description = forms.CharField(label=_('Описание проекта'), required=True)

    planes = forms.FileField(
        label=_('Существующие и предлагаемые планы'), required=True,
        # widget=widgets.FileInput(attrs={'multiple': True}),
        help_text=_('Пожалуйста загрузите любые существующие или предлагаемые планы, если это применимо'),
    )
    photos = forms.FileField(
        label=_('Фото'), required=True,
        # widget=widgets.FileInput(attrs={'multiple': True}),
        help_text=_('Пожалуйста загрузите любые фото, относящиеся к проекту')
    )

    documents = forms.FileField(
        label=_('Документы'), required=True,
        # widget=widgets.FileInput(attrs={'multiple': True}),
        help_text=_('Пожалуйста загрузите любые документы, относящиеся к проекту')
    )

    use_entered_contacts_for_conection = forms.BooleanField(
        label=_('Использовать данные, указанные в разделе ЛИЧНЫЕ ДАННЫЕ'), initial=True, required=True
    )

    project_person_firstname = forms.CharField(label=_('Имя'), required=False)
    project_person_lastname = forms.CharField(label=_('Фамилия'), required=False)
    project_person_role = forms.CharField(label=_('Роль в проекте'), required=False)
    project_person_phone = forms.CharField(label=_('Телефон'), required=False)

    agreement = forms.BooleanField(
        label=_('Принимаю пользовательское соглашение и принимаю условия обработки личных данных'),
        initial=False, required=True
    )

    # def clean(self):
    #     cleaned_data = super().clean()
    #     i = 0
    #     names = list(cleaned_data.keys())
    #     while i < len(names):
    #         if not cleaned_data[names[i]]:
    #             if self.fields[names[i]].required:
    #                 self.add_error(names[i], _('Обязательное поле'))
    #         i += 1
    #
    #     if cleaned_data and 'confirm_password' in cleaned_data and 'password' in cleaned_data:
    #         if cleaned_data['confirm_password'] != cleaned_data['password']:
    #             self.add_error("password", _('Пароль и подтверждение пароля не совпадают'))
    #             self.add_error("confirm_password", _('Пароль и подтверждение пароля не совпадают'))
    #
    #     if cleaned_data and 'email' in cleaned_data:
    #         users = User.objects.filter(email=cleaned_data['email'])
    #         if users:
    #             self.add_error('email', _("Пользователь с указанным email уже существует"))


