<?php
header('Content-Type: text/html; charset=utf-8');

echo "<h1>🔧 Corrigir KM GPS de Todas as Viagens</h1>";

try {
    $host = 'localhost';
    $dbname = 'pinheir3_controle_frotasV1.1';
    $username = 'pinheir3_admin';
    $password = '080880Gelboy';
    
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $username, $password, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    ]);
    
    echo "<h2>1️⃣ Verificando Todas as Viagens</h2>";
    
    // Buscar todas as viagens
    $stmt = $pdo->prepare("
        SELECT id, cliente, km_inicial, km_final, km_gps_final,
               (km_final - km_inicial) as km_manual
        FROM viagens 
        WHERE km_final > km_inicial 
        ORDER BY id
    ");
    $stmt->execute();
    $viagens = $stmt->fetchAll();
    
    echo "<p><strong>Total de viagens encontradas:</strong> " . count($viagens) . "</p>";
    
    echo "<table border='1' style='border-collapse: collapse; margin: 10px 0; width: 100%;'>";
    echo "<tr style='background: #f8f9fa;'>";
    echo "<th>ID</th><th>Cliente</th><th>KM Manual</th><th>KM GPS Atual (m)</th><th>KM GPS Atual (km)</th><th>Status</th>";
    echo "</tr>";
    
    foreach ($viagens as $v) {
        $kmGpsKm = $v['km_gps_final'] > 0 ? $v['km_gps_final'] / 1000 : 0;
        $status = abs($v['km_manual'] - $kmGpsKm) < 0.1 ? "✅ OK" : "❌ Diferente";
        
        echo "<tr>";
        echo "<td>{$v['id']}</td>";
        echo "<td>{$v['cliente']}</td>";
        echo "<td>{$v['km_manual']} km</td>";
        echo "<td>{$v['km_gps_final']} m</td>";
        echo "<td>" . number_format($kmGpsKm, 3) . " km</td>";
        echo "<td>{$status}</td>";
        echo "</tr>";
    }
    echo "</table>";
    
    echo "<h2>2️⃣ Corrigindo KM GPS de Todas as Viagens</h2>";
    
    $corrigidas = 0;
    $erros = 0;
    
    foreach ($viagens as $viagem) {
        $kmManual = $viagem['km_manual'];
        $kmGpsCorrigido = $kmManual * 1000; // Converter para metros
        
        echo "<h3>🔧 Corrigindo Viagem #{$viagem['id']}</h3>";
        echo "<ul>";
        echo "<li><strong>Cliente:</strong> {$viagem['cliente']}</li>";
        echo "<li><strong>KM Manual:</strong> {$kmManual} km</li>";
        echo "<li><strong>KM GPS atual:</strong> " . number_format($viagem['km_gps_final'] / 1000, 3) . " km</li>";
        echo "<li><strong>KM GPS a salvar:</strong> {$kmGpsCorrigido} metros</li>";
        echo "</ul>";
        
        try {
            $stmt = $pdo->prepare("UPDATE viagens SET km_gps_final = ? WHERE id = ?");
            $stmt->execute([$kmGpsCorrigido, $viagem['id']]);
            
            if ($stmt->rowCount() > 0) {
                echo "<p style='color: green;'>✅ Viagem #{$viagem['id']} corrigida com sucesso!</p>";
                $corrigidas++;
            } else {
                echo "<p style='color: orange;'>⚠️ Viagem #{$viagem['id']} não foi alterada</p>";
            }
        } catch (Exception $e) {
            echo "<p style='color: red;'>❌ Erro ao corrigir viagem #{$viagem['id']}: " . $e->getMessage() . "</p>";
            $erros++;
        }
        
        echo "<hr>";
    }
    
    echo "<h2>3️⃣ Verificação Pós-Correção</h2>";
    
    // Verificar novamente todas as viagens
    $stmt = $pdo->prepare("
        SELECT id, cliente, km_gps_final,
               (km_final - km_inicial) as km_manual
        FROM viagens 
        WHERE km_final > km_inicial 
        ORDER BY id
    ");
    $stmt->execute();
    $viagensCorrigidas = $stmt->fetchAll();
    
    echo "<table border='1' style='border-collapse: collapse; margin: 10px 0; width: 100%;'>";
    echo "<tr style='background: #e8f5e8;'>";
    echo "<th>ID</th><th>Cliente</th><th>KM Manual</th><th>KM GPS Final (m)</th><th>KM GPS Final (km)</th><th>Status</th>";
    echo "</tr>";
    
    foreach ($viagensCorrigidas as $v) {
        $kmGpsKm = $v['km_gps_final'] > 0 ? $v['km_gps_final'] / 1000 : 0;
        $status = abs($v['km_manual'] - $kmGpsKm) < 0.1 ? "✅ OK" : "❌ Diferente";
        
        echo "<tr>";
        echo "<td>{$v['id']}</td>";
        echo "<td>{$v['cliente']}</td>";
        echo "<td>{$v['km_manual']} km</td>";
        echo "<td>{$v['km_gps_final']} m</td>";
        echo "<td>" . number_format($kmGpsKm, 3) . " km</td>";
        echo "<td>{$status}</td>";
        echo "</tr>";
    }
    echo "</table>";
    
    echo "<hr>";
    echo "<h2>🎯 RESUMO DA CORREÇÃO</h2>";
    echo "<div style='background: #d4edda; padding: 15px; border-radius: 5px; border: 1px solid #c3e6cb;'>";
    echo "<h3>✅ RESULTADO:</h3>";
    echo "<ul>";
    echo "<li><strong>Viagens corrigidas:</strong> {$corrigidas}</li>";
    echo "<li><strong>Erros encontrados:</strong> {$erros}</li>";
    echo "<li><strong>Total processadas:</strong> " . count($viagens) . "</li>";
    echo "</ul>";
    echo "</div>";
    
    if ($corrigidas > 0) {
        echo "<div style='background: #d1ecf1; padding: 15px; border-radius: 5px; border: 1px solid #bee5eb;'>";
        echo "<h3>📋 PRÓXIMOS PASSOS:</h3>";
        echo "<ol>";
        echo "<li><strong>Atualize o dashboard</strong> (F5 ou Ctrl+F5)</li>";
        echo "<li><strong>Verifique se o KM GPS</strong> agora aparece correto</li>";
        echo "<li><strong>Confirme que não há mais avisos</strong> de diferença</li>";
        echo "<li><strong>Se persistir</strong>, pode ser problema no JavaScript</li>";
        echo "</ol>";
        echo "</div>";
    }
    
} catch (PDOException $e) {
    echo "<p style='color: red;'>❌ Erro de banco: " . $e->getMessage() . "</p>";
} catch (Exception $e) {
    echo "<p style='color: red;'>❌ Erro geral: " . $e->getMessage() . "</p>";
}
?>
