<?php
/**
 * 🔍 Diagnóstico Completo - Por que tabelas GPS estão vazias?
 */

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

// Configurações do banco
$config = [
    'host' => 'localhost',
    'dbname' => 'pinheir3_controle_frotasV1.1',
    'username' => 'pinheir3_admin', 
    'password' => '080880Gelboy'
];

try {
    $pdo = new PDO(
        "mysql:host={$config['host']};dbname={$config['dbname']};charset=utf8mb4",
        $config['username'],
        $config['password'],
        [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
    );
    
    echo "<h1>🔍 Diagnóstico GPS Completo</h1>";
    
    // 1. Verificar se tabelas existem
    echo "<h2>🗄️ 1. Verificar Estrutura das Tabelas</h2>";
    
    $tabelas = ['rastreamento_tempo_real', 'trajeto_pontos', 'viagens'];
    
    foreach ($tabelas as $tabela) {
        try {
            $stmt = $pdo->query("DESCRIBE `$tabela`");
            $campos = $stmt->fetchAll(PDO::FETCH_ASSOC);
            
            echo "<div style='background:#e8f5e8;padding:10px;border-radius:5px;margin:10px 0;'>";
            echo "<h3>✅ Tabela: $tabela</h3>";
            echo "<table border='1' style='border-collapse:collapse;'>";
            echo "<tr><th>Campo</th><th>Tipo</th><th>Null</th><th>Chave</th><th>Default</th></tr>";
            
            foreach ($campos as $campo) {
                echo "<tr>";
                echo "<td>" . $campo['Field'] . "</td>";
                echo "<td>" . $campo['Type'] . "</td>";
                echo "<td>" . $campo['Null'] . "</td>";
                echo "<td>" . $campo['Key'] . "</td>";
                echo "<td>" . $campo['Default'] . "</td>";
                echo "</tr>";
            }
            echo "</table>";
            echo "</div>";
            
        } catch (Exception $e) {
            echo "<div style='background:#ffe8e8;padding:10px;border-radius:5px;margin:10px 0;'>";
            echo "<h3>❌ Tabela: $tabela</h3>";
            echo "Erro: " . $e->getMessage();
            echo "</div>";
        }
    }
    
    // 2. Verificar contagem de registros
    echo "<h2>📊 2. Contagem de Registros</h2>";
    
    $queries = [
        'viagens' => "SELECT COUNT(*) as total FROM viagens",
        'rastreamento_tempo_real' => "SELECT COUNT(*) as total FROM rastreamento_tempo_real",
        'trajeto_pontos' => "SELECT COUNT(*) as total FROM trajeto_pontos"
    ];
    
    foreach ($queries as $tabela => $query) {
        try {
            $stmt = $pdo->query($query);
            $total = $stmt->fetch(PDO::FETCH_ASSOC)['total'];
            
            $cor = $total > 0 ? '#e8f5e8' : '#ffe8e8';
            $icone = $total > 0 ? '✅' : '❌';
            
            echo "<div style='background:$cor;padding:10px;border-radius:5px;margin:10px 0;'>";
            echo "<strong>$icone Tabela $tabela: $total registros</strong>";
            echo "</div>";
            
        } catch (Exception $e) {
            echo "<div style='background:#ffe8e8;padding:10px;border-radius:5px;margin:10px 0;'>";
            echo "<strong>❌ Erro na tabela $tabela:</strong> " . $e->getMessage();
            echo "</div>";
        }
    }
    
    // 3. Verificar viagens recentes
    echo "<h2>🚗 3. Viagens Recentes (últimas 10)</h2>";
    
    try {
        $stmt = $pdo->query("
            SELECT 
                id, cliente, data_inicio, data_fim,
                latitude_inicial, longitude_inicial,
                latitude_final, longitude_final,
                trajeto
            FROM viagens 
            ORDER BY id DESC 
            LIMIT 10
        ");
        $viagens = $stmt->fetchAll(PDO::FETCH_ASSOC);
        
        if (count($viagens) > 0) {
            echo "<table border='1' style='border-collapse:collapse;width:100%;'>";
            echo "<tr><th>ID</th><th>Cliente</th><th>Data Início</th><th>GPS Inicial</th><th>GPS Final</th><th>Tem Trajeto</th></tr>";
            
            foreach ($viagens as $viagem) {
                $temGPS = ($viagem['latitude_inicial'] && $viagem['longitude_inicial']) ? '✅' : '❌';
                $temTrajetoBD = $viagem['trajeto'] ? '✅' : '❌';
                
                echo "<tr>";
                echo "<td>" . $viagem['id'] . "</td>";
                echo "<td>" . htmlspecialchars($viagem['cliente']) . "</td>";
                echo "<td>" . $viagem['data_inicio'] . "</td>";
                echo "<td>$temGPS</td>";
                echo "<td>" . (($viagem['latitude_final'] && $viagem['longitude_final']) ? '✅' : '❌') . "</td>";
                echo "<td>$temTrajetoBD</td>";
                echo "</tr>";
            }
            echo "</table>";
        } else {
            echo "<div style='background:#ffe8e8;padding:10px;border-radius:5px;'>";
            echo "❌ Nenhuma viagem encontrada!";
            echo "</div>";
        }
        
    } catch (Exception $e) {
        echo "<div style='background:#ffe8e8;padding:10px;border-radius:5px;'>";
        echo "❌ Erro ao buscar viagens: " . $e->getMessage();
        echo "</div>";
    }
    
    // 4. Verificar APIs de sincronização
    echo "<h2>🔄 4. Verificar APIs de Sincronização</h2>";
    
    $apis = [
        'dados-completos.php',
        'dados-completos-basico.php', 
        'dados-estaticos.php',
        'enviar-localizacao.php'
    ];
    
    foreach ($apis as $api) {
        $caminho = "api/sync/$api";
        if (file_exists($caminho)) {
            echo "<div style='background:#e8f5e8;padding:10px;border-radius:5px;margin:5px 0;'>";
            echo "✅ API encontrada: $api";
            echo "</div>";
        } else {
            echo "<div style='background:#ffe8e8;padding:10px;border-radius:5px;margin:5px 0;'>";
            echo "❌ API não encontrada: $api";
            echo "</div>";
        }
    }
    
    // 5. Testar inserção manual
    echo "<h2>🧪 5. Teste de Inserção Manual</h2>";
    
    if (isset($_GET['teste']) && $_GET['teste'] === 'inserir') {
        
        try {
            // Teste 1: Inserir na rastreamento_tempo_real
            $stmt = $pdo->prepare("
                INSERT INTO rastreamento_tempo_real 
                (viagem_id, latitude, longitude, velocidade, precisao, timestamp) 
                VALUES (79, -23.550520, -46.633308, 25.5, 10.0, NOW())
            ");
            $stmt->execute();
            
            echo "<div style='background:#e8f5e8;padding:10px;border-radius:5px;'>";
            echo "✅ Teste 1: Inserção em rastreamento_tempo_real - SUCESSO";
            echo "</div>";
            
        } catch (Exception $e) {
            echo "<div style='background:#ffe8e8;padding:10px;border-radius:5px;'>";
            echo "❌ Teste 1: Erro na inserção rastreamento_tempo_real: " . $e->getMessage();
            echo "</div>";
        }
        
        try {
            // Teste 2: Inserir na trajeto_pontos
            $stmt = $pdo->prepare("
                INSERT INTO trajeto_pontos 
                (viagem_id, latitude, longitude, timestamp_ponto, velocidade, precisao) 
                VALUES (79, -23.550520, -46.633308, NOW(), 25.5, 10.0)
            ");
            $stmt->execute();
            
            echo "<div style='background:#e8f5e8;padding:10px;border-radius:5px;'>";
            echo "✅ Teste 2: Inserção em trajeto_pontos - SUCESSO";
            echo "</div>";
            
        } catch (Exception $e) {
            echo "<div style='background:#ffe8e8;padding:10px;border-radius:5px;'>";
            echo "❌ Teste 2: Erro na inserção trajeto_pontos: " . $e->getMessage();
            echo "</div>";
        }
        
    } else {
        echo "<div style='background:#fff3cd;padding:10px;border-radius:5px;'>";
        echo "<a href='?teste=inserir' style='background:#007bff;color:white;padding:10px 20px;text-decoration:none;border-radius:5px;'>🧪 Executar Teste de Inserção</a>";
        echo "</div>";
    }
    
    // 6. Verificar logs do servidor
    echo "<h2>📝 6. Análise de Possíveis Causas</h2>";
    
    echo "<div style='background:#f0f8ff;padding:15px;border-radius:5px;'>";
    echo "<h3>🔍 Possíveis Causas das Tabelas Vazias:</h3>";
    echo "<ol>";
    echo "<li><strong>App Android não está enviando dados:</strong>";
    echo "<ul>";
    echo "<li>LocationForegroundService não está rodando</li>";
    echo "<li>Erro na URL da API de sincronização</li>";
    echo "<li>Problema de conectividade durante viagem</li>";
    echo "</ul></li>";
    
    echo "<li><strong>API de sincronização com problema:</strong>";
    echo "<ul>";
    echo "<li>API não está inserindo dados no banco</li>";
    echo "<li>Erro de SQL ou estrutura de tabela</li>";
    echo "<li>Problema de permissões no banco</li>";
    echo "</ul></li>";
    
    echo "<li><strong>Estrutura de banco incorreta:</strong>";
    echo "<ul>";
    echo "<li>Tabelas não existem ou têm nomes diferentes</li>";
    echo "<li>Campos com nomes ou tipos diferentes</li>";
    echo "<li>Chaves estrangeiras impedindo inserção</li>";
    echo "</ul></li>";
    
    echo "<li><strong>Problema de sincronização:</strong>";
    echo "<ul>";
    echo "<li>App salva localmente mas não sincroniza</li>";
    echo "<li>Processo de sincronização nunca foi executado</li>";
    echo "<li>Dados ficam presos no app até sincronização manual</li>";
    echo "</ul></li>";
    echo "</ol>";
    echo "</div>";
    
    // 7. Próximos passos
    echo "<h2>🎯 7. Próximos Passos Recomendados</h2>";
    
    echo "<div style='background:#e8f5e8;padding:15px;border-radius:5px;'>";
    echo "<h3>🔧 Plano de Ação:</h3>";
    echo "<ol>";
    echo "<li><strong>Verificar estrutura completa:</strong>";
    echo "<ul>";
    echo "<li><a href='?action=show_create_tables' style='color:#007bff;'>Ver CREATE TABLE de todas as tabelas</a></li>";
    echo "</ul></li>";
    
    echo "<li><strong>Testar APIs manualmente:</strong>";
    echo "<ul>";
    echo "<li>Verificar se API de sync está funcionando</li>";
    echo "<li>Testar inserção manual via POST</li>";
    echo "</ul></li>";
    
    echo "<li><strong>Verificar logs do app Android:</strong>";
    echo "<ul>";
    echo "<li>Ver se há erros de sincronização</li>";
    echo "<li>Verificar se dados ficam salvos localmente</li>";
    echo "</ul></li>";
    
    echo "<li><strong>Criar dados de teste:</strong>";
    echo "<ul>";
    echo "<li><a href='criar-gps-viagem-75.php?viagem_id=79&acao=criar' style='background:#28a745;color:white;padding:8px 16px;text-decoration:none;border-radius:5px;'>🎯 Criar GPS Teste Viagem 79</a></li>";
    echo "</ul></li>";
    echo "</ol>";
    echo "</div>";
    
    // 8. Mostrar CREATE TABLES se solicitado
    if (isset($_GET['action']) && $_GET['action'] === 'show_create_tables') {
        echo "<h2>🏗️ 8. Estrutura das Tabelas (CREATE TABLE)</h2>";
        
        $tabelas = ['rastreamento_tempo_real', 'trajeto_pontos', 'viagens'];
        
        foreach ($tabelas as $tabela) {
            try {
                $stmt = $pdo->query("SHOW CREATE TABLE `$tabela`");
                $result = $stmt->fetch(PDO::FETCH_ASSOC);
                
                echo "<div style='background:#f8f9fa;padding:10px;border-radius:5px;margin:10px 0;'>";
                echo "<h4>🗄️ Tabela: $tabela</h4>";
                echo "<pre style='background:#fff;padding:10px;border:1px solid #ddd;border-radius:3px;overflow-x:auto;'>";
                echo htmlspecialchars($result['Create Table']);
                echo "</pre>";
                echo "</div>";
                
            } catch (Exception $e) {
                echo "<div style='background:#ffe8e8;padding:10px;border-radius:5px;'>";
                echo "<h4>❌ Erro ao obter CREATE TABLE para $tabela:</h4>";
                echo "<p>" . $e->getMessage() . "</p>";
                echo "</div>";
            }
        }
    }
    
} catch (Exception $e) {
    echo "<div style='background:#ffe8e8;padding:10px;border-radius:5px;margin:10px 0;'>";
    echo "❌ Erro de conexão: " . htmlspecialchars($e->getMessage());
    echo "</div>";
}
?> 
