<?php
require_once 'conexao.php';

// Configurar headers para evitar cache
header('Content-Type: text/html; charset=utf-8');
header('Cache-Control: no-cache, no-store, must-revalidate');

echo "<!DOCTYPE html>";
echo "<html>";
echo "<head>";
echo "<meta charset='utf-8'>";
echo "<title>Investigando Problema GPS</title>";
echo "<style>";
echo "body { font-family: Arial, sans-serif; margin: 20px; background-color: #f5f5f5; }";
echo ".container { max-width: 1200px; margin: 0 auto; background: white; padding: 20px; border-radius: 8px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); }";
echo ".success { color: #28a745; font-weight: bold; }";
echo ".error { color: #dc3545; font-weight: bold; }";
echo ".warning { color: #ffc107; font-weight: bold; }";
echo ".info { color: #17a2b8; font-weight: bold; }";
echo "h1 { color: #333; border-bottom: 2px solid #007bff; padding-bottom: 10px; }";
echo "h2 { color: #555; margin-top: 30px; }";
echo "ul { background: #f8f9fa; padding: 15px; border-radius: 5px; }";
echo "li { margin: 5px 0; }";
echo ".btn { background: #007bff; color: white; padding: 10px 20px; border: none; border-radius: 5px; cursor: pointer; text-decoration: none; display: inline-block; margin: 10px 5px; }";
echo ".btn:hover { background: #0056b3; }";
echo "table { width: 100%; border-collapse: collapse; margin: 20px 0; }";
echo "th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }";
echo "th { background-color: #f2f2f2; }";
echo ".debug { background: #f8f9fa; border: 1px solid #dee2e6; padding: 10px; margin: 10px 0; border-radius: 5px; font-family: monospace; font-size: 12px; }";
echo "</style>";
echo "</head>";
echo "<body>";

echo "<div class='container'>";
echo "<h1>🔍 INVESTIGANDO PROBLEMA GPS - ROTA #50</h1>";

