<?php
// Testar se a API está retornando dados de trajeto corretamente
require_once 'config/database.php';

echo "=== TESTE DA API TRAJETO ===\n\n";

try {
    $pdo = conectarBanco();
    
    // 1. Buscar uma viagem recente para testar
    echo "🔍 1. Buscando viagens recentes...\n";
    $stmt = $pdo->query("
        SELECT id, cliente, data_inicio, data_fim, 
               latitude_inicial, longitude_inicial,
               latitude_final, longitude_final
        FROM viagens 
        WHERE data_inicio >= DATE_SUB(NOW(), INTERVAL 30 DAYS)
        ORDER BY id DESC 
        LIMIT 5
    ");
    
    $viagens = $stmt->fetchAll();
    
    if (count($viagens) == 0) {
        echo "⚠️ Nenhuma viagem encontrada nos últimos 30 dias\n";
        echo "💡 Precisa fazer uma viagem no app Android para gerar dados de teste\n\n";
        
        // Criar dados de teste se necessário
        echo "🧪 Vou criar dados de teste para verificar se o sistema funciona...\n";
        
        $stmt = $pdo->prepare("
            INSERT INTO viagens (
                tecnico_id, veiculo_id, cliente, motivo, km_inicial,
                data_inicio, latitude_inicial, longitude_inicial,
                endereco_inicial, trajeto
            ) VALUES (
                'Motorista Teste', 1, 'Cliente Teste', 'Teste de Trajeto', 100000,
                NOW(), -11.016369, -37.076128, 'Endereço Teste',
                '[{\"latitude\":-11.016369,\"longitude\":-37.076128,\"timestamp\":\"2025-01-25 10:00:00\"},{\"latitude\":-11.017000,\"longitude\":-37.077000,\"timestamp\":\"2025-01-25 10:01:00\"},{\"latitude\":-11.018000,\"longitude\":-37.078000,\"timestamp\":\"2025-01-25 10:02:00\"}]'
            )
        ");
        
        $stmt->execute();
        $viagemTeste = $pdo->lastInsertId();
        
        echo "✅ Viagem de teste criada: ID $viagemTeste\n\n";
        
        // Inserir pontos GPS de teste
        $pontosGPS = [
            [-11.016369, -37.076128, 0],
            [-11.017000, -37.077000, 25],
            [-11.018000, -37.078000, 30],
            [-11.019000, -37.079000, 35],
            [-11.020000, -37.080000, 20]
        ];
        
        foreach ($pontosGPS as $i => $ponto) {
            $stmt = $pdo->prepare("
                INSERT INTO rastreamento_tempo_real (
                    tecnico_id, viagem_id, latitude, longitude, velocidade,
                    timestamp_gps
                ) VALUES (?, ?, ?, ?, ?, DATE_ADD(NOW(), INTERVAL ? MINUTE))
            ");
            $stmt->execute(['Motorista Teste', $viagemTeste, $ponto[0], $ponto[1], $ponto[2], $i]);
        }
        
        echo "✅ " . count($pontosGPS) . " pontos GPS de teste inseridos\n\n";
        
        // Buscar novamente
        $stmt = $pdo->prepare("SELECT * FROM viagens WHERE id = ?");
        $stmt->execute([$viagemTeste]);
        $viagens = $stmt->fetchAll();
    }
    
    // 2. Testar API para cada viagem
    foreach ($viagens as $viagem) {
        echo "🚗 2. Testando viagem ID {$viagem['id']} - {$viagem['cliente']}\n";
        
        // Simular chamada da API
        $_GET['acao'] = 'viagem';
        $_GET['id'] = $viagem['id'];
        $_SERVER['REQUEST_METHOD'] = 'GET';
        
        // Capturar output da API
        ob_start();
        
        // Simular apenas a parte de buscar viagem
        $stmt = $pdo->prepare("
            SELECT 
                v.id, v.cliente, v.tecnico_id, v.data_inicio, v.data_fim,
                v.latitude_inicial, v.longitude_inicial,
                v.latitude_final, v.longitude_final,
                v.trajeto,
                m.nome as motorista_nome,
                ve.modelo as veiculo_modelo, ve.placa as veiculo_placa
            FROM viagens v
            LEFT JOIN motoristas m ON v.tecnico_id = m.id OR v.tecnico_id = m.nome
            LEFT JOIN veiculos ve ON v.veiculo_id = ve.id
            WHERE v.id = ?
        ");
        $stmt->execute([$viagem['id']]);
        $dadosViagem = $stmt->fetch();
        
        if ($dadosViagem) {
            // Buscar trajeto GPS completo
            $stmt = $pdo->prepare("
                SELECT 
                    latitude, longitude, velocidade, timestamp_gps as timestamp, precisao
                FROM rastreamento_tempo_real 
                WHERE viagem_id = ? 
                ORDER BY timestamp_gps ASC
            ");
            $stmt->execute([$viagem['id']]);
            $trajetoGPS = $stmt->fetchAll();
            
            $dadosViagem['trajeto_gps'] = $trajetoGPS;
            $dadosViagem['total_pontos_gps'] = count($trajetoGPS);
            
            // Decodificar trajeto JSON se existir
            if ($dadosViagem['trajeto']) {
                $trajetoDecoded = json_decode($dadosViagem['trajeto'], true);
                if (is_array($trajetoDecoded)) {
                    $dadosViagem['trajeto'] = $trajetoDecoded;
                } else {
                    $dadosViagem['trajeto'] = [];
                }
            } else {
                $dadosViagem['trajeto'] = [];
            }
            
            ob_end_clean();
            
            // Analisar resultados
            echo "   📊 Pontos no trajeto JSON: " . count($dadosViagem['trajeto']) . "\n";
            echo "   📡 Pontos GPS na tabela: " . $dadosViagem['total_pontos_gps'] . "\n";
            
            if ($dadosViagem['total_pontos_gps'] > 0) {
                echo "   ✅ TEM dados GPS - trajeto deveria aparecer no mapa\n";
                
                // Mostrar alguns pontos para verificação
                echo "   📍 Primeiros pontos GPS:\n";
                foreach (array_slice($trajetoGPS, 0, 3) as $ponto) {
                    echo "      • {$ponto['latitude']}, {$ponto['longitude']} ({$ponto['timestamp']})\n";
                }
            } else {
                echo "   ⚠️ SEM dados GPS - apenas início/fim aparecerá\n";
            }
            
            if (count($dadosViagem['trajeto']) > 0) {
                echo "   ✅ TEM trajeto JSON salvo\n";
            } else {
                echo "   ⚠️ SEM trajeto JSON\n";
            }
            
            echo "\n";
        }
    }
    
    // 3. Testar endpoint da API real
    echo "🔗 3. Testando endpoint real da API...\n";
    $viagemParaTeste = $viagens[0]['id'];
    $urlTeste = "https://sistemas.pinheiroempresas.com.br/controlefrota/backend-php/api-simples-v2.php?acao=viagem&id=$viagemParaTeste";
    
    echo "   URL: $urlTeste\n";
    echo "   💡 Abra esta URL no navegador para ver o JSON retornado\n";
    echo "   🔍 Verifique se tem o campo 'trajeto_gps' com pontos\n\n";
    
    // 4. Resumo final
    echo "=== DIAGNÓSTICO FINAL ===\n";
    
    $totalPontosGPS = 0;
    $stmt = $pdo->query("SELECT COUNT(*) as total FROM rastreamento_tempo_real");
    $totalPontosGPS = $stmt->fetch()['total'];
    
    if ($totalPontosGPS > 0) {
        echo "✅ SISTEMA FUNCIONANDO: $totalPontosGPS pontos GPS encontrados\n";
        echo "🗺️ O mapa DEVERIA exibir trajetos completos\n";
        echo "💡 Se ainda não aparece linha azul, o problema está no frontend\n";
    } else {
        echo "⚠️ SISTEMA SEM DADOS: Nenhum ponto GPS real coletado\n";
        echo "📱 Problema pode estar no app Android não enviando GPS\n";
        echo "🔧 Verifique se LocationForegroundService está ativo\n";
    }
    
} catch (Exception $e) {
    echo "❌ ERRO: " . $e->getMessage() . "\n";
}
?> 
