<?php
header('Content-Type: text/html; charset=utf-8');
echo "<h2>🔍 Verificar Fonte dos Valores KM GPS</h2>";

try {
    require_once 'config/database.php';
    $pdo = Database::getConnection();
    
    // 1. Verificar viagens recentes
    echo "<h3>1. Viagens Recentes</h3>";
    
    $stmt = $pdo->query("SELECT id, cliente, km_inicial, km_final, km_gps_final, data_inicio, data_fim FROM viagens ORDER BY data_inicio DESC LIMIT 10");
    $viagens = $stmt->fetchAll();
    
    echo "<div style='background: #f8f9fa; padding: 15px; border: 1px solid #ddd; border-radius: 5px;'>";
    echo "<h4>📊 Últimas 10 Viagens:</h4>";
    echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
    echo "<tr style='background: #e3f2fd;'>";
    echo "<th>ID</th><th>Cliente</th><th>KM Inicial</th><th>KM Final</th><th>KM Manual</th><th>KM GPS Final</th><th>Data</th>";
    echo "</tr>";
    
    foreach ($viagens as $viagem) {
        $kmManual = $viagem['km_final'] - $viagem['km_inicial'];
        $kmGps = $viagem['km_gps_final'];
        
        echo "<tr>";
        echo "<td>{$viagem['id']}</td>";
        echo "<td>{$viagem['cliente']}</td>";
        echo "<td>{$viagem['km_inicial']}</td>";
        echo "<td>{$viagem['km_final']}</td>";
        echo "<td>{$kmManual}</td>";
        echo "<td>{$kmGps}</td>";
        echo "<td>{$viagem['data_inicio']}</td>";
        echo "</tr>";
    }
    echo "</table>";
    echo "</div>";
    
    // 2. Verificar pontos GPS das viagens
    echo "<h3>2. Análise dos Pontos GPS</h3>";
    
    foreach ($viagens as $viagem) {
        if ($viagem['km_gps_final'] > 0) {
            echo "<h4>🔍 Viagem ID {$viagem['id']} - {$viagem['cliente']}</h4>";
            
            // Contar pontos GPS
            $stmt = $pdo->prepare("SELECT COUNT(*) as total FROM rastreamento_tempo_real WHERE viagem_id = ?");
            $stmt->execute([$viagem['id']]);
            $result = $stmt->fetch();
            $totalPontos = $result['total'];
            
            echo "<p><strong>Pontos GPS coletados:</strong> {$totalPontos}</p>";
            
            if ($totalPontos > 0) {
                // Calcular distância real baseada nos pontos GPS
                $stmt = $pdo->prepare("SELECT latitude, longitude, timestamp FROM rastreamento_tempo_real WHERE viagem_id = ? ORDER BY timestamp ASC");
                $stmt->execute([$viagem['id']]);
                $pontos = $stmt->fetchAll();
                
                if (count($pontos) > 1) {
                    $distanciaReal = 0;
                    for ($i = 0; $i < count($pontos) - 1; $i++) {
                        $lat1 = $pontos[$i]['latitude'];
                        $lon1 = $pontos[$i]['longitude'];
                        $lat2 = $pontos[$i + 1]['latitude'];
                        $lon2 = $pontos[$i + 1]['longitude'];
                        
                        // Fórmula de Haversine
                        $R = 6371.0; // Raio da Terra em km
                        $dLat = deg2rad($lat2 - $lat1);
                        $dLon = deg2rad($lon2 - $lon1);
                        $lat1 = deg2rad($lat1);
                        $lat2 = deg2rad($lat2);
                        
                        $a = sin($dLat/2) * sin($dLat/2) + cos($lat1) * cos($lat2) * sin($dLon/2) * sin($dLon/2);
                        $c = 2 * atan2(sqrt($a), sqrt(1-$a));
                        $distancia = $R * $c;
                        
                        $distanciaReal += $distancia;
                    }
                    
                    $kmManual = $viagem['km_final'] - $viagem['km_inicial'];
                    $kmGpsSalvo = $viagem['km_gps_final'];
                    
                    echo "<div style='background: #e8f5e8; padding: 10px; border-radius: 5px; margin: 10px 0;'>";
                    echo "<p><strong>📊 Comparação de Valores:</strong></p>";
                    echo "<ul>";
                    echo "<li><strong>KM Manual (Odômetro):</strong> {$kmManual} km</li>";
                    echo "<li><strong>KM GPS Salvo:</strong> {$kmGpsSalvo} km</li>";
                    echo "<li><strong>KM GPS Calculado (Real):</strong> " . number_format($distanciaReal, 3) . " km</li>";
                    echo "</ul>";
                    
                    // Verificar qual valor está sendo usado
                    if (abs($kmGpsSalvo - $distanciaReal) < 0.1) {
                        echo "<p style='color: green;'>✅ <strong>FONTE: GPS REAL</strong> - O valor vem dos pontos GPS coletados</p>";
                    } elseif (abs($kmGpsSalvo - $kmManual) < 0.1) {
                        echo "<p style='color: orange;'>⚠️ <strong>FONTE: ODÔMETRO</strong> - O valor vem da diferença do odômetro</p>";
                    } else {
                        echo "<p style='color: red;'>❓ <strong>FONTE DESCONHECIDA</strong> - O valor não corresponde nem ao GPS nem ao odômetro</p>";
                    }
                    echo "</div>";
                } else {
                    echo "<p style='color: orange;'>⚠️ Poucos pontos GPS para calcular distância real</p>";
                }
            } else {
                echo "<p style='color: red;'>❌ Nenhum ponto GPS coletado</p>";
            }
        }
    }
    
    // 3. Resumo
    echo "<h3>3. Resumo</h3>";
    echo "<div style='background: #fff3e0; padding: 15px; border: 1px solid #ddd; border-radius: 5px;'>";
    echo "<h4>📋 Conclusões:</h4>";
    echo "<ul>";
    echo "<li><strong>GPS Real:</strong> Calculado a partir dos pontos GPS coletados durante a viagem</li>";
    echo "<li><strong>Odômetro:</strong> Diferença entre KM final e KM inicial informados pelo motorista</li>";
    echo "<li><strong>Precisão:</strong> GPS real é mais preciso para distâncias reais percorridas</li>";
    echo "</ul>";
    echo "</div>";
    
} catch (Exception $e) {
    echo "❌ Erro: " . $e->getMessage() . "<br>";
}

echo "<h3>✅ Análise Concluída!</h3>";
echo "<p><strong>Resumo:</strong> Este script mostra se os valores km_gps_final vêm do GPS real ou do odômetro.</p>";
?>
