<?php
/**
 * Script de diagnóstico para o sistema de operadores GPS
 * Controle de Frotas - Pinheiro Empresas
 */

require_once 'config/database.php';

echo "<h1>🔍 Diagnóstico do Sistema de Operadores GPS</h1>";
echo "<h2>Verificando estrutura do banco de dados...</h2>";

try {
    $pdo = Database::getConnection();
    
    // 1. Verificar se as tabelas principais existem
    echo "<h3>1. Verificando tabelas principais...</h3>";
    
    $tabelas = ['viagens', 'solicitacoes_rotas', 'motoristas', 'veiculos'];
    foreach ($tabelas as $tabela) {
        $stmt = $pdo->query("SHOW TABLES LIKE '$tabela'");
        if ($stmt->rowCount() > 0) {
            echo "✅ Tabela '$tabela' existe<br>";
        } else {
            echo "❌ Tabela '$tabela' NÃO existe<br>";
        }
    }
    
    // 2. Verificar estrutura da tabela viagens
    echo "<h3>2. Verificando estrutura da tabela viagens...</h3>";
    $stmt = $pdo->query("SHOW COLUMNS FROM viagens");
    $colunas = $stmt->fetchAll(PDO::FETCH_COLUMN);
    echo "Colunas existentes: " . implode(', ', $colunas) . "<br>";
    
    // 3. Verificar estrutura da tabela solicitacoes_rotas
    echo "<h3>3. Verificando estrutura da tabela solicitacoes_rotas...</h3>";
    $stmt = $pdo->query("SHOW COLUMNS FROM solicitacoes_rotas");
    $colunas = $stmt->fetchAll(PDO::FETCH_COLUMN);
    echo "Colunas existentes: " . implode(', ', $colunas) . "<br>";
    
    // 4. Verificar se a tabela operadores_gps foi criada
    echo "<h3>4. Verificando tabela operadores_gps...</h3>";
    $stmt = $pdo->query("SHOW TABLES LIKE 'operadores_gps'");
    if ($stmt->rowCount() > 0) {
        echo "✅ Tabela 'operadores_gps' existe<br>";
        $stmt = $pdo->query("SELECT COUNT(*) as total FROM operadores_gps");
        $result = $stmt->fetch();
        echo "Total de operadores: " . $result['total'] . "<br>";
    } else {
        echo "❌ Tabela 'operadores_gps' NÃO existe<br>";
    }
    
    // 5. Verificar se a tabela logs_liberacao_partida foi criada
    echo "<h3>5. Verificando tabela logs_liberacao_partida...</h3>";
    $stmt = $pdo->query("SHOW TABLES LIKE 'logs_liberacao_partida'");
    if ($stmt->rowCount() > 0) {
        echo "✅ Tabela 'logs_liberacao_partida' existe<br>";
    } else {
        echo "❌ Tabela 'logs_liberacao_partida' NÃO existe<br>";
    }
    
    // 6. Verificar se a view foi criada
    echo "<h3>6. Verificando view vw_liberacoes_partida...</h3>";
    $stmt = $pdo->query("SHOW TABLES LIKE 'vw_liberacoes_partida'");
    if ($stmt->rowCount() > 0) {
        echo "✅ View 'vw_liberacoes_partida' existe<br>";
    } else {
        echo "❌ View 'vw_liberacoes_partida' NÃO existe<br>";
    }
    
    // 7. Testar inserção de operador
    echo "<h3>7. Testando inserção de operador...</h3>";
    try {
        $stmt = $pdo->prepare("INSERT INTO operadores_gps (nome, usuario, senha, email, telefone, nivel_acesso) VALUES (?, ?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE nome = VALUES(nome)");
        $stmt->execute(['Teste Operador', 'teste.gps', password_hash('teste', PASSWORD_DEFAULT), 'teste@teste.com', '(11) 99999-9999', 'operador']);
        echo "✅ Inserção de operador funcionou<br>";
        
        // Remover o operador de teste
        $pdo->exec("DELETE FROM operadores_gps WHERE usuario = 'teste.gps'");
        echo "✅ Operador de teste removido<br>";
    } catch (Exception $e) {
        echo "❌ Erro na inserção: " . $e->getMessage() . "<br>";
    }
    
    // 8. Verificar versão do MySQL
    echo "<h3>8. Informações do banco de dados...</h3>";
    $stmt = $pdo->query("SELECT VERSION() as version");
    $result = $stmt->fetch();
    echo "Versão do MySQL: " . $result['version'] . "<br>";
    
    $stmt = $pdo->query("SELECT DATABASE() as database_name");
    $result = $stmt->fetch();
    echo "Banco de dados atual: " . $result['database_name'] . "<br>";
    
    echo "<h3>9. Conclusão:</h3>";
    echo "<div style='background: #e3f2fd; padding: 15px; border-radius: 5px; margin: 10px 0;'>";
    echo "Diagnóstico concluído. Se você viu algum ❌ acima, esse pode ser o motivo do erro.<br>";
    echo "Se todas as verificações passaram (✅), o erro pode estar em outro lugar.<br>";
    echo "Por favor, me informe qual foi a mensagem de erro específica que você recebeu.";
    echo "</div>";
    
} catch (Exception $e) {
    echo "<div style='background: #ffebee; color: #c62828; padding: 15px; border-radius: 5px; margin: 10px 0;'>";
    echo "<strong>❌ Erro no diagnóstico:</strong><br>";
    echo $e->getMessage();
    echo "</div>";
}
?>
