<?php
require_once 'conexao.php';

echo "<h1>🔍 DIAGNÓSTICO ROTA #50 - PROBLEMA GPS</h1>\n";

try {
    $pdo = conectarBanco();
    
    // 1. Verificar dados da rota 50
    echo "<h2>1. Dados da Rota #50</h2>\n";
    $sql = "SELECT * FROM solicitacoes_rotas WHERE id = 50";
    $stmt = $pdo->query($sql);
    $rota = $stmt->fetch(PDO::FETCH_ASSOC);
    
    if ($rota) {
        echo "<p><strong>✅ Rota encontrada:</strong></p>\n";
        echo "<ul>\n";
        echo "<li><strong>ID:</strong> {$rota['id']}</li>\n";
        echo "<li><strong>Título:</strong> {$rota['titulo']}</li>\n";
        echo "<li><strong>Status:</strong> {$rota['status']}</li>\n";
        echo "<li><strong>Data Início Real:</strong> {$rota['data_inicio_real']}</li>\n";
        echo "<li><strong>Data Fim Real:</strong> {$rota['data_fim_real']}</li>\n";
        echo "<li><strong>KM Estimado:</strong> {$rota['km_estimado']}</li>\n";
        echo "<li><strong>KM Real:</strong> {$rota['km_real']}</li>\n";
        echo "</ul>\n";
    } else {
        echo "<p><strong>❌ Rota 50 não encontrada!</strong></p>\n";
        exit;
    }
    
    // 2. Verificar viagens criadas para esta rota
    echo "<h2>2. Viagens da Rota #50</h2>\n";
    $sql = "SELECT rv.*, v.* FROM rota_viagens rv 
            INNER JOIN viagens v ON rv.viagem_id = v.id 
            WHERE rv.solicitacao_rota_id = 50 
            ORDER BY rv.ordem_execucao";
    $stmt = $pdo->query($sql);
    $viagens = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    if ($viagens) {
        echo "<p><strong>✅ Viagens encontradas:</strong></p>\n";
        foreach ($viagens as $viagem) {
            echo "<h3>Viagem ID: {$viagem['viagem_id']}</h3>\n";
            echo "<ul>\n";
            echo "<li><strong>Cliente:</strong> {$viagem['cliente']}</li>\n";
            echo "<li><strong>KM Inicial:</strong> {$viagem['km_inicial']}</li>\n";
            echo "<li><strong>KM Final:</strong> {$viagem['km_final']}</li>\n";
            echo "<li><strong>KM GPS Final:</strong> " . ($viagem['km_gps_final'] ?? 'NULL') . "</li>\n";
            echo "<li><strong>Data Início:</strong> {$viagem['data_inicio']}</li>\n";
            echo "<li><strong>Data Fim:</strong> " . ($viagem['data_fim'] ?? 'NULL') . "</li>\n";
            echo "<li><strong>Trajeto:</strong> " . ($viagem['trajeto'] ? count(json_decode($viagem['trajeto'], true)) : 0) . " pontos</li>\n";
            echo "<li><strong>Ordem Execução:</strong> {$viagem['ordem_execucao']}</li>\n";
            echo "</ul>\n";
            
            // Verificar se há pontos GPS no trajeto
            if ($viagem['trajeto']) {
                $trajeto = json_decode($viagem['trajeto'], true);
                if (is_array($trajeto) && count($trajeto) > 0) {
                    echo "<p><strong>📍 Primeiros 3 pontos GPS:</strong></p>\n";
                    echo "<ul>\n";
                    for ($i = 0; $i < min(3, count($trajeto)); $i++) {
                        $ponto = $trajeto[$i];
                        echo "<li>Ponto $i: lat={$ponto['latitude']}, lng={$ponto['longitude']}, time={$ponto['timestamp']}</li>\n";
                    }
                    echo "</ul>\n";
                } else {
                    echo "<p><strong>❌ Trajeto vazio ou inválido!</strong></p>\n";
                }
            } else {
                echo "<p><strong>❌ Nenhum trajeto salvo!</strong></p>\n";
            }
        }
    } else {
        echo "<p><strong>❌ Nenhuma viagem encontrada para a rota 50!</strong></p>\n";
    }
    
    // 3. Verificar rastreamento em tempo real
    echo "<h2>3. Rastreamento Tempo Real</h2>\n";
    $sql = "SELECT * FROM rastreamento_tempo_real WHERE viagem_id IN (
            SELECT viagem_id FROM rota_viagens WHERE solicitacao_rota_id = 50
        ) ORDER BY timestamp_gps DESC LIMIT 10";
    $stmt = $pdo->query($sql);
    $rastreamento = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    if ($rastreamento) {
        echo "<p><strong>✅ Dados de rastreamento encontrados:</strong></p>\n";
        echo "<ul>\n";
        foreach ($rastreamento as $r) {
            echo "<li>Viagem {$r['viagem_id']}: lat={$r['latitude']}, lng={$r['longitude']}, vel={$r['velocidade']}km/h, time={$r['timestamp_gps']}</li>\n";
        }
        echo "</ul>\n";
    } else {
        echo "<p><strong>❌ Nenhum dado de rastreamento encontrado!</strong></p>\n";
    }
    
    // 4. Verificar status dos técnicos
    echo "<h2>4. Status dos Técnicos</h2>\n";
    $sql = "SELECT * FROM status_tecnicos WHERE tecnico_id IN (
            SELECT DISTINCT tecnico_id FROM viagens WHERE id IN (
                SELECT viagem_id FROM rota_viagens WHERE solicitacao_rota_id = 50
            )
        ) ORDER BY ultimo_ping DESC LIMIT 5";
    $stmt = $pdo->query($sql);
    $status = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    if ($status) {
        echo "<p><strong>✅ Status dos técnicos:</strong></p>\n";
        echo "<ul>\n";
        foreach ($status as $s) {
            echo "<li>Técnico {$s['tecnico_id']}: lat={$s['latitude_atual']}, lng={$s['longitude_atual']}, vel={$s['velocidade_atual']}km/h, ping={$s['ultimo_ping']}</li>\n";
        }
        echo "</ul>\n";
    } else {
        echo "<p><strong>❌ Nenhum status de técnico encontrado!</strong></p>\n";
    }
    
    // 5. Análise do problema
    echo "<h2>5. 🔍 ANÁLISE DO PROBLEMA</h2>\n";
    
    $totalPontos = 0;
    $viagensComTrajeto = 0;
    $viagensSemTrajeto = 0;
    
    foreach ($viagens as $viagem) {
        if ($viagem['trajeto']) {
            $trajeto = json_decode($viagem['trajeto'], true);
            if (is_array($trajeto)) {
                $totalPontos += count($trajeto);
                $viagensComTrajeto++;
            }
        } else {
            $viagensSemTrajeto++;
        }
    }
    
    echo "<p><strong>📊 Estatísticas:</strong></p>\n";
    echo "<ul>\n";
    echo "<li><strong>Total de viagens:</strong> " . count($viagens) . "</li>\n";
    echo "<li><strong>Viagens com trajeto:</strong> $viagensComTrajeto</li>\n";
    echo "<li><strong>Viagens sem trajeto:</strong> $viagensSemTrajeto</li>\n";
    echo "<li><strong>Total de pontos GPS:</strong> $totalPontos</li>\n";
    echo "</ul>\n";
    
    if ($totalPontos == 0) {
        echo "<p><strong>🚨 PROBLEMA IDENTIFICADO:</strong> Nenhum ponto GPS foi registrado durante a rota!</p>\n";
        echo "<p><strong>Possíveis causas:</strong></p>\n";
        echo "<ul>\n";
        echo "<li>GPS não foi iniciado no Android</li>\n";
        echo "<li>LocationService não está funcionando</li>\n";
        echo "<li>Problema de permissões no Android</li>\n";
        echo "<li>API atualizar-posicao não está sendo chamada</li>\n";
        echo "<li>Problema de conectividade</li>\n";
        echo "</ul>\n";
    } else {
        echo "<p><strong>✅ GPS funcionando:</strong> $totalPontos pontos registrados</p>\n";
        echo "<p><strong>Possível problema:</strong> Cálculo incorreto da distância GPS</p>\n";
    }
    
} catch (Exception $e) {
    echo "<p><strong>❌ Erro:</strong> " . $e->getMessage() . "</p>\n";
}
?>
