<?php
/**
 * 🔍 Diagnóstico específico da viagem 75 - por que não há pontos GPS?
 */

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 "<h2>🔍 Diagnóstico da Viagem 75</h2>";
    
    // 1. Verificar se viagem 75 existe
    echo "<h3>1. ✅ Verificar se viagem existe:</h3>";
    $stmt = $pdo->prepare("SELECT * FROM viagens WHERE id = 75");
    $stmt->execute();
    $viagem75 = $stmt->fetch(PDO::FETCH_ASSOC);
    
    if ($viagem75) {
        echo "<div style='background:#e8f5e8;padding:10px;border-radius:5px;margin:10px 0;'>";
        echo "<strong>✅ Viagem 75 encontrada!</strong><br>";
        echo "Cliente: " . htmlspecialchars($viagem75['cliente']) . "<br>";
        echo "Data início: " . $viagem75['data_inicio'] . "<br>";
        echo "Data fim: " . ($viagem75['data_fim'] ?? 'Em andamento') . "<br>";
        echo "Status: " . ($viagem75['status'] ?? 'N/A') . "<br>";
        echo "Trajeto JSON: " . (empty($viagem75['trajeto']) ? '❌ VAZIO' : '✅ Presente (' . strlen($viagem75['trajeto']) . ' chars)') . "<br>";
        echo "</div>";
    } else {
        echo "<div style='background:#ffe8e8;padding:10px;border-radius:5px;margin:10px 0;'>";
        echo "❌ Viagem 75 NÃO encontrada no banco!";
        echo "</div>";
        exit;
    }
    
    // 2. Verificar pontos GPS na tabela rastreamento_tempo_real
    echo "<h3>2. 📍 Verificar pontos GPS coletados:</h3>";
    $stmt = $pdo->prepare("SELECT COUNT(*) as total FROM rastreamento_tempo_real WHERE viagem_id = 75");
    $stmt->execute();
    $totalPontos = $stmt->fetch(PDO::FETCH_ASSOC)['total'];
    
    if ($totalPontos > 0) {
        echo "<div style='background:#e8f5e8;padding:10px;border-radius:5px;margin:10px 0;'>";
        echo "<strong>✅ Encontrados $totalPontos pontos GPS!</strong>";
        echo "</div>";
        
        // Mostrar alguns pontos de exemplo
        $stmt = $pdo->prepare("SELECT * FROM rastreamento_tempo_real WHERE viagem_id = 75 ORDER BY timestamp LIMIT 5");
        $stmt->execute();
        $pontos = $stmt->fetchAll(PDO::FETCH_ASSOC);
        
        echo "<table border='1' style='border-collapse:collapse;margin:10px 0;'>";
        echo "<tr><th>Timestamp</th><th>Latitude</th><th>Longitude</th><th>Velocidade</th><th>Precisão</th></tr>";
        foreach ($pontos as $ponto) {
            echo "<tr>";
            echo "<td>" . $ponto['timestamp'] . "</td>";
            echo "<td>" . $ponto['latitude'] . "</td>";
            echo "<td>" . $ponto['longitude'] . "</td>";
            echo "<td>" . $ponto['velocidade'] . " km/h</td>";
            echo "<td>" . $ponto['precisao'] . "m</td>";
            echo "</tr>";
        }
        echo "</table>";
        
    } else {
        echo "<div style='background:#ffe8e8;padding:10px;border-radius:5px;margin:10px 0;'>";
        echo "<strong>❌ NENHUM ponto GPS encontrado para viagem 75!</strong><br>";
        echo "Isso explica por que aparece apenas uma linha reta no retaguarda.";
        echo "</div>";
    }
    
    // 3. Verificar últimas viagens com GPS para comparação
    echo "<h3>3. 📊 Últimas viagens com GPS (para comparação):</h3>";
    $stmt = $pdo->query("
        SELECT 
            v.id, v.cliente, v.data_inicio, v.data_fim,
            COUNT(r.id) as pontos_gps
        FROM viagens v 
        LEFT JOIN rastreamento_tempo_real r ON v.id = r.viagem_id 
        WHERE v.id >= 69
        GROUP BY v.id 
        ORDER BY v.id DESC
    ");
    $viagensComparacao = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    echo "<table border='1' style='border-collapse:collapse;margin:10px 0;'>";
    echo "<tr><th>ID</th><th>Cliente</th><th>Data Início</th><th>Pontos GPS</th><th>Status</th></tr>";
    foreach ($viagensComparacao as $viagem) {
        $corLinha = ($viagem['id'] == 75) ? "background:#ffeeee;" : "";
        $statusGps = $viagem['pontos_gps'] > 0 ? "✅ {$viagem['pontos_gps']} pontos" : "❌ Sem GPS";
        
        echo "<tr style='$corLinha'>";
        echo "<td><strong>" . $viagem['id'] . "</strong></td>";
        echo "<td>" . htmlspecialchars($viagem['cliente']) . "</td>";
        echo "<td>" . $viagem['data_inicio'] . "</td>";
        echo "<td>$statusGps</td>";
        echo "<td>" . ($viagem['data_fim'] ? 'Finalizada' : 'Em andamento') . "</td>";
        echo "</tr>";
    }
    echo "</table>";
    
    // 4. Possíveis causas e soluções
    echo "<h3>4. 🛠️ Possíveis causas e soluções:</h3>";
    echo "<div style='background:#f0f8ff;padding:15px;border-radius:5px;margin:10px 0;'>";
    echo "<strong>📱 Possíveis causas para viagem 75 sem GPS:</strong><br><br>";
    
    echo "<ol>";
    echo "<li><strong>Serviço de GPS não foi iniciado</strong> - App não ativou o LocationForegroundService</li>";
    echo "<li><strong>Erro de conectividade</strong> - App coletou GPS mas não conseguiu enviar para servidor</li>";
    echo "<li><strong>Permissões negadas</strong> - GPS foi negado pelo usuário durante a viagem</li>";
    echo "<li><strong>Problema de sincronização</strong> - ID da viagem não corresponde entre app e servidor</li>";
    echo "<li><strong>App fechado/morto</strong> - Sistema matou o app e GPS parou</li>";
    echo "</ol>";
    
    echo "<br><strong>🔧 Soluções recomendadas:</strong><br><br>";
    echo "<ol>";
    echo "<li><strong>Verificar logs do app</strong> durante próximas viagens</li>";
    echo "<li><strong>Testar viagem curta</strong> e verificar se GPS está sendo coletado</li>";
    echo "<li><strong>Garantir notificação ativa</strong> do serviço em foreground</li>";
    echo "<li><strong>Verificar configuração de servidor</strong> no app</li>";
    echo "</ol>";
    echo "</div>";
    
    // 5. Script para criar viagem de teste
    if ($totalPontos == 0) {
        echo "<h3>5. 🧪 Criar viagem de teste com GPS simulado:</h3>";
        echo "<div style='background:#fff3cd;padding:10px;border-radius:5px;margin:10px 0;'>";
        echo "<p>Para testar o sistema, podemos criar pontos GPS simulados para a viagem 75:</p>";
        echo "<button onclick='criarGPSTeste()' style='background:#007bff;color:white;padding:10px 20px;border:none;border-radius:5px;cursor:pointer;'>🎯 Criar GPS de Teste para Viagem 75</button>";
        echo "</div>";
    }
    
} catch (Exception $e) {
    echo "<div style='background:#ffe8e8;padding:10px;border-radius:5px;margin:10px 0;'>";
    echo "❌ Erro: " . htmlspecialchars($e->getMessage());
    echo "</div>";
}
?>