try {
    $pdo = conectarBanco();
    
    // 1. Verificar dados da rota 50
    echo "<h2>1. Dados da Rota #50</h2>";
    $sql = "SELECT * FROM solicitacoes_rotas WHERE id = 50";
    $stmt = $pdo->query($sql);
    $rota = $stmt->fetch(PDO::FETCH_ASSOC);
    
    if ($rota) {
        echo "<p class='success'>✅ Rota encontrada</p>";
        echo "<ul>";
        echo "<li><strong>ID:</strong> {$rota['id']}</li>";
        echo "<li><strong>Título:</strong> {$rota['titulo']}</li>";
        echo "<li><strong>Status:</strong> {$rota['status']}</li>";
        echo "<li><strong>KM Estimado:</strong> {$rota['km_estimado']} km</li>";
        echo "<li><strong>KM Real:</strong> " . ($rota['km_real'] ?? 'NULL') . " km</li>";
        echo "</ul>";
    } else {
        echo "<p class='error'>❌ Rota 50 não encontrada!</p>";
        exit;
    }
    
    // 2. Verificar viagens da rota
    echo "<h2>2. Viagens da Rota #50</h2>";
    $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 class='success'>✅ Encontradas " . count($viagens) . " viagens</p>";
        
        echo "<table>";
        echo "<tr><th>Viagem ID</th><th>Cliente</th><th>KM Inicial</th><th>KM Final</th><th>KM GPS Final</th><th>Pontos GPS</th><th>Trajeto</th></tr>";
        
        foreach ($viagens as $viagem) {
            $trajeto = $viagem['trajeto'] ? json_decode($viagem['trajeto'], true) : null;
            $pontosGps = $trajeto ? count($trajeto) : 0;
            $trajetoPreview = $trajeto ? substr(json_encode($trajeto), 0, 100) . "..." : "NULL";
            
            echo "<tr>";
            echo "<td>{$viagem['viagem_id']}</td>";
            echo "<td>{$viagem['cliente']}</td>";
            echo "<td>{$viagem['km_inicial']}</td>";
            echo "<td>" . ($viagem['km_final'] ?? 'NULL') . "</td>";
            echo "<td>" . ($viagem['km_gps_final'] ?? 'NULL') . "</td>";
            echo "<td>$pontosGps</td>";
            echo "<td><div class='debug'>$trajetoPreview</div></td>";
            echo "</tr>";
        }
        echo "</table>";
    } else {
        echo "<p class='error'>❌ Nenhuma viagem encontrada!</p>";
        exit;
    }
    
    // 3. Analisar trajeto detalhadamente
    echo "<h2>3. Análise Detalhada do Trajeto</h2>";
    
    foreach ($viagens as $viagem) {
        echo "<h3>Viagem ID: {$viagem['viagem_id']} - {$viagem['cliente']}</h3>";
        
        if ($viagem['trajeto']) {
            $trajeto = json_decode($viagem['trajeto'], true);
            
            if (is_array($trajeto) && count($trajeto) > 0) {
                echo "<p class='info'>📍 Total de pontos: " . count($trajeto) . "</p>";
                
                // Mostrar primeiros e últimos pontos
                echo "<h4>Primeiros 3 pontos:</h4>";
                echo "<ul>";
                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>";
                }
                echo "</ul>";
                
                if (count($trajeto) > 3) {
                    echo "<h4>Últimos 3 pontos:</h4>";
                    echo "<ul>";
                    for ($i = max(0, count($trajeto) - 3); $i < count($trajeto); $i++) {
                        $ponto = $trajeto[$i];
                        echo "<li>Ponto $i: lat={$ponto['latitude']}, lng={$ponto['longitude']}, time={$ponto['timestamp']}</li>";
                    }
                    echo "</ul>";
                }
                
                // Calcular distância real
                if (count($trajeto) > 1) {
                    $distanciaReal = 0;
                    for ($i = 0; $i < count($trajeto) - 1; $i++) {
                        $ponto1 = $trajeto[$i];
                        $ponto2 = $trajeto[$i + 1];
                        
                        $lat1 = $ponto1['latitude'];
                        $lon1 = $ponto1['longitude'];
                        $lat2 = $ponto2['latitude'];
                        $lon2 = $ponto2['longitude'];
                        
                        // Fórmula de Haversine
                        $R = 6371; // Raio da Terra em km
                        $dLat = deg2rad($lat2 - $lat1);
                        $dLon = deg2rad($lon2 - $lon1);
                        $a = sin($dLat/2) * sin($dLat/2) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * sin($dLon/2) * sin($dLon/2);
                        $c = 2 * atan2(sqrt($a), sqrt(1-$a));
                        $distancia = $R * $c;
                        
                        $distanciaReal += $distancia;
                    }
                    
                    $distanciaRealMetros = $distanciaReal * 1000;
                    $kmGpsAtual = $viagem['km_gps_final'] ?? 0;
                    
                    echo "<h4>📊 Cálculo de Distância:</h4>";
                    echo "<ul>";
                    echo "<li><strong>Distância calculada (Haversine):</strong> " . number_format($distanciaReal, 6) . " km</li>";
                    echo "<li><strong>Distância calculada (metros):</strong> " . number_format($distanciaRealMetros) . " metros</li>";
                    echo "<li><strong>KM GPS atual no banco:</strong> " . number_format($kmGpsAtual) . " metros</li>";
                    echo "<li><strong>Diferença:</strong> " . number_format($distanciaRealMetros - $kmGpsAtual) . " metros</li>";
                    echo "</ul>";
                    
                    if (abs($distanciaRealMetros - $kmGpsAtual) > 100) {
                        echo "<p class='warning'>⚠️ Diferença significativa detectada!</p>";
                    } else {
                        echo "<p class='success'>✅ Valores próximos</p>";
                    }
                }
            } else {
                echo "<p class='error'>❌ Trajeto vazio ou inválido</p>";
            }
        } else {
            echo "<p class='error'>❌ Nenhum trajeto salvo</p>";
        }
    }
    
    // 4. Verificar como o dashboard calcula
    echo "<h2>4. Como o Dashboard Calcula</h2>";
    echo "<p>O dashboard provavelmente está somando os valores de <code>km_gps_final</code> de todas as viagens da rota.</p>";
    
    $totalKmGps = 0;
    $viagensComGps = 0;
    
    foreach ($viagens as $viagem) {
        $kmGps = $viagem['km_gps_final'] ?? 0;
        if ($kmGps > 0) {
            $totalKmGps += $kmGps;
            $viagensComGps++;
        }
    }
    
    echo "<h4>📊 Soma dos KM GPS das Viagens:</h4>";
    echo "<ul>";
    echo "<li><strong>Total KM GPS (soma):</strong> " . number_format($totalKmGps) . " metros</li>";
    echo "<li><strong>Total KM GPS (km):</strong> " . number_format($totalKmGps / 1000, 3) . " km</li>";
    echo "<li><strong>Viagens com GPS:</strong> $viagensComGps</li>";
    echo "<li><strong>KM Real da rota:</strong> " . ($rota['km_real'] ?? 'NULL') . " km</li>";
    echo "</ul>";
    
    // 5. Verificar se há problema na exibição
    echo "<h2>5. Possível Problema na Exibição</h2>";
    echo "<p>O valor <strong>0.007 km</strong> sugere que pode estar sendo dividido por 1000 incorretamente.</p>";
    
    $possivelValor = $totalKmGps / 1000000; // Se estiver sendo dividido por 1.000.000 em vez de 1.000
    echo "<ul>";
    echo "<li><strong>Valor atual no dashboard:</strong> 0.007 km</li>";
    echo "<li><strong>Valor correto esperado:</strong> " . number_format($totalKmGps / 1000, 3) . " km</li>";
    echo "<li><strong>Se dividido por 1.000.000:</strong> " . number_format($possivelValor, 3) . " km</li>";
    echo "</ul>";
    
    if (abs($possivelValor - 0.007) < 0.001) {
        echo "<p class='error'>🚨 PROBLEMA IDENTIFICADO: O dashboard está dividindo por 1.000.000 em vez de 1.000!</p>";
    }
    
    // 6. Sugestões de correção
    echo "<h2>6. 🔧 Sugestões de Correção</h2>";
    echo "<ul>";
    echo "<li><strong>Opção 1:</strong> Corrigir o cálculo no dashboard (dividir por 1000 em vez de 1000000)</li>";
    echo "<li><strong>Opção 2:</strong> Multiplicar os valores no banco por 1000</li>";
    echo "<li><strong>Opção 3:</strong> Verificar se há conversão incorreta no código</li>";
    echo "</ul>";
    
    echo "<p><a href='javascript:history.back()' class='btn'>Voltar</a></p>";
    
} catch (Exception $e) {
    echo "<p class='error'>❌ Erro: " . htmlspecialchars($e->getMessage()) . "</p>";
    echo "<p><a href='javascript:history.back()' class='btn'>Voltar</a></p>";
}

echo "</div>";
echo "</body>";
echo "</html>";
?>
