<?php
require_once 'config/database.php';

echo "<h2>🔧 FORÇAR GPS - CONVERTER TRAJETO PARA TABELA</h2>";

try {
    $pdo = conectarBanco();
    
    // Buscar viagem 169 que tem trajeto
    echo "<h3>🔍 1. Analisando viagem 169...</h3>";
    $stmt = $pdo->prepare("SELECT id, tecnico_id, trajeto FROM viagens WHERE id = 169");
    $stmt->execute();
    $viagem = $stmt->fetch();
    
    if (!$viagem) {
        echo "<p style='color: red;'>❌ Viagem 169 não encontrada</p>";
        exit;
    }
    
    $trajeto = json_decode($viagem['trajeto'], true);
    if (!$trajeto || !is_array($trajeto)) {
        echo "<p style='color: red;'>❌ Trajeto JSON inválido</p>";
        exit;
    }
    
    echo "<p>✅ Viagem encontrada: {$viagem['tecnico_id']}</p>";
    echo "<p>✅ Trajeto tem <strong>" . count($trajeto) . " pontos GPS</strong></p>";
    
    echo "<h3>🧹 2. Limpando tabela rastreamento_tempo_real...</h3>";
    $stmt = $pdo->exec("DELETE FROM rastreamento_tempo_real WHERE viagem_id = 169");
    echo "<p>✅ Limpeza realizada</p>";
    
    echo "<h3>📡 3. Convertendo pontos do trajeto para tabela...</h3>";
    
    $inseridos = 0;
    $erro = 0;
    
    foreach ($trajeto as $index => $ponto) {
        if (is_array($ponto) && count($ponto) >= 2) {
            // Formato: [latitude, longitude] 
            $lat = floatval($ponto[0]);
            $lng = floatval($ponto[1]);
            
            try {
                $stmt = $pdo->prepare("
                    INSERT INTO rastreamento_tempo_real (
                        tecnico_id, viagem_id, latitude, longitude, velocidade, 
                        precisao, altitude, timestamp_gps, is_online
                    ) VALUES (?, ?, ?, ?, ?, ?, ?, NOW(), ?)
                ");
                
                $stmt->execute([
                    $viagem['tecnico_id'],  // tecnico_id
                    169,                    // viagem_id
                    $lat,                   // latitude
                    $lng,                   // longitude
                    0,                      // velocidade
                    10,                     // precisao
                    900,                    // altitude
                    1                       // is_online
                ]);
                
                $inseridos++;
                
                // Mostrar progresso a cada 50 pontos
                if ($inseridos % 50 == 0) {
                    echo "<p>📍 Processados: $inseridos pontos</p>";
                }
                
            } catch (Exception $e) {
                $erro++;
                if ($erro < 5) {
                    echo "<p style='color: orange;'>⚠️ Erro no ponto $index: " . $e->getMessage() . "</p>";
                }
            }
        } else {
            $erro++;
        }
    }
    
    echo "<div style='background: #d4edda; padding: 15px; border-radius: 5px; margin: 20px 0;'>";
    echo "<h4 style='color: #155724;'>🎉 CONVERSÃO CONCLUÍDA!</h4>";
    echo "<ul style='color: #155724;'>";
    echo "<li>✅ <strong>$inseridos pontos GPS</strong> inseridos na tabela</li>";
    echo "<li>⚠️ <strong>$erro erros</strong> ignorados</li>";
    echo "<li>🗺️ <strong>LINHA AZUL DEVE APARECER AGORA!</strong></li>";
    echo "</ul>";
    echo "</div>";
    
    // Verificar resultado final
    echo "<h3>📊 4. Verificação final...</h3>";
    $stmt = $pdo->query("SELECT COUNT(*) as total FROM rastreamento_tempo_real WHERE viagem_id = 169");
    $count = $stmt->fetch();
    
    echo "<p><strong>Total de pontos GPS na viagem 169:</strong> {$count['total']}</p>";
    
    if ($count['total'] > 0) {
        // Mostrar primeiros e últimos pontos
        $stmt = $pdo->query("
            (SELECT 'INÍCIO' as tipo, latitude, longitude, timestamp_gps 
             FROM rastreamento_tempo_real 
             WHERE viagem_id = 169 
             ORDER BY id ASC LIMIT 3)
            UNION ALL
            (SELECT 'FIM' as tipo, latitude, longitude, timestamp_gps 
             FROM rastreamento_tempo_real 
             WHERE viagem_id = 169 
             ORDER BY id DESC LIMIT 3)
        ");
        $pontos = $stmt->fetchAll();
        
        echo "<h4>🗺️ Amostra dos pontos GPS:</h4>";
        foreach ($pontos as $ponto) {
            echo "<p><strong>{$ponto['tipo']}:</strong> {$ponto['latitude']}, {$ponto['longitude']} | {$ponto['timestamp_gps']}</p>";
        }
    }
    
} catch (Exception $e) {
    echo "<div style='color: red;'><strong>❌ Erro:</strong> " . $e->getMessage() . "</div>";
}

echo "<hr>";
echo "<h3>🎯 RESULTADO FINAL:</h3>";
echo "<div style='background: #fff3cd; padding: 15px; border-radius: 5px;'>";
echo "<h4 style='color: #856404;'>📱 AGORA TESTE O MAPA:</h4>";
echo "<ol style='color: #856404;'>";
echo "<li>Abra o sistema web do controle de frotas</li>";
echo "<li>Vá para a viagem 169 (João Silva)</li>";
echo "<li>Visualize o mapa da viagem</li>";
echo "<li><strong>A LINHA AZUL DEVE APARECER!</strong></li>";
echo "</ol>";
echo "</div>";

echo "<div style='background: #f8d7da; padding: 15px; border-radius: 5px; margin: 20px 0;'>";
echo "<h4 style='color: #721c24;'>🔧 PRÓXIMA CORREÇÃO - APP ANDROID:</h4>";
echo "<p style='color: #721c24;'>O app está coletando GPS mas não enviando para a API. Preciso corrigir o LocationForegroundService para enviar dados para atualizar-posicao.</p>";
echo "</div>";
?> 
