<?php
/**
 * 🔍 Verificar viagem 79 - Por que ainda aparece linha reta?
 */

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

// Configurações do banco
$config = [
    'host' => 'localhost',
    'dbname' => 'pinheir3_controle_frotasV1.1',
    'username' => 'pinheir3_admin', 
    'password' => '080880Gelboy'
];

try {
    $pdo = new PDO(
        "mysql:host={$config['host']};dbname={$config['dbname']};charset=utf8mb4",
        $config['username'],
        $config['password'],
        [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
    );
    
    echo "<h2>🔍 Diagnóstico da Viagem 79</h2>";
    
    // 1. Verificar se viagem 79 existe
    $stmt = $pdo->prepare("SELECT * FROM viagens WHERE id = 79");
    $stmt->execute();
    $viagem79 = $stmt->fetch(PDO::FETCH_ASSOC);
    
    if (!$viagem79) {
        echo "<div style='background:#ffe8e8;padding:10px;border-radius:5px;margin:10px 0;'>";
        echo "❌ Viagem 79 não encontrada!";
        echo "</div>";
        exit;
    }
    
    echo "<div style='background:#e8f5e8;padding:10px;border-radius:5px;margin:10px 0;'>";
    echo "<strong>✅ Viagem 79 encontrada!</strong><br>";
    echo "Cliente: " . htmlspecialchars($viagem79['cliente']) . "<br>";
    echo "Data início: " . $viagem79['data_inicio'] . "<br>";
    echo "Data fim: " . ($viagem79['data_fim'] ?? 'Em andamento') . "<br>";
    echo "Lat inicial: " . $viagem79['latitude_inicial'] . "<br>";
    echo "Lng inicial: " . $viagem79['longitude_inicial'] . "<br>";
    echo "Lat final: " . ($viagem79['latitude_final'] ?? 'N/A') . "<br>";
    echo "Lng final: " . ($viagem79['longitude_final'] ?? 'N/A') . "<br>";
    echo "</div>";
    
    // 2. Verificar pontos GPS na tabela rastreamento_tempo_real
    $stmt = $pdo->prepare("SELECT COUNT(*) as total FROM rastreamento_tempo_real WHERE viagem_id = 79");
    $stmt->execute();
    $totalPontos = $stmt->fetch(PDO::FETCH_ASSOC)['total'];
    
    echo "<h3>📍 Pontos GPS coletados:</h3>";
    if ($totalPontos > 0) {
        echo "<div style='background:#e8f5e8;padding:10px;border-radius:5px;margin:10px 0;'>";
        echo "<strong>✅ Encontrados $totalPontos pontos GPS!</strong>";
        echo "</div>";
        
        // Mostrar primeiro e último ponto
        $stmt = $pdo->prepare("
            (SELECT 'PRIMEIRO' as tipo, timestamp, latitude, longitude, velocidade, precisao 
             FROM rastreamento_tempo_real WHERE viagem_id = 79 ORDER BY timestamp ASC LIMIT 1)
            UNION ALL
            (SELECT 'ÚLTIMO' as tipo, timestamp, latitude, longitude, velocidade, precisao 
             FROM rastreamento_tempo_real WHERE viagem_id = 79 ORDER BY timestamp DESC LIMIT 1)
        ");
        $stmt->execute();
        $pontosExtremos = $stmt->fetchAll(PDO::FETCH_ASSOC);
        
        echo "<table border='1' style='border-collapse:collapse;margin:10px 0;'>";
        echo "<tr><th>Tipo</th><th>Timestamp</th><th>Latitude</th><th>Longitude</th><th>Velocidade</th></tr>";
        foreach ($pontosExtremos as $ponto) {
            echo "<tr>";
            echo "<td><strong>" . $ponto['tipo'] . "</strong></td>";
            echo "<td>" . $ponto['timestamp'] . "</td>";
            echo "<td>" . $ponto['latitude'] . "</td>";
            echo "<td>" . $ponto['longitude'] . "</td>";
            echo "<td>" . $ponto['velocidade'] . " km/h</td>";
            echo "</tr>";
        }
        echo "</table>";
        
        // Verificar se os pontos têm coordenadas diferentes
        $stmt = $pdo->prepare("
            SELECT 
                MIN(latitude) as min_lat, MAX(latitude) as max_lat,
                MIN(longitude) as min_lng, MAX(longitude) as max_lng,
                COUNT(DISTINCT CONCAT(latitude, ',', longitude)) as pontos_unicos
            FROM rastreamento_tempo_real 
            WHERE viagem_id = 79
        ");
        $stmt->execute();
        $coordenadas = $stmt->fetch(PDO::FETCH_ASSOC);
        
        echo "<div style='background:#f0f8ff;padding:10px;border-radius:5px;margin:10px 0;'>";
        echo "<h4>📊 Análise das coordenadas:</h4>";
        echo "Latitude: " . $coordenadas['min_lat'] . " até " . $coordenadas['max_lat'] . "<br>";
        echo "Longitude: " . $coordenadas['min_lng'] . " até " . $coordenadas['max_lng'] . "<br>";
        echo "Pontos únicos: " . $coordenadas['pontos_unicos'] . " de $totalPontos<br>";
        
        $distanciaLat = abs($coordenadas['max_lat'] - $coordenadas['min_lat']);
        $distanciaLng = abs($coordenadas['max_lng'] - $coordenadas['min_lng']);
        
        if ($distanciaLat < 0.001 && $distanciaLng < 0.001) {
            echo "<strong style='color:red;'>⚠️ PROBLEMA: Todos os pontos estão muito próximos!</strong><br>";
            echo "Isso pode fazer parecer uma linha reta.";
        } else {
            echo "<strong style='color:green;'>✅ Pontos espalhados geograficamente</strong><br>";
            echo "Distância lat: " . number_format($distanciaLat, 6) . "°<br>";
            echo "Distância lng: " . number_format($distanciaLng, 6) . "°";
        }
        echo "</div>";
        
    } else {
        echo "<div style='background:#ffe8e8;padding:10px;border-radius:5px;margin:10px 0;'>";
        echo "<strong>❌ NENHUM ponto GPS encontrado para viagem 79!</strong><br>";
        echo "Isso explica por que aparece apenas uma linha reta no retaguarda.";
        echo "</div>";
    }
    
    // 3. Testar API que o retaguarda usa
    echo "<h3>🔌 Testar API do retaguarda:</h3>";
    $apiUrl = "https://sistemas.pinheiroempresas.com.br/controlefrota/backend-php/api-simples-v2.php?acao=viagem_detalhes&id=79";
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $apiUrl);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    
    if ($httpCode == 200) {
        $dadosApi = json_decode($response, true);
        
        echo "<div style='background:#e8f5e8;padding:10px;border-radius:5px;margin:10px 0;'>";
        echo "<strong>✅ API respondeu com sucesso!</strong><br>";
        
        if (isset($dadosApi['trajeto_gps']) && !empty($dadosApi['trajeto_gps'])) {
            $pontosApi = count($dadosApi['trajeto_gps']);
            echo "Pontos GPS na API: <strong>$pontosApi</strong><br>";
            echo "Primeiro ponto API: " . json_encode($dadosApi['trajeto_gps'][0]) . "<br>";
            echo "Último ponto API: " . json_encode(end($dadosApi['trajeto_gps'])) . "<br>";
        } else {
            echo "<strong style='color:red;'>❌ API não retorna trajeto_gps!</strong><br>";
            echo "Campo 'trajeto_gps' está vazio ou não existe.";
        }
        echo "</div>";
        
        // Mostrar estrutura da resposta
        echo "<details style='margin:10px 0;'>";
        echo "<summary>🔍 Ver resposta completa da API (clique para expandir)</summary>";
        echo "<pre style='background:#f8f9fa;padding:10px;border-radius:5px;max-height:300px;overflow:auto;'>";
        echo htmlspecialchars(json_encode($dadosApi, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
        echo "</pre>";
        echo "</details>";
        
    } else {
        echo "<div style='background:#ffe8e8;padding:10px;border-radius:5px;margin:10px 0;'>";
        echo "❌ Erro na API: HTTP $httpCode<br>";
        echo "Resposta: " . htmlspecialchars($response);
        echo "</div>";
    }
    
    // 4. JavaScript para testar no cliente
    echo "<h3>🧪 Teste do JavaScript:</h3>";
    echo "<div style='background:#fff3cd;padding:10px;border-radius:5px;margin:10px 0;'>";
    echo "<p>Vamos testar se o JavaScript consegue processar os dados:</p>";
    echo "<button onclick='testarProcessamento()' style='background:#007bff;color:white;padding:10px 20px;border:none;border-radius:5px;cursor:pointer;'>🧪 Testar Processamento</button>";
    echo "<div id='resultado-teste' style='margin-top:10px;'></div>";
    echo "</div>";
    
    // 5. Possíveis soluções
    echo "<h3>🔧 Possíveis soluções:</h3>";
    echo "<div style='background:#f0f8ff;padding:15px;border-radius:5px;margin:15px 0;'>";
    
    if ($totalPontos == 0) {
        echo "<h4>❌ Problema: Sem pontos GPS</h4>";
        echo "<ol>";
        echo "<li><a href='criar-gps-viagem-75.php?viagem_id=79&acao=criar' style='background:#28a745;color:white;padding:8px 16px;text-decoration:none;border-radius:5px;'>🎯 Criar GPS de Teste</a></li>";
        echo "</ol>";
    } else {
        echo "<h4>🔧 Problema: JavaScript não processa corretamente</h4>";
        echo "<ol>";
        echo "<li><strong>Limpar cache:</strong> Ctrl+F5 na página do retaguarda</li>";
        echo "<li><strong>Verificar console:</strong> F12 → Console → ver erros JavaScript</li>";
        echo "<li><strong>Forçar reload:</strong> Fechar e abrir nova aba</li>";
        echo "<li><strong>Testar em modo privado:</strong> Para eliminar cache</li>";
        echo "</ol>";
    }
    echo "</div>";
    
} catch (Exception $e) {
    echo "<div style='background:#ffe8e8;padding:10px;border-radius:5px;margin:10px 0;'>";
    echo "❌ Erro: " . htmlspecialchars($e->getMessage());
    echo "</div>";
}
?>

<script>
async function testarProcessamento() {
    const resultadoDiv = document.getElementById('resultado-teste');
    resultadoDiv.innerHTML = '🔄 Testando...';
    
    try {
        // Buscar dados da API
        const response = await fetch('api-simples-v2.php?acao=viagem_detalhes&id=79');
        const dados = await response.json();
        
        resultadoDiv.innerHTML = '';
        
        if (dados.trajeto_gps && dados.trajeto_gps.length > 0) {
            resultadoDiv.innerHTML += `<p style="color:green;">✅ API retorna ${dados.trajeto_gps.length} pontos GPS</p>`;
            
            // Testar se consegue desenhar
            if (typeof desenharTrajeto === 'function') {
                resultadoDiv.innerHTML += `<p style="color:green;">✅ Função desenharTrajeto() existe</p>`;
                resultadoDiv.innerHTML += `<p>🔧 Tente recarregar a página com Ctrl+F5</p>`;
            } else {
                resultadoDiv.innerHTML += `<p style="color:red;">❌ Função desenharTrajeto() não encontrada</p>`;
                resultadoDiv.innerHTML += `<p>🔧 Problema no JavaScript do retaguarda</p>`;
            }
            
        } else {
            resultadoDiv.innerHTML += `<p style="color:red;">❌ API não retorna pontos GPS</p>`;
            resultadoDiv.innerHTML += `<p>🔧 Problema na API backend</p>`;
        }
        
    } catch (error) {
        resultadoDiv.innerHTML = `<p style="color:red;">❌ Erro: ${error.message}</p>`;
    }
}
</script> 
