<?php
/**
 * 🔍 VERIFICAR STATUS DO DASHBOARD
 * Script para verificar se o dashboard está mostrando os valores corretos
 */
header('Content-Type: text/html; charset=utf-8');
require_once 'funcoes-url.php';

echo "<h1>🔍 VERIFICAR STATUS DO DASHBOARD</h1>";

// 1. VERIFICAR DADOS NO BANCO
echo "<h2>📊 1. Dados da Viagem #278 no Banco</h2>";
try {
    $pdo = new PDO("mysql:host=localhost;dbname=pinheir3_controle_frotasV1.1;charset=utf8", "pinheir3_controle_frotas", "Pinheiro@2024");
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    $sql = "SELECT id, cliente_nome, km_inicial, km_final, km_manual, km_gps_final, km_gps_real FROM viagens WHERE id = 278";
    $stmt = $pdo->query($sql);
    $viagem = $stmt->fetch(PDO::FETCH_ASSOC);
    
    if ($viagem) {
        echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
        echo "<tr><th>Campo</th><th>Valor</th></tr>";
        echo "<tr><td>ID</td><td>{$viagem['id']}</td></tr>";
        echo "<tr><td>Cliente</td><td>{$viagem['cliente_nome']}</td></tr>";
        echo "<tr><td>KM Inicial</td><td>{$viagem['km_inicial']}</td></tr>";
        echo "<tr><td>KM Final</td><td>{$viagem['km_final']}</td></tr>";
        echo "<tr><td>KM Manual</td><td>{$viagem['km_manual']}</td></tr>";
        echo "<tr><td>KM GPS Final</td><td>{$viagem['km_gps_final']}</td></tr>";
        echo "<tr><td>KM GPS Real</td><td>{$viagem['km_gps_real']}</td></tr>";
        echo "</table>";
    } else {
        echo "<p>❌ Viagem #278 não encontrada!</p>";
    }
} catch (Exception $e) {
    echo "<p>❌ Erro no banco: " . $e->getMessage() . "</p>";
}

// 2. TESTAR API DIRETAMENTE
echo "<h2>📡 2. Testando API listar_viagens_completas</h2>";
$url = urlApi('listar_viagens_completas');
echo "<p><strong>URL da API:</strong> $url</p>";

$context = stream_context_create([
    'http' => [
        'timeout' => 10,
        'ignore_errors' => true
    ]
]);

$response = @file_get_contents($url, false, $context);
if ($response === false) {
    echo "<p>❌ Erro ao acessar API</p>";
} else {
    $data = json_decode($response, true);
    if ($data && isset($data['dados'])) {
        $viagens = $data['dados'];
        $viagem278 = null;
        
        foreach ($viagens as $v) {
            if ($v['id'] == 278) {
                $viagem278 = $v;
                break;
            }
        }
        
        if ($viagem278) {
            echo "<h3>📊 Viagem #278 na API:</h3>";
            echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
            echo "<tr><th>Campo</th><th>Valor</th></tr>";
            echo "<tr><td>ID</td><td>{$viagem278['id']}</td></tr>";
            echo "<tr><td>Cliente</td><td>{$viagem278['cliente_nome']}</td></tr>";
            echo "<tr><td>KM Manual</td><td>{$viagem278['km_manual']}</td></tr>";
            echo "<tr><td>KM GPS Final</td><td>{$viagem278['km_gps_final']}</td></tr>";
            echo "<tr><td>KM GPS Real</td><td>" . (isset($viagem278['km_gps_real']) ? $viagem278['km_gps_real'] : 'N/A') . "</td></tr>";
            echo "</table>";
        } else {
            echo "<p>❌ Viagem #278 não encontrada na API</p>";
        }
    } else {
        echo "<p>❌ Resposta da API inválida</p>";
        echo "<pre>" . htmlspecialchars($response) . "</pre>";
    }
}

