from flask_wtf import FlaskForm
from wtforms import StringField, TextAreaField, SelectField
from wtforms.validators import InputRequired, Email, Length, Optional, DataRequired

class ContactForm(FlaskForm):
    nombre = StringField(
        "Nombre", validators=[InputRequired(message="Este campo es obligatorio"), Length(max=100, message="Máximo 100 caracteres")]
    )
    
    apellido = StringField(
        "Apellido", validators=[InputRequired(message="Este campo es obligatorio"), Length(max=100, message="Máximo 100 caracteres")]
    )
    
    email = StringField(
        "Email", validators=[InputRequired(message="Este campo es obligatorio"), Email(message="Ingresa un email válido"), Length(max=120)]
    )

    estado = SelectField("Estado", choices=[
        ("", "Selecciona tu Estado *"),  
        ('Aguascalientes', 'Aguascalientes'), 
        ('Baja California', 'Baja California'), 
        ('Baja California Sur', 'Baja California Sur'), 
        ('Campeche', 'Campeche'), 
        ('Chiapas', 'Chiapas'), 
        ('Chihuahua', 'Chihuahua'), 
        ('Ciudad de México', 'Ciudad de México'), 
        ('Coahuila', 'Coahuila'), 
        ('Colima', 'Colima'), 
        ('Durango', 'Durango'), 
        ('Estado de México', 'Estado de México'), 
        ('Guanajuato', 'Guanajuato'), 
        ('Guerrero', 'Guerrero'), 
        ('Hidalgo', 'Hidalgo'), 
        ('Jalisco', 'Jalisco'), 
        ('Michoacán', 'Michoacán'), 
        ('Morelos', 'Morelos'), 
        ('Nayarit', 'Nayarit'), 
        ('Nuevo León', 'Nuevo León'), 
        ('Oaxaca', 'Oaxaca'), 
        ('Puebla', 'Puebla'), 
        ('Querétaro', 'Querétaro'), 
        ('Quintana Roo', 'Quintana Roo'), 
        ('San Luis Potosí', 'San Luis Potosí'), 
        ('Sinaloa', 'Sinaloa'), 
        ('Sonora', 'Sonora'), 
        ('Tabasco', 'Tabasco'), 
        ('Tamaulipas', 'Tamaulipas'), 
        ('Tlaxcala', 'Tlaxcala'), 
        ('Veracruz', 'Veracruz'), 
        ('Yucatán', 'Yucatán'), 
        ('Zacatec', 'Zacatecas')
    ], validators=[DataRequired(message="Debes seleccionar un estado.")],)

    
    num_tel = StringField(
        "Número telefónico", validators=[InputRequired(message="Número requerido"), Length(min=8, max=20, message="Número inválido")]
    )
    
    size_co = SelectField( "Tamaño empresa", choices=[
        ("", "Tamaño de la Empresa *"),
        ("1 - 10", "1 - 20"),
        ("10 - 50", "21 - 50"),
        ("50 - 100", "51 - 100"),
        ("101 - 149", "101 - 149"),
        ("150 - 500", "150 - 500"),
        ("501 - 799", "501 - 799"),
        ("800 - 5,000", "800 - 5,000"),
        ("5,000 - 10,000", "5,001 - 10,000"),
        ("10,000+", "10,000+")
    ], validators=[DataRequired(message="Debes seleccionar el tamaño de la empresa.")],)


    rol_contacto = SelectField( "Rol desempeñado", choices=[
        ("", "Te desempeñas en * "),
        ('Capacitaciones', 'Capacitaciones'), 
        ('Gerente de Operaciones', 'Gerente de Operaciones'), 
        ('Gerente de TI', 'Gerente de TI'), 
        ('Nómina', 'Nómina'), 
        ('Desarrollo Organizacional', 'Desarrollo Organizacional'), 
        ('Reclutamiento y selección', 'Reclutamiento y selección'), 
        ('Gerencia de Recursos Humanos', 'Gerencia de Recursos Humanos'), 
        ('Finanzas / Gerencia', 'Finanzas / Gerencia'), 
        ('Dueño de mi propio negocio', 'Dueño de mi propio negocio'), 
        ('Estudiante', 'Estudiante'), 
        ('Otro', 'Otro')
    ], validators=[DataRequired(message="Debes selecionar tu rol.")],)

    industry_type = SelectField( "Sector", choices=[
        ("", "Industria a la que pertenece la empresa *"),
        ('Agricola', 'Agricola'), 
        ('Alimentos', 'Alimentos'), 
        ('Automotriz', 'Automotriz'), 
        ('Comercio', 'Comercio'), 
        ('Comunicaciones', 'Comunicaciones'), 
        ('Construcción', 'Construcción'), 
        ('Consultora', 'Consultora'), 
        ('Educación', 'Educación'), 
        ('Empresas B', 'Empresas B'), 
        ('Energia', 'Energia'), 
        ('Entretenimiento', 'Entretenimiento'), 
        ('Financiera', 'Financiera'), 
        ('Fundación', 'Fundación'), 
        ('Holding', 'Holding'), 
        ('Hoteleria', 'Hoteleria'), 
        ('Legal', 'Legal'), 
        ('Logistica', 'Logistica'), 
        ('Manufacturera', 'Manufacturera'), 
        ('Marketing', 'Marketing'), 
        ('Minera', 'Minera'), 
        ('Otra', 'Otra'), 
        ('Sector Público', 'Sector Público'), 
        ('Restoranes/Cafeteria', 'Restoranes/Cafeteria'), 
        ('RRHH', 'RRHH'), 
        ('Salud', 'Salud'), 
        ('Seguridad', 'Seguridad'), 
        ('Servicios', 'Servicios'), 
        ('Tecnología', 'Tecnología'), 
        ('Transporte', 'Transporte'), 
        ('Utilities (gas, agua, electricidad)', 'Utilities (gas, agua, electricidad)')
    ], validators=[DataRequired(message="Selecione una propiedad.")],)
    
    tipo_req = TextAreaField(
        "Objetivo del contacto", validators=[InputRequired(message="Describe brevemente tu necesidad"), Length(min=10, max=500, message="Mínimo 10 caracteres, máximo 500")]
    )