<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

include 'config/database.php';

echo "<h2>🔍 DEBUG: Problema KM GPS = 0</h2>";

try {
    $pdo = conectarBanco();
    
    // 1. BUSCAR ÚLTIMA VIAGEM
    echo "<h3>📊 1. ÚLTIMA VIAGEM:</h3>";
    $stmt = $pdo->prepare("
        SELECT 
            id, cliente, tecnico_id, data_inicio, data_fim,
            latitude_inicial, longitude_inicial,
            latitude_final, longitude_final,
            km_inicial, km_final, km_gps_final,
            observacoes, trajeto
        FROM viagens 
        WHERE data_fim IS NOT NULL 
        ORDER BY id DESC 
        LIMIT 1
    ");
    $stmt->execute();
    $viagem = $stmt->fetch();
    
    if (!$viagem) {
        echo "❌ Nenhuma viagem finalizada encontrada!";
        exit;
    }
    
    echo "<table border='1' style='border-collapse: collapse;'>";
    echo "<tr><th>Campo</th><th>Valor</th><th>Status</th></tr>";
    echo "<tr><td>ID</td><td>{$viagem['id']}</td><td></td></tr>";
    echo "<tr><td>Cliente</td><td>{$viagem['cliente']}</td><td></td></tr>";
    echo "<tr><td>Data Início</td><td>{$viagem['data_inicio']}</td><td></td></tr>";
    echo "<tr><td>Data Fim</td><td>{$viagem['data_fim']}</td><td></td></tr>";
    
    // COORDENADAS
    $latIni = $viagem['latitude_inicial'];
    $lngIni = $viagem['longitude_inicial'];
    $latFim = $viagem['latitude_final'];
    $lngFim = $viagem['longitude_final'];
    
    echo "<tr><td>Lat/Lng Inicial</td><td>" . ($latIni ? "$latIni, $lngIni" : "NULL") . "</td><td>" . ($latIni ? "✅" : "❌") . "</td></tr>";
    echo "<tr><td>Lat/Lng Final</td><td>" . ($latFim ? "$latFim, $lngFim" : "NULL") . "</td><td>" . ($latFim ? "✅" : "❌") . "</td></tr>";
    
    // KMs
    echo "<tr><td>KM Inicial</td><td>{$viagem['km_inicial']}</td><td></td></tr>";
    echo "<tr><td>KM Final</td><td>{$viagem['km_final']}</td><td></td></tr>";
    echo "<tr><td><strong>KM GPS Final</strong></td><td><strong>" . ($viagem['km_gps_final'] ?: 'NULL') . "</strong></td><td><strong>" . ($viagem['km_gps_final'] > 0 ? "✅" : "❌") . "</strong></td></tr>";
    
    echo "</table>";
    
    // 2. CALCULAR DISTÂNCIA TEÓRICA
    echo "<h3>🧮 2. CALCULAR DISTÂNCIA TEÓRICA:</h3>";
    
    if ($latIni && $lngIni && $latFim && $lngFim) {
        // Fórmula Haversine
        function haversine($lat1, $lon1, $lat2, $lon2) {
            $R = 6371; // Raio da Terra em km
            $dLat = deg2rad($lat2 - $lat1);
            $dLon = deg2rad($lon2 - $lon1);
            $a = sin($dLat/2) * sin($dLat/2) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * sin($dLon/2) * sin($dLon/2);
            $c = 2 * atan2(sqrt($a), sqrt(1-$a));
            return $R * $c;
        }
        
        $distanciaCalculada = haversine($latIni, $lngIni, $latFim, $lngFim);
        
        echo "<p><strong>Distância linha reta:</strong> " . number_format($distanciaCalculada, 2) . " km</p>";
        
        if ($viagem['km_gps_final'] > 0) {
            $diferenca = abs($distanciaCalculada - $viagem['km_gps_final']);
            echo "<p><strong>Diferença com banco:</strong> " . number_format($diferenca, 2) . " km</p>";
        } else {
            echo "<p><strong>❌ KM GPS no banco está NULL/0 - deveria ser ~" . number_format($distanciaCalculada, 2) . " km</strong></p>";
        }
    } else {
        echo "<p>❌ Coordenadas faltando - não é possível calcular distância</p>";
    }
    
    // 3. VERIFICAR TRAJETO
    echo "<h3>🗺️ 3. VERIFICAR TRAJETO:</h3>";
    
    if ($viagem['trajeto']) {
        $trajeto = json_decode($viagem['trajeto'], true);
        if ($trajeto && is_array($trajeto)) {
            echo "<p>✅ Trajeto salvo com <strong>" . count($trajeto) . " pontos</strong></p>";
            
            // Calcular distância do trajeto
            $distanciaTrajeto = 0;
            for ($i = 1; $i < count($trajeto); $i++) {
                $lat1 = $trajeto[$i-1]['latitude'] ?? $trajeto[$i-1][0];
                $lng1 = $trajeto[$i-1]['longitude'] ?? $trajeto[$i-1][1];
                $lat2 = $trajeto[$i]['latitude'] ?? $trajeto[$i][0];
                $lng2 = $trajeto[$i]['longitude'] ?? $trajeto[$i][1];
                
                if ($lat1 && $lng1 && $lat2 && $lng2) {
                    $distanciaTrajeto += haversine($lat1, $lng1, $lat2, $lng2);
                }
            }
            
            echo "<p><strong>Distância do trajeto:</strong> " . number_format($distanciaTrajeto, 2) . " km</p>";
            
            if ($viagem['km_gps_final'] > 0) {
                $diferencaTrajeto = abs($distanciaTrajeto - $viagem['km_gps_final']);
                echo "<p><strong>Diferença trajeto vs banco:</strong> " . number_format($diferencaTrajeto, 2) . " km</p>";
            }
            
        } else {
            echo "<p>❌ Trajeto salvo mas formato inválido</p>";
        }
    } else {
        echo "<p>❌ Nenhum trajeto salvo</p>";
    }
    
    // 4. VERIFICAR LOGS DA API
    echo "<h3>📋 4. ANALISAR LOGS DA API:</h3>";
    echo "<p><strong>Próximos passos para diagnosticar:</strong></p>";
    echo "<ol>";
    echo "<li>Verificar se o app está enviando o campo <code>km_rodados</code> para a API</li>";
    echo "<li>Verificar logs de error_log() da API em <code>finalizar-viagem</code></li>";
    echo "<li>Testar manualmente envio para API</li>";
    echo "</ol>";
    
    // 5. TESTE MANUAL DE API
    echo "<h3>🧪 5. TESTE MANUAL DE API:</h3>";
    echo "<p>Para testar manualmente, envie POST para:</p>";
    echo "<pre>POST /api-simples-v2.php?acao=finalizar-viagem</pre>";
    echo "<pre>Content-Type: application/json</pre>";
    echo "<pre>{
    \"viagem_id\": {$viagem['id']},
    \"latitude_fim\": -11.0163,
    \"longitude_fim\": -37.0761,
    \"km_rodados\": 15.5,
    \"observacoes\": \"Teste manual KM GPS\"
}</pre>";
    
    // 6. PROBLEMAS POSSÍVEIS
    echo "<h3>🔧 6. POSSÍVEIS PROBLEMAS:</h3>";
    echo "<ul>";
    
    if (!$viagem['km_gps_final'] || $viagem['km_gps_final'] == 0) {
        echo "<li>❌ <strong>App não está enviando km_rodados</strong></li>";
        echo "<li>❌ <strong>API não está recebendo km_rodados corretamente</strong></li>";
        echo "<li>❌ <strong>Campo km_gps_final não está sendo atualizado no UPDATE</strong></li>";
    }
    
    if (!$latFim || !$lngFim) {
        echo "<li>❌ <strong>Coordenadas finais não estão sendo salvas</strong></li>";
    }
    
    if (!$viagem['trajeto']) {
        echo "<li>❌ <strong>Trajeto não está sendo capturado durante a viagem</strong></li>";
    }
    
    echo "</ul>";
    
} catch (Exception $e) {
    echo "❌ Erro: " . $e->getMessage();
}
?>

<style>
table { margin: 10px 0; }
th, td { padding: 8px; text-align: left; }
th { background: #f0f0f0; }
pre { background: #f5f5f5; padding: 10px; border-radius: 4px; }
</style> 
