using Microsoft.AspNetCore.Mvc.RazorPages;

namespace Nalu.Web.Pages.Validadores;

public class ReplyModel : PageModel
{
    public record ReplyTypeCard(string Type, string Label, string Example);
    public record ExampleCard(string Label, string AgentMessage, string UserReply, string ExpectedType, string? Note = null);

    public IReadOnlyList<ReplyTypeCard> ReplyTypes { get; } =
    [
        new("answer",           "Resposta direta",        "\"Sim, meu nome é João Silva\""),
        new("question",         "Pergunta de volta",      "\"Que horas vocês atendem?\""),
        new("counter_proposal", "Contraproposta",         "\"Bora em 48?\" (após oferta de 20x)"),
        new("confirmation",     "Confirmação positiva",   "\"Pode mandar\", \"Ok\", \"Bora\""),
        new("rejection",        "Rejeição",               "\"Não obrigado\", \"Não quero\""),
        new("off_topic",        "Fora do tópico",         "\"Vocês vendem seguro?\" (após pedir CPF)"),
        new("greeting",         "Saudação",               "\"Bom dia!\", \"Oi\""),
        new("handoff",          "Quer falar com humano",  "\"Prefiro falar com alguém de verdade\""),
        new("cancel",           "Quer cancelar",          "\"Para, cancela isso\", \"Quero sair\""),
        new("unclear",          "Ambíguo",                "\"Acho que sim\" (muito dúbio)"),
    ];

    public IReadOnlyList<ExampleCard> Examples { get; } =
    [
        new("Contraproposta de parcelas",
            "Posso parcelar em 20x de R$100. Topa?",
            "Bora em 48?",
            "counter_proposal",
            "48 é quantidade de parcelas, não R$48"),
        new("Confirmação simples",
            "Seu pedido ficou em R$250. Confirma?",
            "Pode mandar",
            "confirmation"),
        new("Pergunta de volta",
            "Quer agendar pra terça?",
            "Que horas vocês atendem?",
            "question"),
        new("Número ambíguo em contexto de endereço",
            "Confirma o endereço Rua das Flores, 100?",
            "É 200",
            "answer",
            "200 é o número do endereço, não R$200"),
        new("Quer falar com humano",
            "Posso te ajudar a escolher o plano ideal.",
            "Prefiro falar com alguém de verdade",
            "handoff"),
        new("Rejeição educada",
            "Temos um plano premium por R$99/mês. Interesse?",
            "Não, obrigado. Tá caro pra mim",
            "rejection"),
        new("Off-topic",
            "Qual seu CPF para consulta?",
            "Vocês vendem seguro de carro?",
            "off_topic"),
        new("Saudação sem conteúdo",
            "Boa tarde! Em que posso ajudar?",
            "Boa tarde!",
            "greeting"),
    ];

    public void OnGet() { }
}
