<?php
// webhook_cs.php - Multi-Revendedores Dinâmico (Iniciando no 14)
header('Content-Type: application/json');

require_once 'conexao.php';

$json = file_get_contents('php://input');
$dados = json_decode($json, true);
$mensagem_cliente = $dados['message'] ?? $_POST['message'] ?? '';
$mensagem_lower = strtolower(trim($mensagem_cliente));

// =========================================================
// Lê o Revendedor e a Palavra-chave do Link
// =========================================================
$dono_painel = $_GET['rev'] ?? 'admin';
$palavra_chave = strtolower(trim($_GET['palavra'] ?? 'teste cs'));

// Truque para o botão de teste do próprio aplicativo WhatsAuto funcionar
if (strpos($mensagem_lower, 'mensagem de teste') !== false) {
    $mensagem_lower = $palavra_chave; 
}

// =========================================================================
// PASSO 1: MENU DE OPERADORAS (LISTA INICIANDO EM 14)
// =========================================================================
if ($mensagem_lower === $palavra_chave) {
    try {
        $stmt = $connGeral->prepare("SELECT id, nome FROM perfil ORDER BY id ASC");
        $stmt->execute();
        $perfis = $stmt->fetchAll(PDO::FETCH_ASSOC);

        if (count($perfis) === 0) {
            echo json_encode(["reply" => "❌ Nenhuma operadora disponível no momento."]);
            exit;
        }

        // TEXTO LIMPO E SEQUENCIAL PARA O WHATSAUTO
        $texto = "📡 *MENU DE TESTES*\n\n";
        $texto .= "Escolha a operadora desejada digitando apenas o número:\n\n";
        
        $botoes_api = []; 
        $contador = 14; // AGORA COMEÇA EXATAMENTE DO 14
        
        foreach ($perfis as $perfil) {
            $texto .= "🔹 *" . $contador . "* - " . $perfil['nome'] . "\n";
            
            // Monta os botões interativos (Invisível no WhatsAuto, ativo em APIs futuras)
            $botoes_api[] = [
                "type" => "reply",
                "reply" => [
                    "id" => (string)$contador,
                    "title" => $perfil['nome']
                ]
            ];
            $contador++;
        }
        
        $texto .= "\n_Exemplo: Digite *14* para escolher a 1ª opção._";

        echo json_encode([
            "reply" => $texto,
            "buttons" => $botoes_api
        ]);
        exit;

    } catch (Exception $e) {
        echo json_encode(["reply" => "❌ Erro ao buscar operadoras."]);
        exit;
    }
}

// =========================================================================
// PASSO 2: CÉREBRO QUE GERA O TESTE BASEADO NA OPÇÃO ESCOLHIDA
// =========================================================================
$msg_limpa = trim(str_replace('#', '', $mensagem_lower));
$numero_opcao = 0;
$busca_por_nome = false;

if (is_numeric($msg_limpa)) {
    $numero_opcao = (int) $msg_limpa;
} else {
    $busca_por_nome = true;
}

if ($numero_opcao > 0 || $busca_por_nome) {
    try {
        $perfil_escolhido = null;

        if ($numero_opcao > 0) {
            // Busca todos os perfis na mesma ordem em que o menu foi gerado
            $stmt = $connGeral->prepare("SELECT id, nome, url, porta FROM perfil ORDER BY id ASC");
            $stmt->execute();
            $todos_perfis = $stmt->fetchAll(PDO::FETCH_ASSOC);

            // Calcula qual posição o cliente escolheu (Ex: Digitou 14, acessa a posição 0)
            $indice = $numero_opcao - 14; 
            
            if ($indice >= 0 && isset($todos_perfis[$indice])) {
                $perfil_escolhido = $todos_perfis[$indice];
            }
        } else {
            // Busca por nome (caso API interativa retorne o nome do botão no futuro)
            $stmt = $connGeral->prepare("SELECT id, nome, url, porta FROM perfil WHERE LOWER(nome) = ? LIMIT 1");
            $stmt->execute([$mensagem_lower]);
            $perfil_escolhido = $stmt->fetch(PDO::FETCH_ASSOC);
        }

        // Se encontrou a operadora correta, gera o teste
        if ($perfil_escolhido) {
            $numero_aleatorio = rand(1000, 9999);
            $usuario = "cs" . $numero_aleatorio;
            $senha = (string)rand(1000, 9999);
            
            $data_atual = date('Y-m-d H:i:s');
            $data_premio = time() + (48 * 3600); 

            // Salva o teste no painel usando o ID real do banco
            $stmtInsert = $connUser->prepare("INSERT INTO teste (usuario, senha, CadUser, perfil, data_cadastro, data_premio, conexao, bloqueado) VALUES (?, ?, ?, ?, ?, ?, 1, 'nao')");
            $stmtInsert->execute([$usuario, $senha, $dono_painel, $perfil_escolhido['id'], $data_atual, $data_premio]);

            $url_servidor = $perfil_escolhido['url'];
            $porta = $perfil_escolhido['porta'];
            $nome_operadora = $perfil_escolhido['nome'];
            $deskey = "01 02 03 04 05 06 07 08 09 10 11 12 13 14"; 

            $texto_mensagem = "✅ *Teste {$nome_operadora} gerado com sucesso!*\n\n";
            $texto_mensagem .= "🔗 *URL / Server:* {$url_servidor}\n";
            $texto_mensagem .= "🚪 *Porta:* {$porta}\n";
            $texto_mensagem .= "👤 *User / Nome:* {$usuario}\n";
            $texto_mensagem .= "🔑 *Pass / Senha:* {$senha}\n";
            $texto_mensagem .= "🗝️ *DES Key:* {$deskey}\n\n";
            $texto_mensagem .= "⏳ *Validade:* 48 Horas\n\n";
            $texto_mensagem .= "Insira os dados acima no seu receptor e boas emissões!";

            echo json_encode(["reply" => $texto_mensagem]);
            exit;
        } else if ($numero_opcao >= 14 && $numero_opcao <= 100) {
            // Só avisa que deu erro se ele mandou um número claramente errado fora da lista
            echo json_encode(["reply" => "❌ Opção inválida. Digite *{$palavra_chave}* para ver o menu novamente."]);
            exit;
        }

    } catch (Exception $e) {
        // Silenciado para não responder a qualquer mensagem aleatória
    }
}

echo json_encode(["reply" => ""]);
exit;
?>