<script>
function criarGPSTeste() {
    if (confirm('Criar pontos GPS de teste para a viagem 75? Isso permitirá ver o tracejado no retaguarda.')) {
        window.location.href = '?acao=criar_gps_teste';
    }
}
</script>

<?php
// Ação para criar GPS de teste
if (isset($_GET['acao']) && $_GET['acao'] == 'criar_gps_teste') {
    try {
        echo "<h3>🧪 Criando GPS de teste para viagem 75:</h3>";
        
        // Pontos simulados representando um trajeto
        $pontosGPS = [
            [-11.01654100, -37.07599130, 0, 5.0],   // Início
            [-11.01656260, -37.07612190, 15, 4.8],  // Movendo
            [-11.01653230, -37.07619180, 25, 12.7], // Acelerando
            [-11.01642830, -37.07624850, 35, 11.2], // Velocidade cruzeiro
            [-11.01642320, -37.07630010, 40, 10.4], // Mantendo
            [-11.01639830, -37.07632550, 35, 9.5],  // Desacelerando
            [-11.01636490, -37.07642340, 25, 10.4], // Curva
            [-11.01629730, -37.07654620, 30, 9.6],  // Reta
            [-11.01625950, -37.07664480, 35, 7.9],  // Acelerando
            [-11.01620180, -37.07671780, 40, 8.9],  // Velocidade final
        ];
        
        $timestampBase = strtotime('2025-06-30 10:08:00'); // Data base
        $pontosInseridos = 0;
        
        foreach ($pontosGPS as $index => $ponto) {
            $latitude = $ponto[0];
            $longitude = $ponto[1];
            $velocidade = $ponto[2];
            $precisao = $ponto[3];
            $timestamp = date('Y-m-d H:i:s', $timestampBase + ($index * 30)); // 30s entre pontos
            
            $stmt = $pdo->prepare("
                INSERT INTO rastreamento_tempo_real 
                (viagem_id, latitude, longitude, velocidade, precisao, altitude, battery_level, timestamp)
                VALUES (75, ?, ?, ?, ?, -3.0, 100, ?)
            ");
            
            $stmt->execute([$latitude, $longitude, $velocidade, $precisao, $timestamp]);
            $pontosInseridos++;
        }
        
        echo "<div style='background:#e8f5e8;padding:10px;border-radius:5px;margin:10px 0;'>";
        echo "<strong>✅ GPS de teste criado com sucesso!</strong><br>";
        echo "Inseridos: $pontosInseridos pontos GPS<br>";
        echo "Agora a viagem 75 terá tracejado visível no retaguarda!<br><br>";
        echo "<a href='detalhes-viagem.html?id=75' target='_blank' style='background:#28a745;color:white;padding:8px 16px;text-decoration:none;border-radius:5px;'>🗺️ Ver Tracejado da Viagem 75</a>";
        echo "</div>";
        
    } catch (Exception $e) {
        echo "<div style='background:#ffe8e8;padding:10px;border-radius:5px;margin:10px 0;'>";
        echo "❌ Erro ao criar GPS de teste: " . htmlspecialchars($e->getMessage());
        echo "</div>";
    }
}
?> 
