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

header('Content-Type: text/html; charset=utf-8');
echo "<!DOCTYPE html><html><head><title>Testar Correção KM GPS</title></head><body>";
echo "<h2>🧪 TESTE: Correção KM GPS</h2>";

try {
    $pdo = conectarBanco();
    
    // 1. BUSCAR ÚLTIMA VIAGEM FINALIZADA
    echo "<h3>1. Buscando última viagem:</h3>";
    $stmt = $pdo->prepare("
        SELECT 
            id, cliente, 
            latitude_inicial, longitude_inicial,
            latitude_final, longitude_final,
            km_gps_final
        FROM viagens 
        WHERE data_fim IS NOT NULL 
        AND latitude_inicial IS NOT NULL 
        AND latitude_final IS NOT NULL
        ORDER BY id DESC 
        LIMIT 1
    ");
    $stmt->execute();
    $viagem = $stmt->fetch();
    
    if (!$viagem) {
        echo "<p>❌ Nenhuma viagem com coordenadas encontrada!</p>";
        exit;
    }
    
    echo "<p>✅ Viagem ID: <strong>{$viagem['id']}</strong> - Cliente: {$viagem['cliente']}</p>";
    echo "<p>KM GPS atual no banco: <strong>" . ($viagem['km_gps_final'] ?: 'NULL') . "</strong></p>";
    
    // 2. CALCULAR DISTÂNCIA REAL
    echo "<h3>2. Calculando distância:</h3>";
    
    $latIni = $viagem['latitude_inicial'];
    $lngIni = $viagem['longitude_inicial'];
    $latFim = $viagem['latitude_final'];
    $lngFim = $viagem['longitude_final'];
    
    // 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>Coordenadas:</strong></p>";
    echo "<p>&nbsp;&nbsp;Inicial: $latIni, $lngIni</p>";
    echo "<p>&nbsp;&nbsp;Final: $latFim, $lngFim</p>";
    echo "<p>📏 <strong>Distância calculada:</strong> " . number_format($distanciaCalculada, 2) . " km</p>";
    
    // 3. TESTAR A API CORRIGIDA
    echo "<h3>3. Testando API corrigida:</h3>";
    
    // Simular chamada para finalizar-viagem com kmGpsFinal
    $dadosTeste = [
        'viagem_id' => $viagem['id'],
        'latitude_fim' => $latFim,
        'longitude_fim' => $lngFim,
        'kmGpsFinal' => round($distanciaCalculada, 2), // USAR O CAMPO CORRETO
        'observacoes' => 'Teste automático - KM GPS corrigido'
    ];
    
    echo "<p>📋 <strong>Dados de teste:</strong></p>";
    echo "<pre>" . json_encode($dadosTeste, JSON_PRETTY_PRINT) . "</pre>";
    
    // Simular o processamento da API (mesma lógica que a API usa)
    $kmGps = isset($dadosTeste['km_rodados']) ? floatval($dadosTeste['km_rodados']) : 
             (isset($dadosTeste['kmGpsFinal']) ? floatval($dadosTeste['kmGpsFinal']) : null);
    
    echo "<p>🔄 <strong>Campo km_gps extraído:</strong> " . ($kmGps ?: 'NULL') . "</p>";
    
    if ($kmGps && $kmGps > 0) {
        echo "<p style='color: green;'>✅ <strong>SUCESSO!</strong> A API agora reconhece kmGpsFinal corretamente!</p>";
        
        // 4. APLICAR CORREÇÃO NO BANCO
        echo "<h3>4. Aplicando correção:</h3>";
        
        $sql = "UPDATE viagens SET km_gps_final = ?, observacoes = CONCAT(COALESCE(observacoes, ''), ' | Teste KM GPS: ', ?, ' km') WHERE id = ?";
        $stmt = $pdo->prepare($sql);
        $stmt->execute([$kmGps, $kmGps, $viagem['id']]);
        
        $linhasAfetadas = $stmt->rowCount();
        
        if ($linhasAfetadas > 0) {
            echo "<p style='color: green;'>✅ <strong>Viagem atualizada!</strong> KM GPS agora é: $kmGps km</p>";
            
            // Verificar resultado
            $stmt = $pdo->prepare("SELECT km_gps_final FROM viagens WHERE id = ?");
            $stmt->execute([$viagem['id']]);
            $novoValor = $stmt->fetch()['km_gps_final'];
            
            echo "<p>🔍 <strong>Verificação:</strong> Valor no banco agora é: $novoValor km</p>";
            
        } else {
            echo "<p style='color: red;'>❌ Nenhuma linha foi afetada</p>";
        }
        
    } else {
        echo "<p style='color: red;'>❌ <strong>FALHA!</strong> A API ainda não está reconhecendo o campo corretamente</p>";
    }
    
    // 5. INSTRUÇÕES PARA O USUÁRIO
    echo "<h3>5. Próximos passos:</h3>";
    echo "<ol>";
    echo "<li>✅ <strong>API corrigida:</strong> Agora aceita tanto 'km_rodados' quanto 'kmGpsFinal'</li>";
    echo "<li>🧪 <strong>Teste manual executado</strong> na viagem ID {$viagem['id']}</li>";
    echo "<li>📱 <strong>Teste no app:</strong> Faça uma nova viagem para verificar se KM GPS é salvo</li>";
    echo "<li>📊 <strong>Dashboard:</strong> Verificar se valores aparecem corretamente</li>";
    echo "</ol>";
    
} catch (Exception $e) {
    echo "<p style='color: red;'>❌ Erro: " . $e->getMessage() . "</p>";
}

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