from flask_wtf import FlaskForm
from wtforms import StringField, BooleanField, TextAreaField
from wtforms.validators import DataRequired, Email, Length, Optional, Regexp


class ContactInfoMixin(FlaskForm):
    """Reusable user contact information fields."""
    name = StringField('Full Name', validators=[
        DataRequired(message="Please enter your full name."),
        Length(max=120, message="Name cannot exceed 120 characters.")
    ])
    
    email = StringField('Email Address', validators=[
        DataRequired(message="Please enter your email address."),
        Email(message="Please enter a valid email address."),
        Length(max=150, message="Email cannot exceed 150 characters.")
    ])
    
    phone = StringField('Phone / WhatsApp', validators=[
        Optional(),
        Regexp(r'^\+?[0-9\s\-]{7,30}$', message="Please enter a valid phone number.")
    ])


class BaseForm(FlaskForm):
    """Global base form enforcing privacy consent across enquiry endpoints."""
    privacy_consent = BooleanField('Consent', validators=[
        DataRequired(message="You must agree to the privacy policy to submit.")
    ])