<?php
// debug-pixel.php (criar na raiz do projeto)

// Define BASE_PATH se não estiver definido
if (!defined('BASE_PATH')) {
    define('BASE_PATH', dirname(__FILE__));
}

?>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Debug - Pixel IntegraOn</title>
    <style>
        body { font-family: Arial, sans-serif; margin: 20px; }
        .success { color: green; }
        .error { color: red; }
        .warning { color: orange; }
        .info { color: blue; }
        pre { background: #f5f5f5; padding: 10px; border-radius: 5px; }
        .section { margin: 20px 0; padding: 20px; border: 1px solid #ddd; border-radius: 5px; }
    </style>
</head>
<body>
    <h1>🔍 Debug do Pixel IntegraOn</h1>
    
    <?php
    try {
        require_once 'includes/config.php';
        echo "<p class='success'>✓ Arquivo config.php carregado com sucesso</p>";
    } catch (Exception $e) {
        echo "<p class='error'>✗ Erro ao carregar config.php: " . $e->getMessage() . "</p>";
        exit;
    }

    try {
        require_once 'includes/db.php';
        echo "<p class='success'>✓ Arquivo db.php carregado com sucesso</p>";
    } catch (Exception $e) {
        echo "<p class='error'>✗ Erro ao carregar db.php: " . $e->getMessage() . "</p>";
        exit;
    }

    try {
        require_once 'includes/functions.php';
        echo "<p class='success'>✓ Arquivo functions.php carregado com sucesso</p>";
    } catch (Exception $e) {
        echo "<p class='error'>✗ Erro ao carregar functions.php: " . $e->getMessage() . "</p>";
        exit;
    }

    // Testa conexão com banco
    echo "<div class='section'>";
    echo "<h2>🗄️ Teste de Conexão com Banco</h2>";
    
    try {
        if (isset($db) && is_object($db)) {
            echo "<p class='success'>✓ Objeto \$db existe</p>";
            
            // Testa uma query simples
            $db->query("SELECT 1 as test");
            $result = $db->single();
            
            if ($result && $result['test'] == 1) {
                echo "<p class='success'>✓ Conexão com banco funcionando</p>";
            } else {
                echo "<p class='error'>✗ Erro na query de teste</p>";
            }
        } else {
            echo "<p class='error'>✗ Objeto \$db não existe</p>";
        }
    } catch (Exception $e) {
        echo "<p class='error'>✗ Erro na conexão: " . $e->getMessage() . "</p>";
    }
    echo "</div>";

    // Verifica se a tabela pixel_events existe
    echo "<div class='section'>";
    echo "<h2>📋 Verificação da Tabela pixel_events</h2>";
    
    try {
        $db->query("DESCRIBE pixel_events");
        $tableStructure = $db->resultSet();
        
        if ($tableStructure) {
            echo "<p class='success'>✓ Tabela pixel_events existe</p>";
            echo "<h3>Estrutura da tabela:</h3>";
            echo "<pre>";
            foreach ($tableStructure as $column) {
                echo sprintf("%-20s %-20s %s\n", 
                    $column['Field'], 
                    $column['Type'], 
                    $column['Extra']
                );
            }
            echo "</pre>";
        } else {
            echo "<p class='error'>✗ Tabela pixel_events não existe</p>";
        }
    } catch (Exception $e) {
        echo "<p class='error'>✗ Erro ao verificar tabela: " . $e->getMessage() . "</p>";
        echo "<p class='warning'>⚠️ Você precisa executar o script SQL para criar a tabela pixel_events</p>";
    }
    echo "</div>";

    // Verifica dados na tabela
    echo "<div class='section'>";
    echo "<h2>📊 Dados na Tabela pixel_events</h2>";
    
    try {
        $db->query("SELECT COUNT(*) as total FROM pixel_events");
        $count = $db->single();
        
        if ($count) {
            echo "<p class='info'>📈 Total de eventos: " . $count['total'] . "</p>";
            
            if ($count['total'] > 0) {
                // Mostra alguns registros recentes
                $db->query("SELECT * FROM pixel_events ORDER BY created_at DESC LIMIT 5");
                $recentEvents = $db->resultSet();
                
                echo "<h3>🕒 Últimos 5 eventos:</h3>";
                echo "<pre>";
                foreach ($recentEvents as $event) {
                    echo "ID: {$event['id']} | ";
                    echo "Campaign: {$event['utm_campaign']} | ";
                    echo "Source: {$event['utm_source']} | ";
                    echo "IP: {$event['visitor_ip']} | ";
                    echo "Data: {$event['created_at']}\n";
                }
                echo "</pre>";
            } else {
                echo "<p class='warning'>⚠️ Nenhum evento registrado ainda</p>";
                echo "<p class='info'>💡 Para testar, acesse uma página com ?utm_campaign=teste na URL</p>";
            }
        }
    } catch (Exception $e) {
        echo "<p class='error'>✗ Erro ao contar registros: " . $e->getMessage() . "</p>";
    }
    echo "</div>";

    // Testa arquivos do pixel
    echo "<div class='section'>";
    echo "<h2>🔧 Verificação dos Arquivos do Pixel</h2>";
    
    $pixelFiles = [
        'includes/pixel-config.php',
        'includes/pixel-helper.php',
        'pixel-endpoint.php'
    ];
    
    foreach ($pixelFiles as $file) {
        if (file_exists($file)) {
            echo "<p class='success'>✓ {$file} existe</p>";
        } else {
            echo "<p class='error'>✗ {$file} não encontrado</p>";
        }
    }
    
    // Tenta carregar pixel-config.php
    try {
        require_once 'includes/pixel-config.php';
        echo "<p class='success'>✓ pixel-config.php carregado</p>";
        
        if (isset($pixelIntegraOn) && is_object($pixelIntegraOn)) {
            echo "<p class='success'>✓ Objeto \$pixelIntegraOn criado</p>";
        } else {
            echo "<p class='error'>✗ Objeto \$pixelIntegraOn não existe</p>";
        }
    } catch (Exception $e) {
        echo "<p class='error'>✗ Erro ao carregar pixel-config.php: " . $e->getMessage() . "</p>";
    }
    
    // Tenta carregar pixel-helper.php
    try {
        require_once 'includes/pixel-helper.php';
        echo "<p class='success'>✓ pixel-helper.php carregado</p>";
        
        if (function_exists('getPixelStatsForAdmin')) {
            echo "<p class='success'>✓ Função getPixelStatsForAdmin() existe</p>";
        } else {
            echo "<p class='error'>✗ Função getPixelStatsForAdmin() não existe</p>";
        }
    } catch (Exception $e) {
        echo "<p class='error'>✗ Erro ao carregar pixel-helper.php: " . $e->getMessage() . "</p>";
    }
    echo "</div>";

    // Teste da API IntegraOn
    echo "<div class='section'>";
    echo "<h2>🌐 Teste da API IntegraOn</h2>";
    
    if (isset($pixelIntegraOn)) {
        try {
            echo "<p class='info'>🔄 Testando envio para API...</p>";
            $testUrl = '?utm_campaign=debug_test&utm_source=manual&utm_medium=debug';
            $result = $pixelIntegraOn->sendPurchaseEvent($testUrl);
            
            if ($result !== false) {
                echo "<p class='success'>✓ API respondeu com sucesso</p>";
                echo "<pre>" . json_encode($result, JSON_PRETTY_PRINT) . "</pre>";
            } else {
                echo "<p class='error'>✗ API retornou false (verifique os logs)</p>";
            }
        } catch (Exception $e) {
            echo "<p class='error'>✗ Erro no teste da API: " . $e->getMessage() . "</p>";
        }
    } else {
        echo "<p class='error'>✗ Objeto pixel não disponível para teste</p>";
    }
    echo "</div>";

    // Configurações
    echo "<div class='section'>";
    echo "<h2>⚙️ Configurações</h2>";
    
    echo "<p><strong>SITE_URL:</strong> " . (defined('SITE_URL') ? SITE_URL : 'Não definido') . "</p>";
    echo "<p><strong>BASE_PATH:</strong> " . (defined('BASE_PATH') ? BASE_PATH : 'Não definido') . "</p>";
    echo "<p><strong>Access Token:</strong> " . (defined('INTEGRAON_ACCESS_TOKEN') ? '****' . substr(INTEGRAON_ACCESS_TOKEN, -8) : 'Não definido') . "</p>";
    echo "<p><strong>Password:</strong> " . (defined('INTEGRAON_PASSWORD') ? '****' . substr(INTEGRAON_PASSWORD, -4) : 'Não definido') . "</p>";
    echo "<p><strong>API URL:</strong> " . (defined('INTEGRAON_API_URL') ? INTEGRAON_API_URL : 'Não definido') . "</p>";
    echo "</div>";

    // Teste JavaScript
    echo "<div class='section'>";
    echo "<h2>🖥️ Teste JavaScript</h2>";
    echo "<p>Teste o pixel acessando esta página com parâmetros UTM:</p>";
    echo "<p><a href='?utm_campaign=teste_debug&utm_source=manual&utm_medium=debug' style='background: #007bff; color: white; padding: 10px; text-decoration: none; border-radius: 5px;'>🔗 Testar com UTM</a></p>";
    echo "<p>Após clicar, abra o console do navegador (F12) para ver se o pixel está funcionando.</p>";
    echo "</div>";
    ?>

    <!-- Script de teste do pixel -->
    <script>
    console.log('🔍 Debug Pixel IntegraOn');
    console.log('URL atual:', window.location.href);
    
    const urlParams = new URLSearchParams(window.location.search);
    console.log('Parâmetros UTM encontrados:');
    ['utm_campaign', 'utm_source', 'utm_medium', 'utm_term', 'utm_content'].forEach(param => {
        if (urlParams.has(param)) {
            console.log(`  ${param}: ${urlParams.get(param)}`);
        }
    });
    
    if (urlParams.has('utm_campaign')) {
        console.log('✓ utm_campaign detectado, pixel deveria ser ativado');
        
        // Simula o que o pixel faz
        setTimeout(() => {
            fetch('pixel-endpoint.php', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                    'X-Requested-With': 'XMLHttpRequest'
                },
                body: JSON.stringify({
                    url: window.location.search,
                    page_url: window.location.href,
                    referrer: document.referrer,
                    timestamp: Date.now()
                })
            })
            .then(response => response.json())
            .then(data => {
                console.log('📤 Resposta do pixel-endpoint.php:', data);
                if (data.success) {
                    alert('✅ Pixel enviado com sucesso! Verifique o console para detalhes.');
                } else {
                    alert('❌ Erro no pixel: ' + data.message);
                }
            })
            .catch(error => {
                console.error('❌ Erro ao enviar pixel:', error);
                alert('❌ Erro de conexão com pixel-endpoint.php');
            });
        }, 1000);
    } else {
        console.log('⚠️ Nenhum utm_campaign na URL, pixel não será ativado');
    }
    </script>

    <div class="section">
        <h2>📝 Próximos Passos</h2>
        <ol>
            <li>Se a tabela não existir, execute o SQL fornecido</li>
            <li>Se os arquivos não existirem, crie-os conforme instruções</li>
            <li>Se a API falhar, verifique credenciais e conectividade</li>
            <li>Teste acessando páginas com utm_campaign na URL</li>
            <li>Verifique logs de erro do servidor</li>
        </ol>
        
        <h3>🔗 Links de Teste:</h3>
        <ul>
            <li><a href="?utm_campaign=teste1&utm_source=debug">Teste Básico</a></li>
            <li><a href="admin/pixel-reports.php">Painel de Relatórios</a></li>
            <li><a href="pixel-endpoint.php" target="_blank">Endpoint do Pixel</a></li>
        </ul>
    </div>

</body>
</html>