<?php
require_once 'conexao.php';

echo "<h2>🔍 Investigando KM GPS de 164 metros</h2>";

try {
    // Buscar as viagens da rota #48
    $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 = 48
                   ORDER BY v.id";
    
    $stmt = $pdo->prepare($sqlViagens);
    $stmt->execute();
    $viagens = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    echo "<h3>Viagens da Rota #48:</h3>";
    echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
    echo "<tr style='background-color: #f0f0f0;'>";
    echo "<th>ID</th><th>Cliente</th><th>KM Inicial</th><th>KM Final</th><th>KM GPS (m)</th><th>KM GPS (km)</th><th>Trajeto</th><th>Observações</th>";
    echo "</tr>";
    
    foreach ($viagens as $viagem) {
        $kmGpsMetros = floatval($viagem['km_gps_final'] ?: 0);
        $kmGpsKm = $kmGpsMetros / 1000;
        
        $trajeto = $viagem['trajeto'];
        $pontosCount = 0;
        $pontosValidos = 0;
        
        if ($trajeto) {
            $pontos = json_decode($trajeto, true);
            $pontosCount = $pontos ? count($pontos) : 0;
            
            if ($pontos) {
                foreach ($pontos as $ponto) {
                    if (isset($ponto[0], $ponto[1]) && $ponto[0] != 0 && $ponto[1] != 0) {
                        $pontosValidos++;
                    }
                }
            }
        }
        
        echo "<tr>";
        echo "<td>{$viagem['id']}</td>";
        echo "<td>{$viagem['cliente']}</td>";
        echo "<td>{$viagem['km_inicial']}</td>";
        echo "<td>{$viagem['km_final']}</td>";
        echo "<td><strong>$kmGpsMetros</strong></td>";
        echo "<td>" . number_format($kmGpsKm, 3) . "</td>";
        echo "<td>$pontosCount total, $pontosValidos válidos</td>";
        echo "<td>{$viagem['observacoes']}</td>";
        echo "</tr>";
    }
    echo "</table>";
    
    // Verificar logs do servidor para essas viagens
    echo "<h3>🔍 Verificando logs do servidor:</h3>";
    
    // Buscar no error_log por essas viagens
    $errorLogPath = '/var/log/apache2/error.log'; // Ajustar conforme necessário
    if (file_exists($errorLogPath)) {
        echo "<p>📋 Últimas 20 linhas do error_log:</p>";
        echo "<pre style='background: #f5f5f5; padding: 10px; border-radius: 5px; max-height: 300px; overflow-y: auto;'>";
        $lines = file($errorLogPath);
        $lastLines = array_slice($lines, -20);
        foreach ($lastLines as $line) {
            if (strpos($line, 'viagem') !== false || strpos($line, 'km') !== false || strpos($line, 'gps') !== false) {
                echo htmlspecialchars($line);
            }
        }
        echo "</pre>";
    } else {
        echo "<p>⚠️ Arquivo de log não encontrado em: $errorLogPath</p>";
    }
    
    // Verificar se há algum problema na API
    echo "<h3>🧪 Teste da API:</h3>";
    
    // Simular o que o app Android enviou
    $dadosTeste = [
        'viagem_id' => $viagens[0]['id'],
        'kmGpsFinal' => 164, // 164 metros
        'observacoes' => 'Teste - KM GPS deveria ser 164 metros'
    ];
    
    echo "<p>📤 <strong>Dados que o app deveria ter enviado:</strong></p>";
    echo "<pre>" . json_encode($dadosTeste, JSON_PRETTY_PRINT) . "</pre>";
    
    // Verificar se a API processaria corretamente
    $kmGps = isset($dadosTeste['kmGpsFinal']) ? floatval($dadosTeste['kmGpsFinal']) : null;
    
    if ($kmGps && $kmGps > 0) {
        echo "<p style='color: green;'>✅ API processaria corretamente: $kmGps metros</p>";
        
        // Verificar se há algum problema de conversão
        if ($kmGps == 164) {
            echo "<p style='color: green;'>✅ Valor correto: 164 metros</p>";
        } else {
            echo "<p style='color: red;'>❌ Valor incorreto: $kmGps metros (deveria ser 164)</p>";
        }
    } else {
        echo "<p style='color: red;'>❌ API não processaria o valor</p>";
    }
    
    // Verificar se há algum problema de arredondamento
    echo "<h3>🔢 Verificação de Arredondamento:</h3>";
    
    $valores = [164, 164.0, 164.1, 163.9, 164.5];
    
    echo "<table border='1' style='border-collapse: collapse;'>";
    echo "<tr style='background-color: #f0f0f0;'>";
    echo "<th>Valor Original</th><th>floatval()</th><th>intval()</th><th>round()</th>";
    echo "</tr>";
    
    foreach ($valores as $valor) {
        $float = floatval($valor);
        $int = intval($valor);
        $round = round($valor);
        
        echo "<tr>";
        echo "<td>$valor</td>";
        echo "<td>$float</td>";
        echo "<td>$int</td>";
        echo "<td>$round</td>";
        echo "</tr>";
    }
    echo "</table>";
    
    // Verificar se há algum problema no app Android
    echo "<h3>📱 Possíveis Problemas no App Android:</h3>";
    echo "<ul>";
    echo "<li><strong>Arredondamento:</strong> App pode estar arredondando 164 para 1</li>";
    echo "<li><strong>Conversão:</strong> Problema na conversão de km para metros</li>";
    echo "<li><strong>Envio:</strong> App pode estar enviando valor errado</li>";
    echo "<li><strong>Trajeto:</strong> Cálculo baseado no trajeto pode estar incorreto</li>";
    echo "</ul>";
    
    // Verificar se há algum problema no backend
    echo "<h3>🔧 Possíveis Problemas no Backend:</h3>";
    echo "<ul>";
    echo "<li><strong>API:</strong> Pode estar sobrescrevendo o valor</li>";
    echo "<li><strong>Finalização de rota:</strong> Pode estar recalculando incorretamente</li>";
    echo "<li><strong>Conversão:</strong> Problema na conversão de unidades</li>";
    echo "</ul>";
    
} catch (Exception $e) {
    echo "<h3 style='color: red;'>❌ Erro: " . $e->getMessage() . "</h3>";
}
?>