// 3. VERIFICAR DASHBOARD
echo "<h2>📱 3. Link para o Dashboard</h2>";
$dashboardUrl = urlSistema('admin/dashboard.html');
echo "<p><strong>Dashboard:</strong> <a href='$dashboardUrl' target='_blank'>$dashboardUrl</a></p>";
echo "<p>🔍 <strong>Verifique se a rota #80 mostra o valor correto!</strong></p>";

// 4. RECALCULAR KM GPS REAL
echo "<h2>🧮 4. Recalculando KM GPS Real</h2>";
try {
    $sql_pontos = "SELECT latitude, longitude, timestamp FROM rastreamento_tempo_real WHERE viagem_id = 278 ORDER BY timestamp ASC";
    $stmt = $pdo->query($sql_pontos);
    $pontos = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    echo "<p>📍 Pontos GPS encontrados: " . count($pontos) . "</p>";
    
    if (count($pontos) > 1) {
        $distanciaTotal = 0;
        $pontosValidos = 0;
        
        for ($i = 0; $i < count($pontos) - 1; $i++) {
            $lat1 = $pontos[$i]['latitude'];
            $lon1 = $pontos[$i]['longitude'];
            $lat2 = $pontos[$i + 1]['latitude'];
            $lon2 = $pontos[$i + 1]['longitude'];
            
            $distancia = haversine($lat1, $lon1, $lat2, $lon2);
            
            // Filtrar distâncias muito pequenas (ruído GPS)
            if ($distancia >= 0.001) { // 1 metro mínimo
                $distanciaTotal += $distancia;
                $pontosValidos++;
            }
        }
        
        echo "<p>🧮 Distância total calculada: " . number_format($distanciaTotal, 6) . " km</p>";
        echo "<p>✅ Pontos válidos: $pontosValidos</p>";
        
        // Atualizar no banco
        $sql_update = "UPDATE viagens SET km_gps_real = ? WHERE id = 278";
        $stmt = $pdo->prepare($sql_update);
        $stmt->execute([$distanciaTotal]);
        
        echo "<p>✅ KM GPS Real atualizado no banco!</p>";
    } else {
        echo "<p>⚠️ Poucos pontos GPS para calcular</p>";
    }
} catch (Exception $e) {
    echo "<p>❌ Erro ao recalcular: " . $e->getMessage() . "</p>";
}

// 5. VERIFICAÇÃO FINAL
echo "<h2>🎯 5. Verificação Final</h2>";
try {
    $sql_final = "SELECT km_gps_final, km_gps_real FROM viagens WHERE id = 278";
    $stmt = $pdo->query($sql_final);
    $resultado = $stmt->fetch(PDO::FETCH_ASSOC);
    
    echo "<p><strong>Valores finais no banco:</strong></p>";
    echo "<ul>";
    echo "<li>KM GPS Final: " . number_format($resultado['km_gps_final'], 3) . " km</li>";
    echo "<li>KM GPS Real: " . number_format($resultado['km_gps_real'], 3) . " km</li>";
    echo "</ul>";
    
    echo "<p><strong>Dashboard deve mostrar:</strong> " . number_format($resultado['km_gps_real'], 3) . " km</p>";
} catch (Exception $e) {
    echo "<p>❌ Erro na verificação final: " . $e->getMessage() . "</p>";
}

echo "<hr>";
echo "<p><strong>🔧 Próximos passos:</strong></p>";
echo "<ol>";
echo "<li>Recarregue o dashboard (Ctrl+F5)</li>";
echo "<li>Verifique se a rota #80 mostra o valor correto</li>";
echo "<li>Se ainda estiver errado, verifique o console do navegador</li>";
echo "</ol>";

function haversine($lat1, $lon1, $lat2, $lon2) {
    $lat1 = deg2rad($lat1);
    $lon1 = deg2rad($lon1);
    $lat2 = deg2rad($lat2);
    $lon2 = deg2rad($lon2);
    
    $dlat = $lat2 - $lat1;
    $dlon = $lon2 - $lon1;
    
    $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));
    
    return 6371 * $c; // Raio da Terra em km
}
?>
