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

echo "<h2>🧪 TESTE: Correção App Android - KM GPS</h2>";

echo "<div style='background: #e0f7ff; padding: 15px; border-left: 5px solid #17a2b8; margin: 20px 0;'>";
echo "<h3>✅ CORREÇÃO APLICADA NO APP ANDROID:</h3>";
echo "<p><strong>Arquivo:</strong> <code>ChecklistVeiculoScreen.kt</code> linha 667</p>";
echo "<p><strong>Mudança:</strong> Adicionado cálculo e atribuição do <code>kmGpsFinal</code> quando viagem é finalizada</p>";
echo "<p><strong>Antes:</strong> Campo kmGpsFinal ficava NULL</p>";
echo "<p><strong>Depois:</strong> Campo kmGpsFinal = distância calculada do trajeto GPS</p>";
echo "</div>";

try {
    require_once 'config/database.php';
    $pdo = new PDO($dsn, $username, $password, $options);
    
    echo "<h3>1. 📊 Status Antes da Correção:</h3>";
    
    // Analisar viagens antigas (antes da correção)
    $stmt = $pdo->query("
        SELECT 
            COUNT(*) as total_viagens,
            COUNT(CASE WHEN km_gps_final IS NOT NULL AND km_gps_final > 0 THEN 1 END) as com_km_gps,
            COUNT(CASE WHEN km_gps_final IS NULL OR km_gps_final = 0 THEN 1 END) as sem_km_gps
        FROM viagens 
        WHERE data_fim IS NOT NULL 
        AND data_inicio < DATE_SUB(NOW(), INTERVAL 1 HOUR)
    ");
    $estatisticasAntigas = $stmt->fetch(PDO::FETCH_ASSOC);
    
    echo "<div style='background: #f8f9fa; padding: 15px; border: 1px solid #dee2e6; border-radius: 5px;'>";
    echo "<h4>📈 Estatísticas de Viagens Antigas (antes da correção):</h4>";
    echo "<ul>";
    echo "<li><strong>Total de viagens finalizadas:</strong> {$estatisticasAntigas['total_viagens']}</li>";
    echo "<li><strong>✅ Com KM GPS:</strong> {$estatisticasAntigas['com_km_gps']} (" . round(($estatisticasAntigas['com_km_gps'] / max($estatisticasAntigas['total_viagens'], 1)) * 100, 1) . "%)</li>";
    echo "<li><strong>❌ Sem KM GPS:</strong> {$estatisticasAntigas['sem_km_gps']} (" . round(($estatisticasAntigas['sem_km_gps'] / max($estatisticasAntigas['total_viagens'], 1)) * 100, 1) . "%)</li>";
    echo "</ul>";
    echo "</div>";
    
    echo "<h3>2. 🎯 Teste da Correção:</h3>";
    
    echo "<div style='background: #fff3cd; padding: 15px; border-left: 5px solid #ffc107; margin: 10px 0;'>";
    echo "<h4>📱 INSTRUÇÕES PARA TESTE:</h4>";
    echo "<ol>";
    echo "<li><strong>Recompile o app Android</strong> (Build > Rebuild Project)</li>";
    echo "<li><strong>Inicie uma nova viagem</strong> no app</li>";
    echo "<li><strong>Mova-se alguns metros</strong> para gerar trajeto GPS</li>";
    echo "<li><strong>Finalize a viagem</strong> e complete o checklist</li>";
    echo "<li><strong>Volte aqui</strong> e clique em 'Verificar Resultado'</li>";
    echo "</ol>";
    echo "</div>";
    
    if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['verificar_resultado'])) {
        echo "<h4>🔍 Verificando Resultado da Correção...</h4>";
        
        // Buscar viagem mais recente (última hora)
        $stmt = $pdo->query("
            SELECT 
                id, cliente, data_inicio, data_fim,
                km_inicial, km_final, km_gps_final,
                latitude_inicial, longitude_inicial,
                latitude_final, longitude_final,
                TIMESTAMPDIFF(MINUTE, data_inicio, NOW()) as minutos_atras
            FROM viagens 
            WHERE data_fim IS NOT NULL 
            AND data_inicio > DATE_SUB(NOW(), INTERVAL 1 HOUR)
            ORDER BY data_inicio DESC 
            LIMIT 1
        ");
        $viagemRecente = $stmt->fetch(PDO::FETCH_ASSOC);
        
        if ($viagemRecente) {
            echo "<div style='background: #e0ffe0; padding: 15px; border-left: 5px solid #28a745; margin: 10px 0;'>";
            echo "<h4>✅ VIAGEM RECENTE ENCONTRADA:</h4>";
            echo "<table border='1' style='border-collapse: collapse; width: 100%; margin-top: 10px;'>";
            echo "<tr style='background: #f8f9fa;'>";
            echo "<th>Campo</th><th>Valor</th><th>Status</th>";
            echo "</tr>";
            
            $campos = [
                'ID' => $viagemRecente['id'],
                'Cliente' => $viagemRecente['cliente'],
                'Finalizada há' => $viagemRecente['minutos_atras'] . ' minutos',
                'KM Inicial' => $viagemRecente['km_inicial'],
                'KM Final' => $viagemRecente['km_final'] ?: 'NULL',
                'KM GPS' => $viagemRecente['km_gps_final'] ?: 'NULL',
                'Coordenadas' => ($viagemRecente['latitude_inicial'] ? 'SIM' : 'NÃO')
            ];
            
            foreach ($campos as $campo => $valor) {
                $status = '';
                if ($campo === 'KM GPS') {
                    if ($viagemRecente['km_gps_final'] && $viagemRecente['km_gps_final'] > 0) {
                        $status = '✅ FUNCIONOU';
                        $valor .= ' (' . round($viagemRecente['km_gps_final'] / 1000, 3) . ' km)';
                    } else {
                        $status = '❌ AINDA NULL';
                    }
                }
                
                echo "<tr>";
                echo "<td><strong>$campo</strong></td>";
                echo "<td>$valor</td>";
                echo "<td>$status</td>";
                echo "</tr>";
            }
            echo "</table>";
            echo "</div>";
            
            // Análise do resultado
            if ($viagemRecente['km_gps_final'] && $viagemRecente['km_gps_final'] > 0) {
                echo "<div style='background: #e0ffe0; padding: 15px; border-left: 5px solid #28a745; margin: 10px 0;'>";
                echo "<h4>🎉 SUCESSO! Correção funcionou!</h4>";
                echo "<p><strong>KM GPS:</strong> {$viagemRecente['km_gps_final']} metros = " . round($viagemRecente['km_gps_final'] / 1000, 3) . " km</p>";
                echo "<p>✅ O app Android agora está enviando o campo kmGpsFinal corretamente!</p>";
                echo "<p>✅ A API está salvando no banco de dados!</p>";
                echo "</div>";
            } else {
                echo "<div style='background: #ffe0e0; padding: 15px; border-left: 5px solid #dc3545; margin: 10px 0;'>";
                echo "<h4>❌ PROBLEMA: Correção não funcionou</h4>";
                echo "<p>O campo km_gps_final ainda está NULL ou 0.</p>";
                echo "<p><strong>Possíveis causas:</strong></p>";
                echo "<ul>";
                echo "<li>❌ App não foi recompilado após a correção</li>";
                echo "<li>❌ Viagem não teve trajeto GPS (sem movimento)</li>";
                echo "<li>❌ Problema na comunicação com o servidor</li>";
                echo "<li>❌ Trajeto não foi salvo no banco local</li>";
                echo "</ul>";
                echo "</div>";
            }
            
        } else {
            echo "<div style='background: #fff3cd; padding: 15px; border-left: 5px solid #ffc107; margin: 10px 0;'>";
            echo "<h4>⚠️ Nenhuma viagem recente encontrada</h4>";
            echo "<p>Não encontrei viagens finalizadas na última hora.</p>";
            echo "<p>Certifique-se de ter feito o teste completo conforme as instruções.</p>";
            echo "</div>";
        }
        
    } else {
        echo "<form method='post' style='background: #f8f9fa; padding: 15px; border: 1px solid #ddd; border-radius: 5px;'>";
        echo "<p>Após fazer o teste com o app Android recompilado:</p>";
        echo "<button type='submit' name='verificar_resultado' style='background: #007bff; color: white; padding: 10px 20px; border: none; border-radius: 5px; cursor: pointer;'>🔍 Verificar Resultado do Teste</button>";
        echo "</form>";
    }
    
    echo "<h3>3. 🔧 Detalhes Técnicos da Correção:</h3>";
    
    echo "<div style='background: #f8f9fa; padding: 15px; border: 1px solid #dee2e6; border-radius: 5px;'>";
    echo "<h4>📝 Código Adicionado:</h4>";
    echo "<pre style='background: #2d3748; color: #e2e8f0; padding: 15px; border-radius: 5px; overflow-x: auto;'>";
    echo htmlspecialchars('// Calcular distância GPS baseada no trajeto
val kmGpsFinal = if (viagemReal.trajeto != null && viagemReal.trajeto!!.size > 1) {
    val distanciaTotal = viagemReal.trajeto!!.zipWithNext { a, b ->
        val R = 6371.0 // Raio da Terra em km
        val dLat = Math.toRadians(b.second - a.second)
        val dLon = Math.toRadians(b.first - a.first)
        val lat1 = Math.toRadians(a.second)
        val lat2 = Math.toRadians(b.second)
        val aH = Math.sin(dLat / 2) * Math.sin(dLat / 2) + 
                 Math.cos(lat1) * Math.cos(lat2) * Math.sin(dLon / 2) * Math.sin(dLon / 2)
        val c = 2 * Math.atan2(Math.sqrt(aH), Math.sqrt(1 - aH))
        R * c
    }.sum()
    
    // Arredondar para inteiro (metros) para compatibilidade
    (distanciaTotal * 1000).toInt()
} else {
    0
}

val viagemFinalizada = viagemReal.copy(
    // ... outros campos ...
    kmGpsFinal = kmGpsFinal  // ✅ CAMPO ADICIONADO!
)');
    echo "</pre>";
    echo "</div>";
    
    echo "<h3>4. 🎯 Próximos Passos:</h3>";
    
    echo "<div style='background: #e0f7ff; padding: 15px; border-left: 5px solid #17a2b8; margin: 20px 0;'>";
    echo "<h4>📋 Checklist Pós-Correção:</h4>";
    echo "<ul>";
    echo "<li>✅ <strong>Código corrigido</strong> - kmGpsFinal agora é calculado e atribuído</li>";
    echo "<li>🔄 <strong>App precisa ser recompilado</strong> - Build > Rebuild Project</li>";
    echo "<li>🧪 <strong>Teste real necessário</strong> - Nova viagem com movimento GPS</li>";
    echo "<li>🔍 <strong>Verificação</strong> - Usar este script para confirmar funcionamento</li>";
    echo "</ul>";
    
    echo "<h4>🎯 Resultado Esperado:</h4>";
    echo "<p>Após a correção e recompilação, todas as novas viagens devem ter:</p>";
    echo "<ul>";
    echo "<li>✅ Campo <code>km_gps_final</code> != NULL</li>";
    echo "<li>✅ Valor em metros baseado no trajeto GPS real</li>";
    echo "<li>✅ Logs mostrando: 'KM GPS calculado: X metros'</li>";
    echo "</ul>";
    echo "</div>";
    
} catch (Exception $e) {
    echo "<div style='background: #ffe0e0; padding: 15px; border-left: 5px solid #dc3545;'>";
    echo "<h4>❌ Erro:</h4>";
    echo "<p>{$e->getMessage()}</p>";
    echo "</div>";
}
?> 
