<?php
/**
 * Script de Teste de Conexão - Sistema Controle de Frotas
 * Execute este arquivo para verificar se tudo está configurado corretamente
 */

// Configurar exibição de erros
error_reporting(E_ALL);
ini_set('display_errors', 1);

echo "<h1>🧪 Teste de Configuração - Controle de Frotas</h1>\n";
echo "<style>body{font-family:Arial,sans-serif;margin:20px;} .ok{color:green;} .erro{color:red;} .aviso{color:orange;}</style>\n";

$erros = 0;
$avisos = 0;

// Teste 1: Versão do PHP
echo "<h2>1. Versão do PHP</h2>\n";
$phpVersion = phpversion();
echo "Versão atual: <strong>$phpVersion</strong><br>\n";
if (version_compare($phpVersion, '8.0.0', '>=')) {
    echo "<span class='ok'>✅ PHP 8.0+ encontrado</span><br>\n";
} else {
    echo "<span class='erro'>❌ PHP 8.0+ requerido (atual: $phpVersion)</span><br>\n";
    $erros++;
}

// Teste 2: Extensões PHP
echo "<h2>2. Extensões PHP</h2>\n";
$extensoes = ['pdo', 'pdo_mysql', 'json', 'openssl', 'curl', 'mbstring'];
foreach ($extensoes as $ext) {
    if (extension_loaded($ext)) {
        echo "<span class='ok'>✅ $ext</span><br>\n";
    } else {
        echo "<span class='erro'>❌ $ext (não encontrada)</span><br>\n";
        $erros++;
    }
}

// Teste 3: Arquivo .env
echo "<h2>3. Configuração (.env)</h2>\n";
if (file_exists('.env')) {
    echo "<span class='ok'>✅ Arquivo .env encontrado</span><br>\n";
    
    // Carregar variáveis
    $envContent = file_get_contents('.env');
    $hasDbConfig = strpos($envContent, 'DB_HOST') !== false;
    $hasJwtSecret = strpos($envContent, 'JWT_SECRET') !== false;
    
    if ($hasDbConfig) {
        echo "<span class='ok'>✅ Configuração de banco encontrada</span><br>\n";
    } else {
        echo "<span class='erro'>❌ Configuração de banco não encontrada</span><br>\n";
        $erros++;
    }
    
    if ($hasJwtSecret) {
        echo "<span class='ok'>✅ JWT Secret configurado</span><br>\n";
    } else {
        echo "<span class='erro'>❌ JWT Secret não configurado</span><br>\n";
        $erros++;
    }
} else {
    echo "<span class='erro'>❌ Arquivo .env não encontrado</span><br>\n";
    echo "<span class='aviso'>💡 Copie env.example para .env</span><br>\n";
    $erros++;
}

// Teste 4: Autoload do Composer
echo "<h2>4. Composer</h2>\n";
if (file_exists('vendor/autoload.php')) {
    echo "<span class='ok'>✅ Autoload do Composer encontrado</span><br>\n";
    require_once 'vendor/autoload.php';
    echo "<span class='ok'>✅ Autoload carregado com sucesso</span><br>\n";
} else {
    echo "<span class='erro'>❌ vendor/autoload.php não encontrado</span><br>\n";
    echo "<span class='aviso'>💡 Execute: composer install</span><br>\n";
    $erros++;
}

// Teste 5: Diretórios
echo "<h2>5. Diretórios</h2>\n";
$diretorios = ['logs', 'uploads', 'cache'];
foreach ($diretorios as $dir) {
    if (is_dir($dir)) {
        if (is_writable($dir)) {
            echo "<span class='ok'>✅ $dir/ (gravável)</span><br>\n";
        } else {
            echo "<span class='aviso'>⚠️ $dir/ (sem permissão de escrita)</span><br>\n";
            $avisos++;
        }
    } else {
        echo "<span class='aviso'>⚠️ $dir/ (não existe - será criado automaticamente)</span><br>\n";
        $avisos++;
    }
}

