<?php
$pageTitle = 'Teste da Newsletter - Versão Avançada';
$pageHeader = 'Diagnóstico Completo da Newsletter';
$currentPage = 'newsletter-test';

if (!defined('BASE_PATH')) {
    define('BASE_PATH', dirname(dirname(__FILE__)));
}

require_once '../includes/config.php';
require_once '../includes/db.php';
require_once '../includes/functions.php';
require_once '../includes/auth.php';

if (!$auth->isLoggedIn()) {
    redirect('admin/login.php');
    exit;
}

$testResult = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $action = $_POST['action'] ?? '';
    
    if ($action === 'test_complete') {
        $testResult .= "<h4>🔍 Diagnóstico Completo</h4>";
        
        // 1. Verificar estrutura de arquivos
        $testResult .= "<h5>1. Estrutura de Arquivos</h5>";
        $files = [
            '/newsletter/subscribe.php' => 'Endpoint principal',
            '/newsletter/test-direct.php' => 'Teste direto',
            '/includes/config.php' => 'Configurações',
            '/includes/db.php' => 'Banco de dados',
            '/includes/functions.php' => 'Funções',
            '/logs/' => 'Diretório de logs'
        ];
        
        foreach ($files as $file => $desc) {
            $fullPath = BASE_PATH . $file;
            $exists = is_dir($fullPath) ? is_dir($fullPath) : file_exists($fullPath);
            $icon = $exists ? "✅" : "❌";
            $testResult .= "$icon $desc: <code>$file</code><br>";
        }
        
        // 2. Verificar banco de dados
        $testResult .= "<h5>2. Banco de Dados</h5>";
        try {
            $db->query("SHOW TABLES LIKE 'newsletter_subscribers'");
            $tableExists = $db->single();
            
            if ($tableExists) {
                $testResult .= "✅ Tabela newsletter_subscribers existe<br>";
                
                // Verificar estrutura
                $db->query("DESCRIBE newsletter_subscribers");
                $columns = $db->resultSet();
                $expectedColumns = ['id', 'email', 'name', 'status', 'source', 'subscription_date'];
                
                $testResult .= "✅ Colunas encontradas: " . count($columns) . "<br>";
                
                foreach ($expectedColumns as $expected) {
                    $found = false;
                    foreach ($columns as $col) {
                        if ($col['Field'] === $expected) {
                            $found = true;
                            break;
                        }
                    }
                    $icon = $found ? "✅" : "❌";
                    $testResult .= "$icon Coluna '$expected'<br>";
                }
                
                // Contar registros
                $db->query("SELECT COUNT(*) as total FROM newsletter_subscribers");
                $count = $db->single();
                $testResult .= "📊 Total de inscritos: " . $count['total'] . "<br>";
                
            } else {
                $testResult .= "❌ Tabela newsletter_subscribers não existe<br>";
                $testResult .= "<strong>SQL para criar a tabela:</strong><br>";
                $testResult .= "<pre>CREATE TABLE newsletter_subscribers (...)</pre>";
            }
        } catch (Exception $e) {
            $testResult .= "❌ Erro no banco: " . $e->getMessage() . "<br>";
        }
        
        // 3. Teste de conectividade HTTP
        $testResult .= "<h5>3. Teste de Conectividade</h5>";
        $subscribeUrl = SITE_URL . '/newsletter/subscribe';
        
        $ch = curl_init($subscribeUrl);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
            'email' => 'teste_curl_' . time() . '@exemplo.com',
            'source' => 'admin_test'
        ]));
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            'Content-Type: application/json',
            'User-Agent: NewsletterTest/1.0'
        ]);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        $error = curl_error($ch);
        curl_close($ch);
        
        $testResult .= "🌐 URL testada: $subscribeUrl<br>";
        $testResult .= "📡 Status HTTP: $httpCode<br>";
        
        if ($error) {
            $testResult .= "❌ Erro cURL: $error<br>";
        }
        
        if ($httpCode === 200) {
            $testResult .= "✅ Conectividade OK<br>";
            $decoded = json_decode($response, true);
            if ($decoded) {
                $testResult .= "✅ Resposta JSON válida<br>";
                $testResult .= "📄 Resposta: " . htmlspecialchars($response) . "<br>";
            } else {
                $testResult .= "❌ Resposta não é JSON válido<br>";
                $testResult .= "📄 Resposta: " . htmlspecialchars(substr($response, 0, 500)) . "<br>";
            }
        } else {
            $testResult .= "❌ Erro HTTP $httpCode<br>";
            $testResult .= "📄 Resposta: " . htmlspecialchars(substr($response, 0, 500)) . "<br>";
        }
        
        // 4. Verificar logs
        $testResult .= "<h5>4. Logs de Sistema</h5>";
        $logFiles = [
            '/logs/newsletter_emergency.log' => 'Log de emergência',
            '/logs/newsletter_debug.log' => 'Log de debug'
        ];
        
        foreach ($logFiles as $logFile => $desc) {
            $fullPath = BASE_PATH . $logFile;
            if (file_exists($fullPath)) {
                $size = filesize($fullPath);
                $testResult .= "✅ $desc existe (${size} bytes)<br>";
                
                // Últimas linhas
                $content = file_get_contents($fullPath);
                $lines = explode("\n", $content);
                $recentLines = array_slice($lines, -5);
                $testResult .= "<small>Últimas linhas:</small><br>";
                $testResult .= "<pre style='font-size: 11px; background: #f5f5f5; padding: 5px;'>" . 
                              htmlspecialchars(implode("\n", $recentLines)) . "</pre>";
            } else {
                $testResult .= "❌ $desc não existe: $logFile<br>";
            }
        }
        
        // 5. Teste direto
        $testResult .= "<h5>5. Recomendações</h5>";
        $testResult .= "🔧 <a href='../newsletter/test-direct.php' target='_blank'>Executar teste direto</a><br>";
        $testResult .= "📊 <a href='newsletter-subscribers.php'>Ver inscritos atuais</a><br>";
        $testResult .= "🗂️ Verificar permissões dos diretórios logs/ e newsletter/<br>";
        $testResult .= "⚙️ Verificar configurações do .htaccess<br>";
    }
}

