<?php
require_once 'conexao.php';

echo "<h2>🔍 Verificando Pontos GPS Reais nas Viagens</h2>";

try {
    // Buscar viagens da rota #46
    $sqlViagens = "SELECT v.*, rv.solicitacao_rota_id 
                   FROM viagens v 
                   INNER JOIN rota_viagens rv ON v.id = rv.viagem_id 
                   WHERE rv.solicitacao_rota_id = 46";
    
    $stmt = $pdo->prepare($sqlViagens);
    $stmt->execute();
    $viagens = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    echo "<h3>Viagens da Rota #46:</h3>";
    echo "<table border='1' style='border-collapse: collapse;'>";
    echo "<tr><th>ID</th><th>Cliente</th><th>Trajeto</th><th>Pontos GPS</th><th>KM GPS Atual</th><th>Status</th></tr>";
    
    foreach ($viagens as $viagem) {
        $trajeto = $viagem['trajeto'];
        $pontosCount = 0;
        $pontosValidos = 0;
        $kmGpsCalculado = 0;
        
        if ($trajeto) {
            $pontos = json_decode($trajeto, true);
            $pontosCount = $pontos ? count($pontos) : 0;
            
            if ($pontos && count($pontos) >= 2) {
                $distanciaTotal = 0;
                for ($i = 1; $i < count($pontos); $i++) {
                    $pontoAnterior = $pontos[$i-1];
                    $pontoAtual = $pontos[$i];
                    
                    // Verificar se os pontos têm coordenadas válidas
                    if (isset($pontoAnterior[0], $pontoAnterior[1], $pontoAtual[0], $pontoAtual[1]) &&
                        $pontoAnterior[0] != 0 && $pontoAnterior[1] != 0 &&
                        $pontoAtual[0] != 0 && $pontoAtual[1] != 0) {
                        
                        $pontosValidos++;
                        
                        // Calcular distância usando Haversine
                        $R = 6371; // Raio da Terra em km
                        $dLat = deg2rad($pontoAtual[0] - $pontoAnterior[0]);
                        $dLon = deg2rad($pontoAtual[1] - $pontoAnterior[1]);
                        $lat1 = deg2rad($pontoAnterior[0]);
                        $lat2 = deg2rad($pontoAtual[0]);
                        $a = sin($dLat/2) * sin($dLat/2) + cos($lat1) * cos($lat2) * sin($dLon/2) * sin($dLon/2);
                        $c = 2 * atan2(sqrt($a), sqrt(1-$a));
                        $distancia = $R * $c;
                        $distanciaTotal += $distancia;
                    }
                }
                $kmGpsCalculado = $distanciaTotal;
            }
        }
        
        $status = "❌ Sem pontos GPS válidos";
        $statusColor = "red";
        
        if ($pontosValidos > 0) {
            $status = "✅ Com pontos GPS válidos";
            $statusColor = "green";
        }
        
        echo "<tr>";
        echo "<td>{$viagem['id']}</td>";
        echo "<td>{$viagem['cliente']}</td>";
        echo "<td>" . ($trajeto ? 'Sim' : 'Não') . "</td>";
        echo "<td>$pontosCount total, $pontosValidos válidos</td>";
        echo "<td>" . number_format($kmGpsCalculado, 3) . " km</td>";
        echo "<td style='color: $statusColor;'>$status</td>";
        echo "</tr>";
    }
    echo "</table>";
    
    // Verificar se há pontos GPS na tabela rastreamento_tempo_real
    echo "<h3>Verificando Tabela rastreamento_tempo_real:</h3>";
    
    $sqlRastreamento = "SHOW TABLES LIKE 'rastreamento_tempo_real'";
    $stmtRastreamento = $pdo->prepare($sqlRastreamento);
    $stmtRastreamento->execute();
    $tabelaExiste = $stmtRastreamento->fetch();
    
    if ($tabelaExiste) {
        echo "<p style='color: green;'>✅ Tabela rastreamento_tempo_real existe</p>";
        
        // Buscar pontos GPS das viagens da rota #46
        $sqlPontos = "SELECT r.*, v.cliente 
                      FROM rastreamento_tempo_real r
                      INNER JOIN viagens v ON r.viagem_id = v.id
                      INNER JOIN rota_viagens rv ON v.id = rv.viagem_id
                      WHERE rv.solicitacao_rota_id = 46
                      ORDER BY r.viagem_id, r.timestamp";
        
        $stmtPontos = $pdo->prepare($sqlPontos);
        $stmtPontos->execute();
        $pontos = $stmtPontos->fetchAll(PDO::FETCH_ASSOC);
        
        echo "<p>Total de pontos GPS encontrados: " . count($pontos) . "</p>";
        
        if (count($pontos) > 0) {
            echo "<table border='1' style='border-collapse: collapse;'>";
            echo "<tr><th>Viagem ID</th><th>Cliente</th><th>Latitude</th><th>Longitude</th><th>Timestamp</th><th>Status</th></tr>";
            
            foreach ($pontos as $ponto) {
                $coordenadasValidas = ($ponto['latitude'] != 0 && $ponto['longitude'] != 0);
                $status = $coordenadasValidas ? "✅ Válido" : "❌ Inválido";
                $cor = $coordenadasValidas ? "green" : "red";
                
                echo "<tr>";
                echo "<td>{$ponto['viagem_id']}</td>";
                echo "<td>{$ponto['cliente']}</td>";
                echo "<td>{$ponto['latitude']}</td>";
                echo "<td>{$ponto['longitude']}</td>";
                echo "<td>{$ponto['timestamp']}</td>";
                echo "<td style='color: $cor;'>$status</td>";
                echo "</tr>";
            }
            echo "</table>";
        } else {
            echo "<p style='color: orange;'>⚠️ Nenhum ponto GPS encontrado para as viagens da rota #46</p>";
        }
    } else {
        echo "<p style='color: orange;'>⚠️ Tabela rastreamento_tempo_real não existe</p>";
    }
    
} catch (Exception $e) {
    echo "<h3 style='color: red;'>❌ Erro: " . $e->getMessage() . "</h3>";
}
?>
