from datetime import datetime

CAMPOS_OBRIGATORIOS = ["utente", "medico", "tipo", "data", "hora_inicio", "hora_fim", "estado"]
ESTADOS = {"Marcada", "Confirmada", "Realizada", "Cancelada", "Faltou"}


def validar_consulta(data):
    for campo in CAMPOS_OBRIGATORIOS:
        if not str(data.get(campo, "")).strip():
            return False, f"O campo '{campo}' é obrigatório."

    if data.get("estado") not in ESTADOS:
        return False, "Estado inválido."

    try:
        datetime.strptime(data["data"], "%Y-%m-%d")
        datetime.strptime(data["hora_inicio"], "%H:%M")
        datetime.strptime(data["hora_fim"], "%H:%M")
    except ValueError:
        return False, "Data ou hora inválida."

    if data["hora_inicio"] >= data["hora_fim"]:
        return False, "A hora de fim tem de ser depois da hora de início."

    return True, ""


def limpar_texto(valor):
    return str(valor or "").strip()
