<?php
// Script para verificar como os valores de KM GPS estão armazenados no banco
require_once '../config/database.php';

try {
    $pdo = conectarBanco();
    
    echo "<h2>=== VERIFICAÇÃO DE VALORES KM GPS NO BANCO ===</h2>";
    
    // Verificar estrutura da tabela viagens
    echo "<h3>1. ESTRUTURA DA TABELA VIAGENS (campos relacionados a KM):</h3>";
    $stmt = $pdo->query("DESCRIBE viagens");
    echo "<table border='1' style='border-collapse: collapse;'>";
    echo "<tr><th>Campo</th><th>Tipo</th><th>Null</th><th>Default</th></tr>";
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        if (strpos($row['Field'], 'km') !== false || strpos($row['Field'], 'distancia') !== false) {
            echo "<tr>";
            echo "<td>{$row['Field']}</td>";
            echo "<td>{$row['Type']}</td>";
            echo "<td>{$row['Null']}</td>";
            echo "<td>{$row['Default']}</td>";
            echo "</tr>";
        }
    }
    echo "</table>";
    
    echo "<h3>2. ÚLTIMAS 5 VIAGENS COM DADOS GPS:</h3>";
    $stmt = $pdo->query("
        SELECT 
            id, 
            distancia_gps, 
            km_gps_final, 
            km_gps_real,
            odometro_inicial,
            odometro_final,
            created_at
        FROM viagens 
        WHERE distancia_gps IS NOT NULL 
        ORDER BY id DESC 
        LIMIT 5
    ");
    
    echo "<table border='1' style='border-collapse: collapse;'>";
    echo "<tr><th>ID</th><th>distancia_gps</th><th>km_gps_final</th><th>km_gps_real</th><th>odometro_inicial</th><th>odometro_final</th><th>created_at</th></tr>";
    
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo "<tr>";
        echo "<td>{$row['id']}</td>";
        echo "<td>{$row['distancia_gps']}</td>";
        echo "<td>{$row['km_gps_final']}</td>";
        echo "<td>{$row['km_gps_real']}</td>";
        echo "<td>{$row['odometro_inicial']}</td>";
        echo "<td>{$row['odometro_final']}</td>";
        echo "<td>{$row['created_at']}</td>";
        echo "</tr>";
    }
    echo "</table>";
    
    echo "<h3>3. VERIFICAR SE EXISTE VALOR 1.4 KM:</h3>";
    $stmt = $pdo->query("
        SELECT 
            id, 
            distancia_gps, 
            km_gps_final, 
            km_gps_real
        FROM viagens 
        WHERE distancia_gps = 1.4 
           OR km_gps_final = 1.4 
           OR km_gps_real = 1.4
           OR distancia_gps LIKE '%1.4%'
           OR km_gps_final LIKE '%1.4%'
           OR km_gps_real LIKE '%1.4%'
    ");
    
    $encontrados = $stmt->fetchAll(PDO::FETCH_ASSOC);
    if (empty($encontrados)) {
        echo "<p style='color: red;'>❌ Nenhum registro encontrado com valor 1.4 km</p>";
    } else {
        echo "<p style='color: green;'>✅ Registros encontrados com valor 1.4 km:</p>";
        echo "<table border='1' style='border-collapse: collapse;'>";
        echo "<tr><th>ID</th><th>distancia_gps</th><th>km_gps_final</th><th>km_gps_real</th></tr>";
        foreach ($encontrados as $row) {
            echo "<tr>";
            echo "<td>{$row['id']}</td>";
            echo "<td>{$row['distancia_gps']}</td>";
            echo "<td>{$row['km_gps_final']}</td>";
            echo "<td>{$row['km_gps_real']}</td>";
            echo "</tr>";
        }
        echo "</table>";
    }
    
    echo "<h3>4. VERIFICAR ARREDONDAMENTO - Valores próximos a 1.4:</h3>";
    $stmt = $pdo->query("
        SELECT 
            id, 
            distancia_gps, 
            km_gps_final, 
            km_gps_real
        FROM viagens 
        WHERE (distancia_gps BETWEEN 1.35 AND 1.45)
           OR (km_gps_final BETWEEN 1.35 AND 1.45)
           OR (km_gps_real BETWEEN 1.35 AND 1.45)
        ORDER BY id DESC
        LIMIT 10
    ");
    
    $proximos = $stmt->fetchAll(PDO::FETCH_ASSOC);
    if (empty($proximos)) {
        echo "<p style='color: red;'>❌ Nenhum registro encontrado com valores próximos a 1.4 km</p>";
    } else {
        echo "<p style='color: green;'>✅ Registros encontrados com valores próximos a 1.4 km:</p>";
        echo "<table border='1' style='border-collapse: collapse;'>";
        echo "<tr><th>ID</th><th>distancia_gps</th><th>km_gps_final</th><th>km_gps_real</th></tr>";
        foreach ($proximos as $row) {
            echo "<tr>";
            echo "<td>{$row['id']}</td>";
            echo "<td>{$row['distancia_gps']}</td>";
            echo "<td>{$row['km_gps_final']}</td>";
            echo "<td>{$row['km_gps_real']}</td>";
            echo "</tr>";
        }
        echo "</table>";
    }
    
    echo "<h3>5. INFORMAÇÕES SOBRE ARREDONDAMENTO:</h3>";
    echo "<ul>";
    echo "<li><strong>ROUND(SUM(...), 2)</strong> - arredonda para 2 casas decimais</li>";
    echo "<li>Valores como 1.4 km podem ser resultado de arredondamento de 1.35, 1.36, 1.37, 1.38, 1.39</li>";
    echo "<li>Ou podem ser valores exatos de 1.4 km</li>";
    echo "<li>O sistema usa fórmula de Haversine para calcular distâncias geográficas</li>";
    echo "<li>Aplica filtro de velocidade (apenas pontos em movimento)</li>";
    echo "</ul>";
    
    echo "<h3>6. TODOS OS VALORES DE KM GPS (últimos 20 registros):</h3>";
    $stmt = $pdo->query("
        SELECT 
            id, 
            distancia_gps, 
            km_gps_final, 
            km_gps_real,
            created_at
        FROM viagens 
        WHERE distancia_gps IS NOT NULL 
        ORDER BY id DESC 
        LIMIT 20
    ");
    
    echo "<table border='1' style='border-collapse: collapse;'>";
    echo "<tr><th>ID</th><th>distancia_gps</th><th>km_gps_final</th><th>km_gps_real</th><th>created_at</th></tr>";
    
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo "<tr>";
        echo "<td>{$row['id']}</td>";
        echo "<td>{$row['distancia_gps']}</td>";
        echo "<td>{$row['km_gps_final']}</td>";
        echo "<td>{$row['km_gps_real']}</td>";
        echo "<td>{$row['created_at']}</td>";
        echo "</tr>";
    }
    echo "</table>";
    
} catch (Exception $e) {
    echo "<h2 style='color: red;'>ERRO: " . $e->getMessage() . "</h2>";
}
?>
