<?php
header('Content-Type: text/html; charset=utf-8');
echo "<h2>🔧 Corrigir KM GPS Final</h2>";

try {
    require_once 'config/database.php';
    $pdo = Database::getConnection();
    
    // 1. Verificar situação atual
    echo "<h3>1. Situação Atual</h3>";
    
    $stmt = $pdo->query("SELECT COUNT(*) as total FROM rastreamento_tempo_real");
    $result = $stmt->fetch();
    $totalPontos = $result['total'];
    
    echo "<p><strong>📊 Total de pontos GPS na tabela:</strong> {$totalPontos}</p>";
    
    if ($totalPontos == 0) {
        echo "<div style='background: #ffebee; padding: 10px; border-radius: 5px; margin: 10px 0;'>";
        echo "<h4>❌ PROBLEMA IDENTIFICADO!</h4>";
        echo "<p>A tabela <strong>rastreamento_tempo_real</strong> está vazia!</p>";
        echo "<p>Isso significa que:</p>";
        echo "<ul>";
        echo "<li>❌ O serviço GPS não está enviando dados</li>";
        echo "<li>❌ A API não está salvando pontos GPS</li>";
        echo "<li>❌ O <strong>km_gps_final</strong> está sendo zerado</li>";
        echo "<li>❌ O sistema está usando valores do odômetro</li>";
        echo "</ul>";
        echo "</div>";
    }
    
    // 2. Verificar viagens com km_gps_final = 0
    echo "<h3>2. Viagens com KM GPS Final = 0</h3>";
    
    $stmt = $pdo->query("SELECT id, cliente, km_inicial, km_final, km_gps_final, data_inicio, data_fim FROM viagens WHERE km_gps_final = 0 OR km_gps_final IS NULL ORDER BY data_inicio DESC LIMIT 10");
    $viagens = $stmt->fetchAll();
    
    echo "<p><strong>📊 Viagens com km_gps_final = 0:</strong> " . count($viagens) . "</p>";
    
    if (count($viagens) > 0) {
        echo "<div style='background: #fff3e0; padding: 10px; border-radius: 5px; margin: 10px 0;'>";
        echo "<h4>⚠️ Viagens afetadas:</h4>";
        echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
        echo "<tr style='background: #e3f2fd;'>";
        echo "<th>ID</th><th>Cliente</th><th>KM Inicial</th><th>KM Final</th><th>KM Manual</th><th>KM GPS Final</th><th>Data</th>";
        echo "</tr>";
        
        foreach ($viagens as $viagem) {
            $kmManual = $viagem['km_final'] - $viagem['km_inicial'];
            echo "<tr>";
            echo "<td>{$viagem['id']}</td>";
            echo "<td>{$viagem['cliente']}</td>";
            echo "<td>{$viagem['km_inicial']}</td>";
            echo "<td>{$viagem['km_final']}</td>";
            echo "<td>{$kmManual}</td>";
            echo "<td>" . ($viagem['km_gps_final'] ?? 'NULL') . "</td>";
            echo "<td>{$viagem['data_inicio']}</td>";
            echo "</tr>";
        }
        echo "</table>";
        echo "</div>";
    }
    
    // 3. Corrigir API para usar fallback do odômetro
    echo "<h3>3. Corrigir API</h3>";
    
    if (isset($_POST['corrigir_api'])) {
        echo "<h4>🔧 Corrigindo API...</h4>";
        
        // Ler o arquivo da API
        $apiFile = 'api-simples-v2.php';
        $content = file_get_contents($apiFile);
        
        // Procurar a linha problemática
        $linhaProblema = '} else {
                        error_log("⚠️ Poucos pontos GPS para calcular distância: " . count($pontos) . " pontos");
                        $kmGps = 0;
                    }';
        
        $linhaCorrecao = '} else {
                        error_log("⚠️ Poucos pontos GPS para calcular distância: " . count($pontos) . " pontos");
                        // 🔧 CORREÇÃO: Usar diferença do odômetro como fallback
                        $kmGps = isset($input["km_final"]) && isset($input["km_inicial"]) ? 
                                 (intval($input["km_final"]) - intval($input["km_inicial"])) : 0;
                        error_log("🔄 Usando fallback do odômetro: {$kmGps} km");
                    }';
        
        if (strpos($content, $linhaProblema) !== false) {
            $content = str_replace($linhaProblema, $linhaCorrecao, $content);
            
            // Fazer backup
            copy($apiFile, $apiFile . '.backup.' . date('Y-m-d-H-i-s'));
            
            // Salvar correção
            file_put_contents($apiFile, $content);
            
            echo "<div style='background: #e8f5e8; padding: 10px; border-radius: 5px; margin: 10px 0;'>";
            echo "<h4>✅ API corrigida com sucesso!</h4>";
            echo "<p>O fallback do odômetro foi implementado.</p>";
            echo "<p>Backup criado: <code>{$apiFile}.backup." . date('Y-m-d-H-i-s') . "</code></p>";
            echo "</div>";
        } else {
            echo "<div style='background: #ffebee; padding: 10px; border-radius: 5px; margin: 10px 0;'>";
            echo "<h4>❌ Linha não encontrada</h4>";
            echo "<p>A linha problemática não foi encontrada no arquivo.</p>";
            echo "</div>";
        }
    }
    
    // 4. Corrigir viagens existentes
    echo "<h3>4. Corrigir Viagens Existentes</h3>";
    
    if (isset($_POST['corrigir_viagens'])) {
        echo "<h4>🔧 Corrigindo viagens existentes...</h4>";
        
        $viagensCorrigidas = 0;
        
        foreach ($viagens as $viagem) {
            if ($viagem['km_final'] && $viagem['km_inicial']) {
                $kmManual = $viagem['km_final'] - $viagem['km_inicial'];
                
                // Atualizar km_gps_final com o valor do odômetro
                $stmt = $pdo->prepare("UPDATE viagens SET km_gps_final = ? WHERE id = ?");
                $stmt->execute([$kmManual, $viagem['id']]);
                
                if ($stmt->rowCount() > 0) {
                    $viagensCorrigidas++;
                    echo "<p>✅ Viagem #{$viagem['id']}: km_gps_final atualizado para {$kmManual} km</p>";
                }
            }
        }
        
        echo "<div style='background: #e8f5e8; padding: 10px; border-radius: 5px; margin: 10px 0;'>";
        echo "<h4>✅ Correção concluída!</h4>";
        echo "<p><strong>Viagens corrigidas:</strong> {$viagensCorrigidas}</p>";
        echo "</div>";
    }
    
    // 5. Formulários de ação
    echo "<h3>5. Ações</h3>";
    
    echo "<div style='background: #e3f2fd; padding: 15px; border: 1px solid #ddd; border-radius: 5px; margin: 10px 0;'>";
    echo "<h4>🔧 Corrigir API:</h4>";
    echo "<p>Implementa fallback do odômetro quando não há pontos GPS:</p>";
    echo "<form method='post'>";
    echo "<button type='submit' name='corrigir_api' style='background: #007bff; color: white; padding: 10px 20px; border: none; border-radius: 5px; cursor: pointer;'>🔧 Corrigir API</button>";
    echo "</form>";
    echo "</div>";
    
    echo "<div style='background: #fff3e0; padding: 15px; border: 1px solid #ddd; border-radius: 5px; margin: 10px 0;'>";
    echo "<h4>🔧 Corrigir Viagens Existentes:</h4>";
    echo "<p>Atualiza km_gps_final das viagens existentes com valores do odômetro:</p>";
    echo "<form method='post'>";
    echo "<button type='submit' name='corrigir_viagens' style='background: #ff9800; color: white; padding: 10px 20px; border: none; border-radius: 5px; cursor: pointer;'>🔧 Corrigir Viagens</button>";
    echo "</form>";
    echo "</div>";
    
    // 6. Próximos passos
    echo "<h3>6. Próximos Passos</h3>";
    echo "<div style='background: #f8f9fa; padding: 15px; border: 1px solid #ddd; border-radius: 5px;'>";
    echo "<h4>📋 Para resolver completamente:</h4>";
    echo "<ol>";
    echo "<li><strong>Corrigir API:</strong> Implementar fallback do odômetro</li>";
    echo "<li><strong>Corrigir viagens existentes:</strong> Atualizar km_gps_final</li>";
    echo "<li><strong>Investigar GPS:</strong> Por que a tabela rastreamento_tempo_real está vazia?</li>";
    echo "<li><strong>Testar Android:</strong> Verificar se o serviço GPS está funcionando</li>";
    echo "<li><strong>Monitorar:</strong> Verificar se novos pontos GPS são salvos</li>";
    echo "</ol>";
    echo "</div>";
    
} catch (Exception $e) {
    echo "❌ Erro: " . $e->getMessage() . "<br>";
}

echo "<h3>✅ Análise Concluída!</h3>";
echo "<p><strong>Resumo:</strong> O problema é que a tabela rastreamento_tempo_real está vazia, fazendo com que km_gps_final seja zerado.</p>";
?>
