<?php
/**
 * Debug do erro no endpoint de sincronização
 * Testa conexão e identifica problemas
 */

header('Content-Type: text/html; charset=UTF-8');
error_reporting(E_ALL);
ini_set('display_errors', 1);

?>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <title>🔍 Debug - Erro no Endpoint</title>
    <style>
        body { font-family: Arial, sans-serif; margin: 20px; background: #f5f5f5; }
        .container { max-width: 900px; margin: 0 auto; }
        .card { background: white; border-radius: 8px; padding: 20px; margin: 15px 0; box-shadow: 0 2px 4px rgba(0,0,0,0.1); }
        .success { background: #e8f5e8; border-left: 4px solid #4CAF50; }
        .error { background: #f8d7da; border-left: 4px solid #DC3545; }
        .info { background: #d1ecf1; border-left: 4px solid #17A2B8; }
        pre { background: #f8f9fa; padding: 10px; border-radius: 4px; overflow-x: auto; }
    </style>
</head>
<body>

<div class="container">
    <h1>🔍 Debug - Erro no Endpoint de Sincronização</h1>

    <?php
    // 1. Teste de conexão com banco
    echo "<div class='card info'>";
    echo "<h3>🗄️ Teste de Conexão com Banco</h3>";
    
    try {
        $pdo = new PDO(
            "mysql:host=localhost;dbname=controle_frotas;charset=utf8mb4", 
            "root", 
            "", 
            [
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
            ]
        );
        
        echo "<p class='success'>✅ Conexão com banco bem-sucedida!</p>";
        
        // Testar tabelas
        $tabelas = ['motoristas', 'veiculos', 'clientes'];
        echo "<h4>📋 Verificando tabelas:</h4>";
        
        foreach ($tabelas as $tabela) {
            try {
                $stmt = $pdo->query("SELECT COUNT(*) as total FROM $tabela");
                $resultado = $stmt->fetch();
                echo "<p>✅ Tabela <strong>$tabela</strong>: {$resultado['total']} registros</p>";
            } catch (Exception $e) {
                echo "<p class='error'>❌ Erro na tabela <strong>$tabela</strong>: {$e->getMessage()}</p>";
            }
        }
        
    } catch (Exception $e) {
        echo "<p class='error'>❌ Erro na conexão: {$e->getMessage()}</p>";
        echo "<p>Verifique se:</p>";
        echo "<ul>";
        echo "<li>MySQL está rodando</li>";
        echo "<li>Banco 'controle_frotas' existe</li>";
        echo "<li>Usuário 'root' sem senha</li>";
        echo "</ul>";
    }
    echo "</div>";
    
    // 2. Teste da query de motoristas
    if (isset($pdo)) {
        echo "<div class='card info'>";
        echo "<h3>👥 Teste da Query de Motoristas</h3>";
        
        try {
            $sql = "SELECT id, nome, usuario, matricula, senha, status FROM motoristas WHERE status = 'ativo' ORDER BY nome LIMIT 5";
            $stmt = $pdo->query($sql);
            $motoristas = $stmt->fetchAll();
            
            echo "<p class='success'>✅ Query executada com sucesso!</p>";
            echo "<p>Encontrados: " . count($motoristas) . " motoristas ativos</p>";
            
            if (!empty($motoristas)) {
                echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
                echo "<tr><th>ID</th><th>Nome</th><th>Usuário</th><th>Matrícula</th><th>Senha</th><th>Status</th></tr>";
                
                foreach ($motoristas as $motorista) {
                    echo "<tr>";
                    echo "<td>{$motorista['id']}</td>";
                    echo "<td>{$motorista['nome']}</td>";
                    echo "<td>{$motorista['usuario']}</td>";
                    echo "<td>{$motorista['matricula']}</td>";
                    echo "<td>" . (strlen($motorista['senha']) > 20 ? substr($motorista['senha'], 0, 20) . '...' : $motorista['senha']) . "</td>";
                    echo "<td>{$motorista['status']}</td>";
                    echo "</tr>";
                }
                echo "</table>";
            }
            
        } catch (Exception $e) {
            echo "<p class='error'>❌ Erro na query: {$e->getMessage()}</p>";
        }
        echo "</div>";
    }
    
    // 3. Teste simulando o endpoint
    echo "<div class='card info'>";
    echo "<h3>🔄 Simulação do Endpoint de Sincronização</h3>";
    
    try {
        if (!isset($pdo)) {
            throw new Exception("Conexão com banco não disponível");
        }
        
        $response = [
            'sucesso' => true,
            'mensagem' => 'Teste de sincronização',
            'timestamp' => date('Y-m-d H:i:s'),
            'dados' => []
        ];
        
        // Motoristas
        $sql = "SELECT id, nome, usuario, matricula, cpf, telefone, senha, status, created_at, updated_at 
                FROM motoristas WHERE status = 'ativo' ORDER BY nome";
        $stmt = $pdo->query($sql);
        $motoristas = $stmt->fetchAll();
        
        // Sanitizar senhas
        foreach ($motoristas as &$motorista) {
            if (strlen($motorista['senha']) > 50) {
                $motorista['senha'] = !empty($motorista['matricula']) ? $motorista['matricula'] : '123456';
            }
        }
        
        $response['dados']['motoristas'] = $motoristas;
        $response['totais']['motoristas'] = count($motoristas);
        
        // Veículos
        $sql = "SELECT id, placa, modelo, marca, ano, cor, status, created_at, updated_at 
                FROM veiculos WHERE status = 'ativo' ORDER BY placa";
        $stmt = $pdo->query($sql);
        $veiculos = $stmt->fetchAll();
        
        $response['dados']['veiculos'] = $veiculos;
        $response['totais']['veiculos'] = count($veiculos);
        
        // Clientes  
        $sql = "SELECT id, nome, cpf_cnpj, telefone, email, status, created_at, updated_at 
                FROM clientes WHERE status = 'ativo' ORDER BY nome";
        $stmt = $pdo->query($sql);
        $clientes = $stmt->fetchAll();
        
        $response['dados']['clientes'] = $clientes;
        $response['totais']['clientes'] = count($clientes);
        
        echo "<p class='success'>✅ Simulação bem-sucedida!</p>";
        echo "<h4>📊 Resultados:</h4>";
        echo "<ul>";
        echo "<li>Motoristas: {$response['totais']['motoristas']}</li>";
        echo "<li>Veículos: {$response['totais']['veiculos']}</li>";
        echo "<li>Clientes: {$response['totais']['clientes']}</li>";
        echo "</ul>";
        
        echo "<h4>📋 JSON de Resposta (primeiros 1000 chars):</h4>";
        $jsonResponse = json_encode($response, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
        echo "<pre>" . htmlspecialchars(substr($jsonResponse, 0, 1000)) . "...</pre>";
        
    } catch (Exception $e) {
        echo "<p class='error'>❌ Erro na simulação: {$e->getMessage()}</p>";
        echo "<pre>Stack trace: " . $e->getTraceAsString() . "</pre>";
    }
    echo "</div>";
    
    // 4. Verificar arquivo dados-completos.php
    echo "<div class='card info'>";
    echo "<h3>📄 Verificação do Arquivo dados-completos.php</h3>";
    
    $arquivo = __DIR__ . '/api/sync/dados-completos.php';
    
    if (file_exists($arquivo)) {
        echo "<p class='success'>✅ Arquivo existe: $arquivo</p>";
        echo "<p>Tamanho: " . filesize($arquivo) . " bytes</p>";
        echo "<p>Permissões: " . substr(sprintf('%o', fileperms($arquivo)), -4) . "</p>";
        echo "<p>Última modificação: " . date('Y-m-d H:i:s', filemtime($arquivo)) . "</p>";
        
        // Verificar se há erros de sintaxe
        ob_start();
        $resultado = include($arquivo);
        $output = ob_get_clean();
        
        if ($output) {
            echo "<h4>⚠️ Output do arquivo:</h4>";
            echo "<pre>" . htmlspecialchars($output) . "</pre>";
        }
        
    } else {
        echo "<p class='error'>❌ Arquivo não encontrado: $arquivo</p>";
    }
    echo "</div>";
    
    ?>
    
    <div class="card success">
        <h3>🔧 Possíveis Soluções</h3>
        <ol>
            <li><strong>Se erro de banco:</strong> Verifique conexão MySQL</li>
            <li><strong>Se erro de sintaxe:</strong> Verificar código PHP</li>
            <li><strong>Se erro de permissão:</strong> Definir permissões 644</li>
            <li><strong>Se tabelas não existem:</strong> Executar script de criação</li>
        </ol>
        
        <p><strong>💡 Próximo passo:</strong> Baseado nos resultados acima, vou corrigir o problema específico.</p>
    </div>

</div>

</body>
</html> 
