<?php
/**
 * CORRIGIR KM GPS NO DASHBOARD
 * Corrigir problemas na API e dashboard para mostrar KM GPS corretamente
 */

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

echo "<h1>🔧 CORREÇÃO DO KM GPS NO DASHBOARD</h1>";

echo "<h2>🚨 PROBLEMAS IDENTIFICADOS:</h2>";
echo "<div style='background: #f8d7da; padding: 15px; border-radius: 5px;'>";
echo "<h3>❌ PROBLEMA 1: Dashboard usa campo errado</h3>";
echo "<p><strong>Atual:</strong> Dashboard busca <code>viagem.distancia_total</code></p>";
echo "<p><strong>Correto:</strong> Deveria usar <code>viagem.km_gps_final</code></p>";
echo "<br>";

echo "<h3>❌ PROBLEMA 2: API calcula distancia_total errado</h3>";
echo "<p><strong>Atual:</strong> <code>(v.km_gps_final - v.km_inicial)</code></p>";
echo "<p><strong>Problema:</strong> km_gps_final já é a distância percorrida, não o km total do veículo!</p>";
echo "<p><strong>Correto:</strong> Deve usar diretamente <code>v.km_gps_final</code></p>";
echo "</div>";

echo "<h2>🔧 CORREÇÕES NECESSÁRIAS:</h2>";

echo "<h3>1️⃣ CORRIGIR API (api-simples-v2.php)</h3>";
echo "<div style='background: #fff3cd; padding: 15px; border-radius: 5px; font-family: monospace;'>";
echo "<strong>❌ SQL ATUAL (ERRADO):</strong><br>";
echo "CASE WHEN v.km_gps_final IS NOT NULL AND v.km_inicial IS NOT NULL THEN<br>";
echo "&nbsp;&nbsp;(v.km_gps_final - v.km_inicial)<br>";
echo "ELSE 0 END as distancia_total<br><br>";

echo "<strong>✅ SQL CORRIGIDO:</strong><br>";
echo "v.km_gps_final as distancia_total<br>";
echo "</div>";

echo "<h3>2️⃣ CORRIGIR DASHBOARD (dashboard.html)</h3>";
echo "<div style='background: #d4edda; padding: 15px; border-radius: 5px; font-family: monospace;'>";
echo "<strong>❌ JAVASCRIPT ATUAL (ERRADO):</strong><br>";
echo "if (viagem.distancia_total && viagem.distancia_total > 0) {<br>";
echo "&nbsp;&nbsp;return `\${parseFloat(viagem.distancia_total).toFixed(1)} km`;<br>";
echo "}<br><br>";

echo "<strong>✅ JAVASCRIPT CORRIGIDO:</strong><br>";
echo "// Tentar km_gps_final primeiro<br>";
echo "if (viagem.km_gps_final && viagem.km_gps_final > 0) {<br>";
echo "&nbsp;&nbsp;return `\${parseFloat(viagem.km_gps_final).toFixed(1)} km`;<br>";
echo "}<br>";
echo "// Fallback para distancia_total<br>";
echo "if (viagem.distancia_total && viagem.distancia_total > 0) {<br>";
echo "&nbsp;&nbsp;return `\${parseFloat(viagem.distancia_total).toFixed(1)} km`;<br>";
echo "}<br>";
echo "</div>";

echo "<h3>3️⃣ VERIFICAR APP ANDROID</h3>";
echo "<div style='background: #e8f5e8; padding: 15px; border-radius: 5px;'>";
echo "<p><strong>Problema:</strong> KM GPS sempre 1 km a menos que odômetro</p>";
echo "<p><strong>Causas possíveis:</strong></p>";
echo "<ul>";
echo "<li>Cálculo no app está incorreto (conversão de metros para km)</li>";
echo "<li>App não está enviando o valor correto na finalização</li>";
echo "<li>Precisão do GPS afetada por sinal fraco</li>";
echo "</ul>";
echo "</div>";

echo "<h2>🚀 EXECUTAR CORREÇÕES:</h2>";
echo "<p><a href='?corrigir_api=1' style='background: red; color: white; padding: 10px; text-decoration: none; margin: 5px;'>🔧 1. CORRIGIR API</a></p>";
echo "<p><a href='?corrigir_dashboard=1' style='background: blue; color: white; padding: 10px; text-decoration: none; margin: 5px;'>🔧 2. CORRIGIR DASHBOARD</a></p>";
echo "<p><a href='debug-km-gps.php' style='background: green; color: white; padding: 10px; text-decoration: none; margin: 5px;'>🔍 3. FAZER DIAGNÓSTICO COMPLETO</a></p>";