require_once 'inc/header.php';
?>

<div class="container-fluid px-4">
    <h1 class="mt-4"><?php echo $pageHeader; ?></h1>
    
    <div class="row">
        <div class="col-md-8">
            <div class="card mb-4">
                <div class="card-header">
                    <h5>🧪 Testes Automatizados</h5>
                </div>
                <div class="card-body">
                    <form method="POST">
                        <button type="submit" name="action" value="test_complete" class="btn btn-primary btn-lg">
                            🔍 Executar Diagnóstico Completo
                        </button>
                    </form>
                    
                    <?php if ($testResult): ?>
                    <hr>
                    <div class="test-results">
                        <?php echo $testResult; ?>
                    </div>
                    <?php endif; ?>
                </div>
            </div>
        </div>
        
        <div class="col-md-4">
            <div class="card mb-4">
                <div class="card-header">
                    <h5>🛠️ Ações Rápidas</h5>
                </div>
                <div class="card-body">
                    <div class="d-grid gap-2">
                        <a href="../newsletter/test-direct.php" target="_blank" class="btn btn-outline-primary">
                            🧪 Teste Direto
                        </a>
                        <a href="newsletter-subscribers.php" class="btn btn-outline-info">
                            👥 Ver Inscritos
                        </a>
                        <a href="newsletter-campaigns.php" class="btn btn-outline-success">
                            📧 Campanhas
                        </a>
                        <button onclick="clearLogs()" class="btn btn-outline-warning">
                            🗑️ Limpar Logs
                        </button>
                    </div>
                </div>
            </div>
            
            <div class="card">
                <div class="card-header">
                    <h5>📋 Checklist de Problemas</h5>
                </div>
                <div class="card-body">
                    <ul class="list-unstyled">
                        <li>✅ Tabela newsletter_subscribers existe?</li>
                        <li>✅ Arquivo /newsletter/subscribe.php existe?</li>
                        <li>✅ Diretório /logs/ tem permissões de escrita?</li>
                        <li>✅ Configurações de banco estão corretas?</li>
                        <li>✅ .htaccess configurado?</li>
                        <li>✅ JavaScript do footer carregando?</li>
                    </ul>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
function clearLogs() {
    if (confirm('Tem certeza que deseja limpar os logs?')) {
        fetch('/admin/clear-logs.php', {method: 'POST'})
        .then(() => {
            alert('Logs limpos com sucesso!');
            location.reload();
        })
        .catch(() => {
            alert('Erro ao limpar logs');
        });
    }
}
</script>

<?php require_once 'inc/footer.php'; ?>