<?php
// Teste direto da newsletter (sem AJAX)

// Headers para debug
header('Content-Type: text/html; charset=utf-8');

echo "<h1>Teste Direto da Newsletter</h1>";

// Teste 1: Verificar se o arquivo principal existe
$subscribeFile = dirname(__FILE__) . '/subscribe.php';
echo "<h2>1. Verificação de Arquivos</h2>";
echo "Arquivo subscribe.php: " . ($subscribeFile ? "✅ Existe" : "❌ Não existe") . "<br>";
echo "Caminho: $subscribeFile<br><br>";

// Teste 2: Definir BASE_PATH manualmente
if (!defined('BASE_PATH')) {
    define('BASE_PATH', dirname(dirname(__FILE__)));
}
echo "<h2>2. Configuração</h2>";
echo "BASE_PATH: " . BASE_PATH . "<br>";

// Teste 3: Verificar arquivos de configuração
$configFiles = [
    'includes/config.php',
    'includes/db.php', 
    'includes/functions.php'
];

echo "<h2>3. Arquivos de Configuração</h2>";
foreach ($configFiles as $file) {
    $fullPath = BASE_PATH . '/' . $file;
    $exists = file_exists($fullPath);
    echo "$file: " . ($exists ? "✅ Existe" : "❌ Não existe") . " ($fullPath)<br>";
}

// Teste 4: Tentar incluir configurações
echo "<h2>4. Teste de Inclusão</h2>";
try {
    require_once BASE_PATH . '/includes/config.php';
    echo "✅ config.php incluído<br>";
} catch (Exception $e) {
    echo "❌ Erro em config.php: " . $e->getMessage() . "<br>";
}

try {
    require_once BASE_PATH . '/includes/db.php';
    echo "✅ db.php incluído<br>";
} catch (Exception $e) {
    echo "❌ Erro em db.php: " . $e->getMessage() . "<br>";
}

try {
    require_once BASE_PATH . '/includes/functions.php';
    echo "✅ functions.php incluído<br>";
} catch (Exception $e) {
    echo "❌ Erro em functions.php: " . $e->getMessage() . "<br>";
}

// Teste 5: Verificar banco de dados
echo "<h2>5. Teste de Banco de Dados</h2>";
if (isset($db) && is_object($db)) {
    echo "✅ Objeto \$db existe<br>";
    
    try {
        $db->query("SHOW TABLES LIKE 'newsletter_subscribers'");
        $result = $db->single();
        
        if ($result) {
            echo "✅ Tabela newsletter_subscribers existe<br>";
            
            // Testar estrutura da tabela
            $db->query("DESCRIBE newsletter_subscribers");
            $columns = $db->resultSet();
            echo "✅ Tabela tem " . count($columns) . " colunas<br>";
            
            // Mostrar colunas
            echo "<strong>Colunas:</strong><br>";
            foreach ($columns as $col) {
                echo "- " . $col['Field'] . " (" . $col['Type'] . ")<br>";
            }
            
        } else {
            echo "❌ Tabela newsletter_subscribers não existe<br>";
        }
    } catch (Exception $e) {
        echo "❌ Erro ao verificar tabela: " . $e->getMessage() . "<br>";
    }
} else {
    echo "❌ Objeto \$db não foi criado<br>";
}

// Teste 6: Simular inscrição
echo "<h2>6. Teste de Inscrição</h2>";
if (isset($db) && is_object($db)) {
    try {
        $testEmail = 'teste_direto_' . time() . '@exemplo.com';
        $testToken = bin2hex(random_bytes(16));
        
        $db->query("INSERT INTO newsletter_subscribers 
                   (email, name, status, source, unsubscribe_token, verified, subscription_date) 
                   VALUES (:email, 'Teste Direto', 'active', 'test_direct', :token, 1, NOW())");
        $db->bind(':email', $testEmail);
        $db->bind(':token', $testToken);
        
        $success = $db->execute();
        
        if ($success) {
            $newId = $db->lastInsertId();
            echo "✅ Inserção bem-sucedida! ID: $newId, Email: $testEmail<br>";
            
            // Remover o registro de teste
            $db->query("DELETE FROM newsletter_subscribers WHERE id = :id");
            $db->bind(':id', $newId);
            $db->execute();
            echo "✅ Registro de teste removido<br>";
        } else {
            echo "❌ Falha na inserção<br>";
        }
    } catch (Exception $e) {
        echo "❌ Erro na inserção: " . $e->getMessage() . "<br>";
    }
}

// Teste 7: Verificar logs
echo "<h2>7. Verificar Logs</h2>";
$logFile = BASE_PATH . '/logs/newsletter_emergency.log';
if (file_exists($logFile)) {
    echo "✅ Arquivo de log existe: $logFile<br>";
    $logContent = file_get_contents($logFile);
    $lines = explode("\n", $logContent);
    $recentLines = array_slice($lines, -10); // Últimas 10 linhas
    
    echo "<strong>Últimas linhas do log:</strong><br>";
    echo "<pre style='background: #f5f5f5; padding: 10px; font-size: 12px;'>";
    echo htmlspecialchars(implode("\n", $recentLines));
    echo "</pre>";
} else {
    echo "❌ Arquivo de log não existe: $logFile<br>";
}

// Formulário de teste manual
echo "<h2>8. Teste Manual</h2>";
echo '<form method="POST" action="subscribe.php" style="border: 1px solid #ccc; padding: 20px; background: #f9f9f9;">
    <h3>Teste Manual da Newsletter</h3>
    <p><label>Email: <input type="email" name="email" value="teste_manual_' . time() . '@exemplo.com" required style="width: 300px; padding: 5px;"></label></p>
    <p><label>Nome: <input type="text" name="name" value="Teste Manual" style="width: 300px; padding: 5px;"></label></p>
    <input type="hidden" name="source" value="test_manual">
    <p><button type="submit" style="background: #007cba; color: white; padding: 10px 20px; border: none; cursor: pointer;">Testar Inscrição</button></p>
</form>';

echo "<hr>";
echo "<p><strong>Próximos passos:</strong></p>";
echo "<ol>";
echo "<li>Se algum arquivo estiver faltando, crie-o conforme as instruções</li>";
echo "<li>Se a tabela não existir, execute o SQL fornecido</li>";
echo "<li>Se o teste manual funcionar, o problema está no AJAX/JavaScript</li>";
echo "<li>Verifique os logs para mais detalhes</li>";
echo "</ol>";
?>
