using Microsoft.AspNetCore.Mvc.RazorPages;

namespace Nalu.Web.Pages.Validadores;

public class IndexModel : PageModel
{
    public record ComingSoonItem(string Icon, string Slug, string Description);

    public IReadOnlyList<ValidatorCard> Brazilian { get; } =
    [
        new("🆔", "validate_cpf",      "Valida CPF com mod 11. Formata XXX.XXX.XXX-XX.",              3),
        new("📮", "validate_cep",      "Extrai CEP e retorna endereço enriquecido.",                          3),
        new("📱", "validate_phone_br", "Extrai telefone com DDD. Valida DDDs ANATEL.",                 3),
        new("🏢", "validate_cnpj",     "Valida CNPJ com mod 11. Formata XX.XXX.XXX/XXXX-XX.",         3),
        new("🚗", "validate_plate_br", "Placa Mercosul e formato antigo. Aceita por extenso.",         3),
    ];

    public IReadOnlyList<ValidatorCard> Universal { get; } =
    [
        new("✉️", "validate_email",         "Extrai email e corrige typos de domínio (gmail→gmail.com).",   3),
        new("🌍", "validate_postal_code",   "Código postal internacional (não CEP).",                       3),
        new("🔤", "validate_name",           "Extrai nome ou apelido. Primeiro nome sem sobrenome é aceito.", 3),
        new("📝", "validate_full_name",     "Extrai nome completo com sobrenome. Exige ao menos duas palavras.", 3),
        new("☑️", "validate_yes_no",        "Detecta sim/não em qualquer idioma e forma indireta.",          3),
        new("🎂", "validate_birthdate",     "Data de nascimento em qualquer formato. Detecta menores.",      3),
        new("🤝", "validate_handoff",       "Detecta intenção de falar com humano. Classifica urgência.",    3),
        new("🚫", "validate_cancel_intent", "Diferencia cancelamento de serviço vs operação atual.",         3),
        new("🏢", "validate_company_name",  "Extrai nome de empresa. Detecta sufixos legais.",               3),
        new("🧠", "validate_reply",         "Analisa contexto conversacional. Detecta contrapropostas, handoffs, cancelamentos.", 5, IsNew: true),
    ];

    public IReadOnlyList<ComingSoonItem> ComingSoonUniversal { get; } =
    [
        new("📅", "date-relative",              "\"amanhã\", \"semana que vem\", \"dia 15\""),
        new("🕐", "time",                        "\"de tardezinha\", \"lá pelas 3\", \"after lunch\""),
        new("📍", "address-full",               "Endereço completo extraído e estruturado"),
        new("💰", "currency-amount",            "Valores monetários em qualquer moeda"),
        new("🔢", "number-in-context",          "Números que mudam de sentido pelo contexto"),
        new("👥", "count-people",               "\"eu e minha esposa\" → 2 pessoas"),
        new("⭐", "rating",                      "\"uns 7 eu acho\" → nota 7"),
        new("😤", "sentiment",                   "Detecta insatisfação antes do handoff"),
        new("🎯", "preference",                  "\"o do meio\" → extrai opção B"),
        new("✅", "confirmation-with-changes",  "\"sim mas é 200\" → confirma parcial"),
    ];

    public IReadOnlyList<ComingSoonItem> ComingSoonBrazilian { get; } =
    [
        new("💰", "amount-brl",    "Valores em R$ com contexto"),
        new("🔑", "pix-key",       "Chave Pix (CPF, email, telefone, aleatória)"),
        new("📋", "renavam",        "RENAVAM de veículo"),
        new("📋", "ie-by-state",   "Inscrição Estadual com validação por UF"),
        new("📋", "pis-nis",        "PIS/NIS/PASEP"),
    ];

    public void OnGet() { }
}
