<?php
include 'config/database.php';

header('Content-Type: text/html; charset=utf-8');
echo "<!DOCTYPE html><html><head><title>Forçar KM GPS Viagem 151</title></head><body>";
echo "<h2>🔧 CORRIGINDO: KM GPS da Viagem 151</h2>";

try {
    $pdo = conectarBanco();
    
    // SIMULAR O QUE O APP DEVERIA ENVIAR
    echo "<h3>1. Calculando KM GPS correto:</h3>";
    
    $stmt = $pdo->prepare("
        SELECT 
            id, latitude_inicial, longitude_inicial, 
            latitude_final, longitude_final, km_gps_final
        FROM viagens 
        WHERE id = 151
    ");
    $stmt->execute();
    $viagem = $stmt->fetch();
    
    if (!$viagem) {
        echo "<p>❌ Viagem 151 não encontrada!</p>";
        exit;
    }
    
    // Calcular distância real
    function haversine($lat1, $lon1, $lat2, $lon2) {
        $R = 6371;
        $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;
    }
    
    $kmCalculado = haversine(
        $viagem['latitude_inicial'], 
        $viagem['longitude_inicial'],
        $viagem['latitude_final'], 
        $viagem['longitude_final']
    );
    
    echo "<p>📍 <strong>Coordenadas:</strong></p>";
    echo "<ul>";
    echo "<li>Inicial: {$viagem['latitude_inicial']}, {$viagem['longitude_inicial']}</li>";
    echo "<li>Final: {$viagem['latitude_final']}, {$viagem['longitude_final']}</li>";
    echo "</ul>";
    
    echo "<p>📏 <strong>KM GPS calculado:</strong> " . number_format($kmCalculado, 3) . " km</p>";
    echo "<p>📊 <strong>KM GPS atual no banco:</strong> " . ($viagem['km_gps_final'] ?: 'NULL') . "</p>";
    
    // TESTAR ENDPOINT finalizar-viagem
    echo "<h3>2. Testando endpoint finalizar-viagem:</h3>";
    
    $dadosEnvio = [
        'viagem_id' => 151,
        'latitude_fim' => $viagem['latitude_final'],
        'longitude_fim' => $viagem['longitude_final'],
        'kmGpsFinal' => round($kmCalculado, 3), // ✅ USAR CAMPO CORRETO
        'observacoes' => 'Correção manual - KM GPS calculado: ' . round($kmCalculado, 3) . ' km'
    ];
    
    echo "<p>📤 <strong>Dados que seriam enviados pelo app:</strong></p>";
    echo "<pre>" . json_encode($dadosEnvio, JSON_PRETTY_PRINT) . "</pre>";
    
    // SIMULAR PROCESSAMENTO DA API CORRIGIDA
    $input = $dadosEnvio;
    
    // Lógica da API corrigida (aceita kmGpsFinal)
    $kmGps = isset($input['km_rodados']) ? floatval($input['km_rodados']) : 
             (isset($input['kmGpsFinal']) ? floatval($input['kmGpsFinal']) : null);
    
    echo "<p>🔄 <strong>Campo extraído pela API:</strong> " . ($kmGps ?: 'NULL') . "</p>";
    
    if ($kmGps && $kmGps > 0) {
        echo "<p style='color: green;'>✅ API reconheceria o campo kmGpsFinal corretamente!</p>";
        
        // EXECUTAR A CORREÇÃO REAL
        echo "<h3>3. Aplicando correção no banco:</h3>";
        
        $sql = "UPDATE viagens SET 
            km_gps_final = ?,
            observacoes = CONCAT(
                COALESCE(observacoes, ''), 
                ' | KM GPS corrigido em ', NOW(), ': ', ?, ' km'
            )
            WHERE id = ?";
        
        $stmt = $pdo->prepare($sql);
        $stmt->execute([$kmGps, $kmGps, 151]);
        
        $linhasAfetadas = $stmt->rowCount();
        
        if ($linhasAfetadas > 0) {
            echo "<p style='color: green;'>✅ <strong>CORREÇÃO APLICADA!</strong></p>";
            
            // Verificar resultado
            $stmt = $pdo->prepare("SELECT km_gps_final FROM viagens WHERE id = 151");
            $stmt->execute();
            $novoValor = $stmt->fetch()['km_gps_final'];
            
            echo "<p>🔍 <strong>Novo valor no banco:</strong> $novoValor km</p>";
            
            if ($novoValor && $novoValor > 0) {
                echo "<p style='color: green;'>🎉 <strong>SUCESSO TOTAL!</strong> KM GPS agora está correto!</p>";
            } else {
                echo "<p style='color: red;'>❌ Algo deu errado - valor ainda NULL</p>";
            }
            
        } else {
            echo "<p style='color: red;'>❌ Nenhuma linha foi afetada</p>";
        }
        
    } else {
        echo "<p style='color: red;'>❌ API não reconheceu o campo kmGpsFinal</p>";
    }
    
    // INVESTIGAR POR QUE APP NÃO ESTÁ ENVIANDO
    echo "<h3>4. Por que o app não enviou KM GPS?</h3>";
    
    echo "<div style='background: #fff3cd; padding: 15px; border-radius: 5px;'>";
    echo "<h4>⚠️ POSSÍVEIS CAUSAS:</h4>";
    echo "<ol>";
    echo "<li><strong>Viagem muito curta:</strong> 0.005 km é apenas 5 metros - app pode ter filtros</li>";
    echo "<li><strong>Tempo insuficiente:</strong> Viagem durou poucos minutos - GPS pode não ter dados suficientes</li>";
    echo "<li><strong>App não calcula:</strong> App pode não estar calculando distância local</li>";
    echo "<li><strong>Endpoint errado:</strong> App pode estar usando endpoint diferente</li>";
    echo "</ol>";
    echo "</div>";
    
    // PRÓXIMOS PASSOS
    echo "<h3>5. Próximos passos:</h3>";
    
    echo "<div style='background: #e8f5e8; padding: 15px; border-radius: 5px;'>";
    echo "<h4>✅ AÇÕES PARA FAZER:</h4>";
    echo "<ol>";
    echo "<li><strong>✅ KM GPS corrigido</strong> para esta viagem</li>";
    echo "<li><strong>📱 Finalizar viagem no app</strong> (teste real)</li>";
    echo "<li><strong>🔍 Verificar qual endpoint</strong> o app realmente usa</li>";
    echo "<li><strong>📏 Fazer viagem mais longa</strong> (pelo menos 1 km) para testar</li>";
    echo "</ol>";
    echo "</div>";
    
} catch (Exception $e) {
    echo "<p style='color: red;'>❌ Erro: " . $e->getMessage() . "</p>";
}

echo "</body></html>";
?> 
