<?php
// Não precisa de sessão pois rodará via servidor (CLI)
require_once 'conexao.php';

// Configuração de Fuso Horário
date_default_timezone_set('America/Sao_Paulo');

// === INÍCIO DA IDENTIFICAÇÃO DINÂMICA DO DOMÍNIO ===
// Puxa automaticamente a URL do painel logado/acessado no momento
$protocolo = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' || (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443)) ? "https" : "http";
$dominio_atual = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : "cspainel.tvsbr.top"; // Fallback para CLI puro
$url_base_painel = $protocolo . "://" . $dominio_atual;
// === FIM DA IDENTIFICAÇÃO ===

echo "--- INICIANDO PROCESSAMENTO DE COBRANÇAS ---\n";

try {
    // Tenta adicionar a coluna whatsapp nas tabelas se não existir (prevenção de erro)
    try { $connUser->query("SELECT whatsapp FROM usuario LIMIT 1"); } catch (Exception $e) { $connUser->exec("ALTER TABLE usuario ADD COLUMN whatsapp VARCHAR(20) DEFAULT NULL"); }
    try { $connUser->query("SELECT whatsapp FROM teste LIMIT 1"); } catch (Exception $e) { $connUser->exec("ALTER TABLE teste ADD COLUMN whatsapp VARCHAR(20) DEFAULT NULL"); }

    // 1. Buscar CLIENTES OFICIAIS ativos
    $stmtU = $connUser->query("SELECT 'oficial' AS tipo, nome, usuario, data_premio, CadUser, whatsapp FROM usuario WHERE bloqueado = 'nao' OR bloqueado IS NULL");
    $clientes_oficiais = $stmtU->fetchAll(PDO::FETCH_ASSOC);

    // 2. Buscar TESTES ativos
    $stmtT = $connUser->query("SELECT 'teste' AS tipo, nome, usuario, data_premio, CadUser, whatsapp FROM teste WHERE bloqueado = 'nao' OR bloqueado IS NULL");
    $clientes_testes = $stmtT->fetchAll(PDO::FETCH_ASSOC);

    // Juntar as duas listas para o robô processar tudo de uma vez
    $todos_clientes = array_merge($clientes_oficiais, $clientes_testes);

    $hoje = new DateTime();
    $hoje->setTime(0, 0, 0); // Zera as horas para comparar apenas os dias exatos
    $contagem_avisos = 0;

    foreach ($todos_clientes as $u) {
        // Se não tem whatsapp cadastrado, ignora e vai pro próximo
        if (empty($u['whatsapp'])) continue;

        // Converter data_premio para timestamp (suporta formato data ou unix)
        $venc_raw = $u['data_premio'];
        $venc_ts = is_numeric($venc_raw) ? (int)$venc_raw : strtotime(str_replace('/', '-', $venc_raw));
        
        if (!$venc_ts) continue; // Pula se a data for vazia ou inválida
        
        $data_vencimento = new DateTime();
        $data_vencimento->setTimestamp($venc_ts);
        $data_vencimento->setTime(0, 0, 0); // Zera as horas
        
        // Calcula a diferença de dias exatos
        $intervalo = $hoje->diff($data_vencimento);
        $dias_para_vencer = (int)$intervalo->format("%r%a");

        $enviar = false;
        $mensagem = "";

        // GERA O LINK DE PAGAMENTO DIRETO DO CLIENTE (Agora puxando do painel logado)
        $link_checkout = $url_base_painel . "/servidor/checkout.php?r=" . base64_encode($u['CadUser']) . "&c=" . base64_encode($u['usuario']);

        // =========================================================
        // MENSAGENS PARA CLIENTES OFICIAIS (RENOVAÇÃO)
        // =========================================================
        if ($u['tipo'] == 'oficial') {
            if ($dias_para_vencer == 3) {
                $enviar = true;
                $mensagem = "Olá, *{$u['nome']}*! 👋\n\n"
                          . "Passando para lembrar que o seu plano vence em ⏳ *3 dias*.\n\n"
                          . "👤 *Seu Usuário:* {$u['usuario']}\n\n"
                          . "Renove antecipadamente para não perder nenhum jogo, filme ou série! 📺⚽\n\n"
                          . "🌐 *Link para Pagamento Automático:*\n"
                          . "Acesse: {$link_checkout}\n\n"
                          . "💳 *Pagamento via PIX:*\n"
                          . "Chave E-mail: pix@cstopbrasil.com.br\n\n"
                          . "👉 Após realizar o pagamento, por favor *envie o comprovante aqui* para já garantirmos a sua renovação no sistema!";
            } elseif ($dias_para_vencer == 1) {
                $enviar = true;
                $mensagem = "⚠️ *ATENÇÃO, {$u['nome']}!* ⚠️\n\n"
                          . "O seu acesso vence *AMANHÃ*! ⏰\n\n"
                          . "👤 *Seu Usuário:* {$u['usuario']}\n\n"
                          . "Não fique sem os seus canais favoritos. 🍿🎬 Faça a renovação agora mesmo e garanta a sua diversão sem interrupções! 🚀\n\n"
                          . "🌐 *Link para Pagamento Automático:*\n"
                          . "Acesse: {$link_checkout}\n\n"
                          . "💳 *Pagamento via PIX:*\n"
                          . "Chave E-mail: pix@cstopbrasil.com.br\n\n"
                          . "👉 Não esqueça de *enviar o comprovante aqui* para atualizarmos o seu acesso rapidinho!";
            } elseif ($dias_para_vencer == 0) {
                $enviar = true;
                $mensagem = "🚨 *AVISO URGENTE, {$u['nome']}!* 🚨\n\n"
                          . "O seu plano de acesso *VENCE HOJE*! 🗓️\n\n"
                          . "👤 *Seu Usuário:* {$u['usuario']}\n\n"
                          . "Para evitar o corte automático do seu sinal ❌📺, pedimos que realize o pagamento o quanto antes.\n\n"
                          . "🌐 *Link para Pagamento Automático:*\n"
                          . "Acesse: {$link_checkout}\n\n"
                          . "💳 *Pagamento via PIX:*\n"
                          . "Chave E-mail: pix@cstopbrasil.com.br\n\n"
                          . "⚡ *Mande o comprovante aqui* assim que pagar para darmos baixa na hora e evitar o bloqueio da sua tela!";
            }
        } 
        // =========================================================
        // MENSAGENS PARA TESTES (CONVERSÃO DE VENDAS)
        // =========================================================
        else {
            if ($dias_para_vencer == 1) {
                $enviar = true;
                $mensagem = "Olá, *{$u['nome']}*! 👋\n\n"
                          . "O seu *TESTE GRÁTIS* vence *AMANHÃ*! ⏰\n\n"
                          . "👤 *Seu Usuário:* {$u['usuario']}\n\n"
                          . "Gostou do nosso sistema? Assine agora um de nossos planos e continue com todos os canais liberados! 🚀🍿\n\n"
                          . "🌐 *Link para Assinar Automaticamente:*\n"
                          . "Acesse: {$link_checkout}\n\n"
                          . "💳 *Assine via PIX:*\n"
                          . "Chave E-mail: pix@cstopbrasil.com.br\n\n"
                          . "👉 Após pagar, *envie o comprovante aqui* para transformarmos seu teste em um plano definitivo!";
            } elseif ($dias_para_vencer == 0) {
                $enviar = true;
                $mensagem = "🚨 *ATENÇÃO, {$u['nome']}!* 🚨\n\n"
                          . "O seu *TESTE GRÁTIS* vence *HOJE*! 🗓️\n\n"
                          . "👤 *Seu Usuário:* {$u['usuario']}\n\n"
                          . "Assine já e não perca sua programação favorita, esportes e filmes! 📺⚽\n\n"
                          . "🌐 *Link para Assinar Automaticamente:*\n"
                          . "Acesse: {$link_checkout}\n\n"
                          . "💳 *Assine via PIX:*\n"
                          . "Chave E-mail: pix@cstopbrasil.com.br\n\n"
                          . "⚡ *Mande o comprovante aqui* e ativaremos o seu plano mensal na mesma hora!";
            }
        }

        if ($enviar) {
            // =========================================================
            // DISPARO REAL VIA EVOLUTION API
            // =========================================================
            $url_api = ""; $instancia = ""; $apikey = "";
            
            // Busca a API do Dono/Revendedor desse cliente
            try {
                $stmtWpp = $connGeral->prepare("SELECT api_url, api_key, instancia FROM config_api_whatsapp WHERE usuario = ? LIMIT 1");
                $stmtWpp->execute([$u['CadUser']]);
                $wpp_all = $stmtWpp->fetch(PDO::FETCH_ASSOC);
                
                if ($wpp_all) {
                    $url_api = $wpp_all['api_url'] ?? '';
                    $apikey = $wpp_all['api_key'] ?? '';
                    $instancia = $wpp_all['instancia'] ?? '';
                }
            } catch(Exception $e) {}

            if (!empty($url_api) && !empty($instancia) && !empty($apikey)) {
                
                // Limpa e prepara o número do cliente (Adiciona o 55 automático se precisar)
                $numero_cliente = preg_replace('/[^0-9]/', '', $u['whatsapp']);
                if (strlen($numero_cliente) == 10 || strlen($numero_cliente) == 11) {
                    $numero_cliente = "55" . $numero_cliente;
                }

                $curl = curl_init();
                curl_setopt_array($curl, [
                  CURLOPT_URL => rtrim($url_api, '/') . "/message/sendText/" . trim($instancia),
                  CURLOPT_RETURNTRANSFER => true,
                  CURLOPT_CUSTOMREQUEST => 'POST',
                  CURLOPT_SSL_VERIFYPEER => false,
                  CURLOPT_SSL_VERIFYHOST => false,
                  CURLOPT_POSTFIELDS => json_encode([
                      "number" => $numero_cliente,
                      "text" => $mensagem,
                      "textMessage" => ["text" => $mensagem]
                  ]),
                  CURLOPT_HTTPHEADER => [
                      'Content-Type: application/json',
                      'apikey: ' . trim($apikey)
                  ],
                ]);
                
                $resp = curl_exec($curl);
                $httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
                curl_close($curl);
                
                if ($httpcode == 200 || $httpcode == 201) {
                    $tipo_log = strtoupper($u['tipo']);
                    echo "Aviso [$tipo_log] (Vence em {$dias_para_vencer} dias) ENVIADO para: {$u['usuario']} - Whats: {$numero_cliente}\n";
                    $contagem_avisos++;
                    
                    // =========================================================
                    // 🛑 SISTEMA ANTI-BANIMENTO DO WHATSAPP (A MÁGICA AQUI)
                    // =========================================================
                    // O robô vai "dormir" entre 8 a 15 segundos antes de mandar a próxima mensagem.
                    // Isso simula o comportamento de um humano digitando e protege o seu chip de cair!
                    $tempo_espera = rand(8, 15);
                    echo "-> Aguardando {$tempo_espera} segundos para o próximo disparo (Anti-Ban)...\n";
                    sleep($tempo_espera);
                    // =========================================================

                } else {
                    echo "FALHA ao enviar para {$u['usuario']} (Cód: $httpcode)\n";
                }
            } else {
                echo "API não configurada para o dono do cliente: {$u['CadUser']}\n";
            }
        }
    }

    echo "--- FIM DO PROCESSAMENTO: $contagem_avisos avisos enviados ---\n";

} catch (Exception $e) {
    echo "ERRO NO CRON: " . $e->getMessage();
}
?>
