from django import forms
from django_recaptcha.fields import ReCaptchaField

from amtracApp.models import Configuracion


class ContactForm(forms.Form):
    nombre = forms.CharField(widget=forms.TextInput(
        attrs={'class': 'form-control', 'placeholder': 'Nombre', 'required': 'required',
               'data-validation-required-message': 'Por favor ingresa tu nombre.'}))
    telefono = forms.CharField(required=False, widget=forms.TextInput(
        attrs={'class': 'form-control', 'placeholder': 'Teléfono',
               'data-validation-required-message': 'Por favor ingresa tu teléfono.'}))
    email = forms.EmailField(required=True, widget=forms.EmailInput(
        attrs={'class': 'form-control', 'placeholder': 'Email',
               'data-validation-required-message': 'Por favor ingresa tu email.'}))
    mensaje = forms.CharField(required=True, widget=forms.Textarea(
        attrs={'class': 'form-control', 'rows': 7, 'placeholder': 'Mensaje', 'required': 'required',
               'data-validation-required-message': 'Por favor ingresa tu consulta.'}))
    captcha = ReCaptchaField()

    def clean_telefono(self):
        import re
        import phonenumbers

        telefono = self.cleaned_data.get("telefono")
        if telefono:
            try:
                telefono = "".join(re.findall(r'[0-9]+', telefono))
                telefono = phonenumbers.parse(telefono, "AR")
                if not phonenumbers.is_valid_number(telefono):
                    raise forms.ValidationError('El telefono ingresado no es válido.')
                telefono = phonenumbers.format_number(telefono, phonenumbers.PhoneNumberFormat.INTERNATIONAL)

            except phonenumbers.NumberParseException:
                raise forms.ValidationError('El telefono ingresado no es válido.')

        return telefono

class CotizarForm(ContactForm):
    empresa = forms.CharField(required=False, widget=forms.TextInput(attrs={'class': 'form-control', 'required': 'required'}))
    horario = forms.CharField(required=False, widget=forms.TextInput(attrs={'class': 'form-control', 'required': 'required', 'placeholder': '¿En qué horario podemos comunicarnos?'}))