// Teste 6: Conexão com banco (se .env existir)
if (file_exists('.env') && file_exists('vendor/autoload.php')) {
    echo "<h2>6. Conexão com Banco de Dados</h2>\n";
    
    try {
        echo "<pre>";
        echo "Ambiente:\n";
        echo "PHP version: " . PHP_VERSION . "\n";
        echo "Sistema: " . php_uname() . "\n";
        echo "Extensões carregadas:\n";
        print_r(get_loaded_extensions());
        echo "\n\nTentando conexão com o banco...\n";

        $pdo = new PDO(
            "mysql:host=localhost;dbname=pinheir3_controle_frotasV1.1",
            "pinheir3_admin",
            "080880Gelboy",
            array(
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4"
            )
        );
        echo "\nConexão bem sucedida!\n";
        echo "Versão do MySQL: " . $pdo->getAttribute(PDO::ATTR_SERVER_VERSION) . "\n";
        
        // Tenta uma query simples
        $stmt = $pdo->query("SELECT NOW() as agora");
        $resultado = $stmt->fetch(PDO::FETCH_ASSOC);
        echo "Data/Hora do servidor MySQL: " . $resultado['agora'] . "\n";
        
    } catch (PDOException $e) {
        echo "\nERRO NA CONEXÃO:\n";
        echo $e->getMessage() . "\n";
        echo "\nDEBUG INFO:\n";
        echo "PDO drivers disponíveis: \n";
        print_r(PDO::getAvailableDrivers());
        $erros++;
    }
}

// Teste 7: Teste de API
if ($erros === 0) {
    echo "<h2>7. Teste de API</h2>\n";
    
    // Simular requisição de login
    $loginData = [
        'email' => 'admin@controledefrotas.com',
        'senha' => 'admin123'
    ];
    
    echo "Testando endpoint de login...<br>\n";
    
    // Verificar se o endpoint existe
    if (file_exists('api/auth/login.php')) {
        echo "<span class='ok'>✅ Endpoint de login encontrado</span><br>\n";
        echo "<span class='ok'>✅ API está pronta para teste</span><br>\n";
    } else {
        echo "<span class='erro'>❌ Endpoint de login não encontrado</span><br>\n";
        $erros++;
    }
}

// Resumo final
echo "<h2>📊 Resumo</h2>\n";

if ($erros === 0) {
    echo "<div style='background:#d4edda;border:1px solid #c3e6cb;padding:15px;border-radius:5px;'>\n";
    echo "<h3 style='color:#155724;margin:0;'>🎉 Configuração Perfeita!</h3>\n";
    echo "<p style='margin:5px 0 0 0;'>Todos os testes passaram. O sistema está pronto para uso.</p>\n";
    echo "</div>\n";
    
    echo "<h3>🚀 Próximos Passos:</h3>\n";
    echo "<ol>\n";
    echo "<li>Acesse: <a href='./'>Página Principal</a></li>\n";
    echo "<li>Acesse: <a href='admin/'>Painel Administrativo</a></li>\n";
    echo "<li>Configure seu app Android com a URL: <code>" . (($_SERVER['HTTPS'] ?? '') ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . dirname($_SERVER['REQUEST_URI']) . "/api/</code></li>\n";
    echo "</ol>\n";
    
} else {
    echo "<div style='background:#f8d7da;border:1px solid #f5c6cb;padding:15px;border-radius:5px;'>\n";
    echo "<h3 style='color:#721c24;margin:0;'>❌ Problemas Encontrados</h3>\n";
    echo "<p style='margin:5px 0 0 0;'>$erros erro(s) precisam ser corrigidos.</p>\n";
    echo "</div>\n";
}

if ($avisos > 0) {
    echo "<div style='background:#fff3cd;border:1px solid #ffeaa7;padding:15px;border-radius:5px;margin-top:10px;'>\n";
    echo "<h3 style='color:#856404;margin:0;'>⚠️ Avisos</h3>\n";
    echo "<p style='margin:5px 0 0 0;'>$avisos aviso(s) - O sistema funcionará, mas alguns recursos podem estar limitados.</p>\n";
    echo "</div>\n";
}

echo "<hr>\n";
echo "<p><small>Sistema de Controle de Frotas | Teste executado em " . date('d/m/Y H:i:s') . "</small></p>\n";
?> 
