<?php
// Script para corrigir dados faltantes nas viagens 192 e 193
require_once 'config/database.php';

header('Content-Type: application/json');

try {
    $pdo = conectarBanco();
    
    echo "=== CORREÇÃO DADOS VIAGENS 192 E 193 ===\n\n";
    
    // 1. Verificar dados atuais
    echo "1. DADOS ATUAIS:\n";
    $stmt = $pdo->prepare("
        SELECT 
            id,
            cliente,
            km_inicial,
            km_final,
            km_gps_final,
            data_inicio,
            data_fim,
            trajeto
        FROM viagens 
        WHERE id IN (192, 193)
        ORDER BY id
    ");
    $stmt->execute();
    $viagens = $stmt->fetchAll();
    
    foreach ($viagens as $viagem) {
        echo "\n--- VIAGEM ID {$viagem['id']} ---\n";
        echo "- Cliente: '{$viagem['cliente']}'\n";
        echo "- KM Inicial: {$viagem['km_inicial']}\n";
        echo "- KM Final: {$viagem['km_final']}\n";
        echo "- KM GPS Final: " . ($viagem['km_gps_final'] ?? 'NULL') . "\n";
        echo "- Data Início: '{$viagem['data_inicio']}'\n";
        echo "- Data Fim: '{$viagem['data_fim']}'\n";
        echo "- Trajeto: " . (strlen($viagem['trajeto']) > 50 ? 'TEM DADOS' : 'VAZIO/NULL') . "\n";
    }
    
    // 2. Calcular KM GPS baseado no trajeto
    echo "\n2. CALCULANDO KM GPS:\n";
    foreach ($viagens as $viagem) {
        if (!empty($viagem['trajeto'])) {
            $trajeto = json_decode($viagem['trajeto'], true);
            if ($trajeto && is_array($trajeto) && count($trajeto) > 1) {
                // Calcular distância total
                $distanciaTotal = 0;
                for ($i = 0; $i < count($trajeto) - 1; $i++) {
                    $ponto1 = $trajeto[$i];
                    $ponto2 = $trajeto[$i + 1];
                    
                    // Fórmula de Haversine
                    $lat1 = deg2rad($ponto1['latitude'] ?? $ponto1[1]);
                    $lon1 = deg2rad($ponto1['longitude'] ?? $ponto1[0]);
                    $lat2 = deg2rad($ponto2['latitude'] ?? $ponto2[1]);
                    $lon2 = deg2rad($ponto2['longitude'] ?? $ponto2[0]);
                    
                    $dlat = $lat2 - $lat1;
                    $dlon = $lon2 - $lon1;
                    
                    $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 = 6371 * $c; // Raio da Terra em km
                    
                    $distanciaTotal += $distancia;
                }
                
                $kmGpsMetros = round($distanciaTotal * 1000); // Converter para metros
                echo "- Viagem ID {$viagem['id']}: KM GPS calculado = {$kmGpsMetros} metros (" . round($distanciaTotal, 3) . " km)\n";
                
                // 3. Atualizar dados
                echo "\n3. ATUALIZANDO VIAGEM ID {$viagem['id']}:\n";
                
                // Definir KM Final baseado no KM Inicial + KM GPS
                $kmFinal = $viagem['km_inicial'] + max(1, round($distanciaTotal));
                
                $stmt = $pdo->prepare("
                    UPDATE viagens 
                    SET 
                        km_final = ?,
                        km_gps_final = ?
                    WHERE id = ?
                ");
                $stmt->execute([$kmFinal, $kmGpsMetros, $viagem['id']]);
                
                echo "✅ KM Final atualizado: {$viagem['km_final']} → {$kmFinal}\n";
                echo "✅ KM GPS Final atualizado: NULL → {$kmGpsMetros}\n";
                
            } else {
                echo "- Viagem ID {$viagem['id']}: Trajeto inválido ou insuficiente\n";
                
                // 4. Se não tem trajeto, usar valores padrão
                echo "\n4. APLICANDO VALORES PADRÃO PARA VIAGEM ID {$viagem['id']}:\n";
                
                $kmFinal = $viagem['km_inicial'] + 2; // Adicionar 2km como padrão
                $kmGpsMetros = 2000; // 2km em metros
                
                $stmt = $pdo->prepare("
                    UPDATE viagens 
                    SET 
                        km_final = ?,
                        km_gps_final = ?
                    WHERE id = ?
                ");
                $stmt->execute([$kmFinal, $kmGpsMetros, $viagem['id']]);
                
                echo "✅ KM Final atualizado: {$viagem['km_final']} → {$kmFinal}\n";
                echo "✅ KM GPS Final atualizado: NULL → {$kmGpsMetros}\n";
            }
        } else {
            echo "- Viagem ID {$viagem['id']}: Trajeto vazio\n";
            
            // 5. Se não tem trajeto, usar valores padrão
            echo "\n5. APLICANDO VALORES PADRÃO PARA VIAGEM ID {$viagem['id']}:\n";
            
            $kmFinal = $viagem['km_inicial'] + 2; // Adicionar 2km como padrão
            $kmGpsMetros = 2000; // 2km em metros
            
            $stmt = $pdo->prepare("
                UPDATE viagens 
                SET 
                    km_final = ?,
                    km_gps_final = ?
                WHERE id = ?
            ");
            $stmt->execute([$kmFinal, $kmGpsMetros, $viagem['id']]);
            
            echo "✅ KM Final atualizado: {$viagem['km_final']} → {$kmFinal}\n";
            echo "✅ KM GPS Final atualizado: NULL → {$kmGpsMetros}\n";
        }
    }
    
    // 6. Verificar resultado final
    echo "\n6. RESULTADO FINAL:\n";
    $stmt = $pdo->prepare("
        SELECT 
            id,
            cliente,
            km_inicial,
            km_final,
            km_gps_final,
            (km_final - km_inicial) as km_manual,
            (km_gps_final / 1000.0) as km_gps_km
        FROM viagens 
        WHERE id IN (192, 193)
        ORDER BY id
    ");
    $stmt->execute();
    $resultado = $stmt->fetchAll();
    
    foreach ($resultado as $viagem) {
        echo "\n--- VIAGEM ID {$viagem['id']} ---\n";
        echo "- Cliente: '{$viagem['cliente']}'\n";
        echo "- KM Inicial: {$viagem['km_inicial']}\n";
        echo "- KM Final: {$viagem['km_final']}\n";
        echo "- KM Manual: {$viagem['km_manual']} km\n";
        echo "- KM GPS: " . round($viagem['km_gps_km'], 3) . " km\n";
    }
    
    echo "\n=== FIM DA CORREÇÃO ===\n";
    
} catch (Exception $e) {
    echo "❌ Erro: " . $e->getMessage() . "\n";
}
?>