// Executar correções
if (isset($_GET['corrigir_api'])) {
    echo "<h2>⚙️ CORRIGINDO API...</h2>";
    
    $arquivoApi = 'api-simples-v2.php';
    
    if (!file_exists($arquivoApi)) {
        echo "<div style='color: red;'>❌ Arquivo não encontrado: $arquivoApi</div>";
    } else {
        $conteudo = file_get_contents($arquivoApi);
        
        // Buscar e corrigir o SQL problemático
        $sqlErrado = "CASE \n                                WHEN v.km_gps_final IS NOT NULL AND v.km_inicial IS NOT NULL THEN \n                                    (v.km_gps_final - v.km_inicial)\n                                ELSE 0\n                            END as distancia_total";
        
        $sqlCorreto = "v.km_gps_final as distancia_total";
        
        if (strpos($conteudo, 'km_gps_final - v.km_inicial') !== false) {
            echo "<div style='background: #fff3cd; padding: 10px;'>🔍 Encontrado SQL problemático na API...</div>";
            
            // Fazer backup
            file_put_contents($arquivoApi . '.backup', $conteudo);
            echo "<div style='background: #e8f5e8; padding: 10px;'>💾 Backup criado: {$arquivoApi}.backup</div>";
            
            // Corrigir
            $conteudoCorrigido = str_replace($sqlErrado, $sqlCorreto, $conteudo);
            
            if ($conteudoCorrigido !== $conteudo) {
                file_put_contents($arquivoApi, $conteudoCorrigido);
                echo "<div style='background: #e8f5e8; padding: 10px;'>✅ API CORRIGIDA! SQL atualizado para usar diretamente km_gps_final</div>";
            } else {
                echo "<div style='background: #f8d7da; padding: 10px;'>❌ Não foi possível aplicar a correção automaticamente</div>";
            }
        } else {
            echo "<div style='background: #e8f5e8; padding: 10px;'>✅ API já parece estar corrigida ou SQL não encontrado</div>";
        }
    }
}

if (isset($_GET['corrigir_dashboard'])) {
    echo "<h2>⚙️ CORRIGINDO DASHBOARD...</h2>";
    
    $arquivoDashboard = 'admin/dashboard.html';
    
    if (!file_exists($arquivoDashboard)) {
        echo "<div style='color: red;'>❌ Arquivo não encontrado: $arquivoDashboard</div>";
    } else {
        $conteudo = file_get_contents($arquivoDashboard);
        
        // JavaScript antigo (problemático)
        $jsErrado = 'if (viagem.distancia_total && viagem.distancia_total > 0) {
                return `${parseFloat(viagem.distancia_total).toFixed(1)} km`;
            }';
        
        // JavaScript corrigido
        $jsCorreto = '// Tentar km_gps_final primeiro (campo correto)
            if (viagem.km_gps_final && viagem.km_gps_final > 0) {
                return `${parseFloat(viagem.km_gps_final).toFixed(1)} km`;
            }
            
            // Fallback para distancia_total (compatibilidade)
            if (viagem.distancia_total && viagem.distancia_total > 0) {
                return `${parseFloat(viagem.distancia_total).toFixed(1)} km`;
            }';
        
        if (strpos($conteudo, 'viagem.distancia_total && viagem.distancia_total > 0') !== false) {
            echo "<div style='background: #fff3cd; padding: 10px;'>🔍 Encontrado JavaScript problemático no dashboard...</div>";
            
            // Fazer backup
            file_put_contents($arquivoDashboard . '.backup', $conteudo);
            echo "<div style='background: #e8f5e8; padding: 10px;'>💾 Backup criado: {$arquivoDashboard}.backup</div>";
            
            // Corrigir
            $conteudoCorrigido = str_replace($jsErrado, $jsCorreto, $conteudo);
            
            if ($conteudoCorrigido !== $conteudo) {
                file_put_contents($arquivoDashboard, $conteudoCorrigido);
                echo "<div style='background: #e8f5e8; padding: 10px;'>✅ DASHBOARD CORRIGIDO! JavaScript atualizado para usar km_gps_final</div>";
            } else {
                echo "<div style='background: #f8d7da; padding: 10px;'>❌ Não foi possível aplicar a correção automaticamente</div>";
            }
        } else {
            echo "<div style='background: #e8f5e8; padding: 10px;'>✅ Dashboard já parece estar corrigido ou código não encontrado</div>";
        }
    }
}

echo "<h2>📋 CHECKLIST FINAL:</h2>";
echo "<div style='background: #f8f9fa; padding: 15px; border-radius: 5px;'>";
echo "<ol>";
echo "<li>☐ Corrigir API para usar <code>v.km_gps_final as distancia_total</code></li>";
echo "<li>☐ Corrigir Dashboard para usar <code>viagem.km_gps_final</code></li>";
echo "<li>☐ Verificar se app Android está enviando <code>km_rodados</code> corretamente</li>";
echo "<li>☐ Testar finalização de viagem completa</li>";
echo "<li>☐ Verificar se KM GPS aparece no dashboard</li>";
echo "</ol>";
echo "</div>";

echo "<h2>🧪 TESTE APÓS CORREÇÕES:</h2>";
echo "<ol>";
echo "<li>Inicie uma viagem no app</li>";
echo "<li>Finalize a viagem</li>";
echo "<li>Verifique se KM GPS aparece no dashboard</li>";
echo "<li>Compare com o valor do odômetro</li>";
echo "</ol>";

?> 
