<?php
header('Content-Type: text/html; charset=utf-8');
echo "<h2>🧪 Teste Correção KM GPS</h2>";

try {
    require_once 'config/database.php';
    $pdo = Database::getConnection();
    
    // 1. Verificar viagem 1
    echo "<h3>1. Verificar viagem ID 1</h3>";
    
    $stmt = $pdo->prepare("SELECT * FROM viagens WHERE id = ?");
    $stmt->execute([1]);
    $viagem = $stmt->fetch();
    
    if ($viagem) {
        echo "✅ Viagem encontrada:<br>";
        echo "- ID: {$viagem['id']}<br>";
        echo "- Cliente: {$viagem['cliente']}<br>";
        echo "- KM Inicial: {$viagem['km_inicial']}<br>";
        echo "- KM Final: {$viagem['km_final']}<br>";
        echo "- KM GPS Final: {$viagem['km_gps_final']}<br>";
        echo "- Data início: {$viagem['data_inicio']}<br>";
        echo "- Data fim: " . ($viagem['data_fim'] ?? 'NULL') . "<br>";
        
        // Calcular diferença
        $kmManual = $viagem['km_final'] - $viagem['km_inicial'];
        $kmGpsMetros = $viagem['km_gps_final'] ?? 0;
        $kmGpsKm = $kmGpsMetros / 1000;
        
        echo "<br><strong>📊 Análise:</strong><br>";
        echo "- KM Manual (odômetro): {$kmManual} km<br>";
        echo "- KM GPS (atual): {$kmGpsMetros} metros = {$kmGpsKm} km<br>";
        
        if ($kmGpsMetros == 1) {
            echo "<span style='color: red;'>❌ PROBLEMA: KM GPS = 1 (deveria ser {$kmGpsMetros} metros)</span><br>";
        } else {
            echo "<span style='color: green;'>✅ KM GPS parece correto: {$kmGpsMetros} metros</span><br>";
        }
        
    } else {
        echo "❌ Viagem ID 1 não encontrada<br>";
    }
    
    // 2. Verificar pontos GPS da viagem 1
    echo "<h3>2. Verificar pontos GPS da viagem 1</h3>";
    
    $stmt = $pdo->prepare("SELECT COUNT(*) as total FROM rastreamento_tempo_real WHERE viagem_id = ?");
    $stmt->execute([1]);
    $result = $stmt->fetch();
    
    echo "📊 Total de pontos GPS: " . $result['total'] . "<br>";
    
    if ($result['total'] > 0) {
        // Verificar últimos pontos
        $stmt = $pdo->prepare("SELECT * FROM rastreamento_tempo_real WHERE viagem_id = ? ORDER BY timestamp DESC LIMIT 3");
        $stmt->execute([1]);
        $pontos = $stmt->fetchAll();
        
        echo "<h4>Últimos 3 pontos GPS:</h4>";
        echo "<table border='1' style='border-collapse: collapse;'>";
        echo "<tr><th>ID</th><th>Latitude</th><th>Longitude</th><th>Velocidade</th><th>Timestamp</th></tr>";
        foreach ($pontos as $ponto) {
            echo "<tr>";
            echo "<td>{$ponto['id']}</td>";
            echo "<td>{$ponto['latitude']}</td>";
            echo "<td>{$ponto['longitude']}</td>";
            echo "<td>{$ponto['velocidade']}</td>";
            echo "<td>{$ponto['timestamp']}</td>";
            echo "</tr>";
        }
        echo "</table>";
        
        // Calcular distância real dos pontos
        if (count($pontos) >= 2) {
            echo "<h4>🧮 Calculando distância real dos pontos GPS:</h4>";
            
            $distanciaTotal = 0;
            for ($i = 1; $i < count($pontos); $i++) {
                $pontoAnterior = $pontos[$i-1];
                $pontoAtual = $pontos[$i];
                
                // Fórmula Haversine
                $R = 6371; // Raio da Terra em km
                $dLat = deg2rad($pontoAtual['latitude'] - $pontoAnterior['latitude']);
                $dLon = deg2rad($pontoAtual['longitude'] - $pontoAnterior['longitude']);
                $lat1 = deg2rad($pontoAnterior['latitude']);
                $lat2 = deg2rad($pontoAtual['latitude']);
                $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;
                $distanciaTotal += $distancia;
                
                echo "- Segmento {$i}: " . number_format($distancia, 6) . " km<br>";
            }
            
            $distanciaMetros = $distanciaTotal * 1000;
            echo "<br><strong>📊 Distância calculada dos últimos pontos:</strong><br>";
            echo "- Total: " . number_format($distanciaTotal, 6) . " km<br>";
            echo "- Em metros: " . number_format($distanciaMetros, 0) . " metros<br>";
            
            // Comparar com o valor salvo
            $kmGpsSalvo = $viagem['km_gps_final'] ?? 0;
            echo "<br><strong>🔍 Comparação:</strong><br>";
            echo "- Valor salvo: {$kmGpsSalvo} metros<br>";
            echo "- Valor calculado: " . number_format($distanciaMetros, 0) . " metros<br>";
            
            if (abs($kmGpsSalvo - $distanciaMetros) < 10) {
                echo "<span style='color: green;'>✅ Valores próximos (diferença < 10 metros)</span><br>";
            } else {
                echo "<span style='color: red;'>❌ Valores muito diferentes!</span><br>";
            }
        }
        
    } else {
        echo "❌ Nenhum ponto GPS encontrado para viagem 1<br>";
    }
    
    // 3. Testar correção manual
    echo "<h3>3. Testar correção manual</h3>";
    
    if (isset($_POST['corrigir_km_gps'])) {
        $novoValor = intval($_POST['novo_valor']);
        
        $stmt = $pdo->prepare("UPDATE viagens SET km_gps_final = ? WHERE id = ?");
        $result = $stmt->execute([$novoValor, 1]);
        
        if ($result) {
            echo "<span style='color: green;'>✅ KM GPS corrigido para {$novoValor} metros!</span><br>";
        } else {
            echo "<span style='color: red;'>❌ Erro ao corrigir KM GPS!</span><br>";
        }
    }
    
    // Formulário para correção manual
    echo "<form method='post' style='background: #f8f9fa; padding: 15px; border: 1px solid #ddd; border-radius: 5px;'>";
    echo "<h4>🔧 Correção Manual:</h4>";
    echo "<p>Novo valor para km_gps_final (em metros):</p>";
    echo "<input type='number' name='novo_valor' value='390' style='padding: 5px; margin-right: 10px;'>";
    echo "<button type='submit' name='corrigir_km_gps' style='background: #007bff; color: white; padding: 5px 15px; border: none; border-radius: 3px; cursor: pointer;'>Corrigir</button>";
    echo "</form>";
    
    // 4. Verificar outras viagens
    echo "<h3>4. Verificar outras viagens</h3>";
    
    $stmt = $pdo->query("SELECT id, cliente, km_gps_final, data_fim FROM viagens WHERE km_gps_final IS NOT NULL ORDER BY id DESC LIMIT 5");
    $viagens = $stmt->fetchAll();
    
    if (!empty($viagens)) {
        echo "<h4>Últimas 5 viagens com km_gps_final:</h4>";
        echo "<table border='1' style='border-collapse: collapse;'>";
        echo "<tr><th>ID</th><th>Cliente</th><th>KM GPS Final</th><th>Data Fim</th></tr>";
        foreach ($viagens as $v) {
            $kmGps = $v['km_gps_final'];
            $kmGpsKm = $kmGps / 1000;
            $status = $kmGps == 1 ? "❌ PROBLEMA" : "✅ OK";
            
            echo "<tr>";
            echo "<td>{$v['id']}</td>";
            echo "<td>{$v['cliente']}</td>";
            echo "<td>{$kmGps} m ({$kmGpsKm} km) {$status}</td>";
            echo "<td>{$v['data_fim']}</td>";
            echo "</tr>";
        }
        echo "</table>";
    } else {
        echo "❌ Nenhuma viagem com km_gps_final encontrada<br>";
    }
    
} catch (Exception $e) {
    echo "❌ Erro: " . $e->getMessage() . "<br>";
}

echo "<h3>✅ Teste concluído!</h3>";
echo "<p><strong>Próximos passos:</strong></p>";
echo "<ul>";
echo "<li>Se o valor ainda for 1, o problema persiste no app Android</li>";
echo "<li>Se o valor for correto (390), a correção funcionou</li>";
echo "<li>Use o formulário acima para corrigir manualmente se necessário</li>";
echo "</ul>";
?>
