from django import forms
from .models import ContactUs

import re


class ContactUsForm(forms.ModelForm):

    email = forms.EmailField(
        label='ایمیل',
        required=True,
        error_messages={
            'required': 'لطفاً ایمیل خود را وارد کنید.',
            'invalid': 'ایمیل وارد شده معتبر نیست.',
        },
        widget=forms.EmailInput(attrs={
            'class': 'form-control email-input',
            'placeholder': 'ایمیل شما',
            
        })
    )

    class Meta:
        model = ContactUs
        fields = ['full_name', 'email', 'subject', 'message']

        widgets = {
            'full_name': forms.TextInput(attrs={
                'class': 'form-control',
                'placeholder': 'نام و نام خانوادگی'
            }),
            
            

            'subject': forms.TextInput(attrs={
                'class': 'form-control',
                'placeholder': 'موضوع پیام'
            }),

            'message': forms.Textarea(attrs={
                'class': 'form-control',
                'rows': 5,
                'placeholder': 'متن پیام'
            }),
        }

        labels = {
            'full_name': 'نام و نام خانوادگی',
            'subject': 'موضوع',
            'message': 'متن پیام',
        }

        error_messages = {
            'full_name': {
                'required': 'نام و نام خانوادگی اجباری است.'
            }
        }

    def clean_email(self):
        email = self.cleaned_data.get('email')

        fake_domains = [
            'mailinator.com',
            'tempmail.com',
            'yopmail.com',
            'fakeinbox.com',
            'trashmail.com'
        ]

        domain = email.split('@')[-1].lower()

        if domain in fake_domains:
            raise forms.ValidationError('لطفاً از ایمیل واقعی استفاده کنید.')

        if re.search(r"[<>{}()$%^&*]", email):
            raise forms.ValidationError('ایمیل وارد شده معتبر نیست.')

        return email



class ContactUsModelForm(forms.ModelForm):
    email = forms.EmailField(
        required=True,
        error_messages={
            'required': 'ایمیل اجباری است.',
            'invalid': 'ایمیل وارد شده معتبر نیست.',
        }
    )

    class Meta:
        model = ContactUs
        fields = ['full_name', 'email', 'subject', 'message']

        widgets = {
            'full_name': forms.TextInput(attrs={'class': 'form-control'}),
            'email': forms.EmailInput(attrs={
                'class': 'form-control',
                'placeholder': 'ایمیل شما',
                'required': False,
            }),
            'subject': forms.TextInput(attrs={'class': 'form-control'}),
            'message': forms.Textarea(attrs={'class': 'form-control', 'rows': 5}),
        }

        labels = {
            'full_name': 'نام و نام خانوادگی شما',
            'email': 'ایمیل شما',
            'subject': 'موضوع پیام',
            'message': 'متن پیام',
        }

        error_messages = {
            'full_name': {
                'required': 'نام و نام خانوادگی اجباری می باشد.'
            }
        }
