from flask_wtf import FlaskForm
from wtforms import StringField, DateField, SelectField
from wtforms.validators import DataRequired, Optional, Length


class ProfileForm(FlaskForm):
    full_name = StringField("Nombre completo", validators=[DataRequired(), Length(max=255)])
    relationship_type = SelectField(
        "Relación con esta persona",
        choices=[
            ("self", "Yo mismo/a"),
            ("hijo_a", "Mi madre/padre (soy su hijo/a)"),
            ("conyuge", "Mi cónyuge o pareja"),
            ("cuidador_profesional", "Persona bajo mi cuidado profesional"),
            ("otro_familiar", "Otro familiar"),
        ],
        default="otro_familiar",
    )
    birth_date = DateField("Fecha de nacimiento", validators=[Optional()])
    national_id = StringField("Documento de identidad", validators=[Optional(), Length(max=50)])
    phone = StringField(
        "Teléfono (con código de país, ej. +57...)", validators=[Optional(), Length(max=30)]
    )
    country = StringField("País", validators=[Optional(), Length(max=60)])
    city = StringField("Ciudad", validators=[Optional(), Length(max=120)])


class EmergencyInfoForm(FlaskForm):
    emergency_contact_name = StringField(
        "Nombre del contacto de emergencia", validators=[Optional(), Length(max=255)]
    )
    emergency_contact_phone = StringField(
        "Teléfono del contacto de emergencia", validators=[Optional(), Length(max=30)]
    )
    blood_type = SelectField(
        "Tipo de sangre",
        choices=[("", "Desconocido")] + [(t, t) for t in ("O+", "O-", "A+", "A-", "B+", "B-", "AB+", "AB-")],
        validators=[Optional()],
    )


class AssignPendingDocumentForm(FlaskForm):
    patient_id = SelectField("¿A quién pertenece este documento?", coerce=int, validators=[DataRequired()])
