<?php
/**
 * 🔍 DEBUG: Rota #80 (Viagem #278)
 * 
 * Script para debugar especificamente a rota #80 (viagem #278)
 * e ver por que o dashboard não está mostrando o valor correto
 */

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

// Incluir funções de URL automática
require_once 'funcoes-url.php';

// Conectar ao banco
$pdo = new PDO(
    "mysql:host=localhost;dbname=pinheir3_controle_frotasV1.1;charset=utf8mb4",
    "pinheir3_admin",
    "080880Gelboy"
);

echo "<h1>🔍 DEBUG: Rota #80 (Viagem #278)</h1>";

try {
    // 1. VERIFICAR DADOS NO BANCO
    echo "<h2>📊 1. Dados da Rota #80 (Viagem #278) no Banco</h2>";
    
    $sql = "SELECT * FROM viagens WHERE id = 278";
    $stmt = $pdo->prepare($sql);
    $stmt->execute();
    $viagem = $stmt->fetch();
    
    if ($viagem) {
        echo "<div style='background: #f9f9f9; padding: 15px; border-radius: 5px;'>";
        echo "<h3>📋 Dados da Rota #80 (Viagem #278):</h3>";
        echo "<ul>";
        echo "<li><strong>ID:</strong> {$viagem['id']}</li>";
        echo "<li><strong>Cliente:</strong> {$viagem['cliente']}</li>";
        echo "<li><strong>KM Inicial:</strong> {$viagem['km_inicial']}</li>";
        echo "<li><strong>KM Final:</strong> {$viagem['km_final']}</li>";
        echo "<li><strong>KM Manual:</strong> " . ($viagem['km_final'] - $viagem['km_inicial']) . " km</li>";
        echo "<li><strong>KM GPS Final:</strong> " . ($viagem['km_gps_final'] ?: 'NULL') . "</li>";
        echo "<li><strong>KM GPS Real:</strong> " . ($viagem['km_gps_real'] ?: 'NULL') . "</li>";
        echo "</ul>";
        echo "</div>";
    } else {
        echo "<p style='color: red;'>❌ Rota #80 (Viagem #278) não encontrada no banco!</p>";
        exit;
    }
    
    // 2. TESTAR API DIRETAMENTE
    echo "<h2>📡 2. Testando API Diretamente</h2>";
    
    $url = urlApi('listar_viagens_completas');
    echo "<p><strong>URL da API:</strong> $url</p>";
    
    $response = file_get_contents($url);
    $data = json_decode($response, true);
    
    if ($data && isset($data['dados'])) {
        $viagens = $data['dados'];
        
                 // Procurar pela rota #80 (viagem #278)
         $viagem80_api = null;
         foreach ($viagens as $v) {
             if ($v['id'] == 278) {
                 $viagem80_api = $v;
                 break;
             }
         }
         
         if ($viagem80_api) {
             echo "<div style='background: #e8f5e8; padding: 15px; border-radius: 5px;'>";
             echo "<h3>✅ Rota #80 (Viagem #278) na API:</h3>";
            echo "<ul>";
            echo "<li><strong>ID:</strong> {$viagem80_api['id']}</li>";
            echo "<li><strong>Cliente:</strong> {$viagem80_api['cliente']}</li>";
            echo "<li><strong>KM Inicial:</strong> {$viagem80_api['km_inicial']}</li>";
            echo "<li><strong>KM Final:</strong> {$viagem80_api['km_final']}</li>";
            echo "<li><strong>KM Manual:</strong> " . ($viagem80_api['km_final'] - $viagem80_api['km_inicial']) . " km</li>";
            echo "<li><strong>KM GPS Final:</strong> " . ($viagem80_api['km_gps_final'] ?: 'NULL') . "</li>";
            echo "<li><strong>KM GPS Real:</strong> " . ($viagem80_api['km_gps_real'] ?: 'NULL') . "</li>";
            echo "</ul>";
            echo "</div>";
                 } else {
             echo "<p style='color: orange;'>⚠️ Rota #80 (Viagem #278) não encontrada na API</p>";
         }
    } else {
        echo "<p style='color: red;'>❌ Erro na API: " . ($data['mensagem'] ?? 'Erro desconhecido') . "</p>";
    }
    
    // 3. VERIFICAR CONSULTA SQL DA API
    echo "<h2>🔍 3. Verificando Consulta SQL da API</h2>";
    
         $sql_api = "SELECT v.*, 
                 m.nome as tecnico_nome,
                 ve.modelo as veiculo_modelo,
                 ve.placa as veiculo_placa,
                 COALESCE(v.km_gps_real, v.km_gps_final) as km_gps_real
             FROM viagens v
             LEFT JOIN motoristas m ON v.tecnico_id = m.id
             LEFT JOIN veiculos ve ON v.veiculo_id = ve.id
             WHERE v.id = 278";
    
    $stmt_api = $pdo->prepare($sql_api);
    $stmt_api->execute();
    $viagem_sql = $stmt_api->fetch();
    
    if ($viagem_sql) {
        echo "<div style='background: #fff3cd; padding: 15px; border-radius: 5px;'>";
        echo "<h3>🔍 Resultado da Consulta SQL:</h3>";
        echo "<ul>";
        echo "<li><strong>ID:</strong> {$viagem_sql['id']}</li>";
        echo "<li><strong>KM GPS Final:</strong> " . ($viagem_sql['km_gps_final'] ?: 'NULL') . "</li>";
        echo "<li><strong>KM GPS Real:</strong> " . ($viagem_sql['km_gps_real'] ?: 'NULL') . "</li>";
        echo "<li><strong>COALESCE Result:</strong> " . ($viagem_sql['km_gps_real'] ?: 'NULL') . "</li>";
        echo "</ul>";
        echo "</div>";
    }
    
    // 4. CALCULAR KM GPS REAL
    echo "<h2>🧮 4. Calculando KM GPS Real</h2>";
    
         $sql_pontos = "SELECT latitude, longitude, timestamp 
                    FROM rastreamento_tempo_real 
                    WHERE viagem_id = 278 
                    ORDER BY timestamp ASC";
    $stmt_pontos = $pdo->prepare($sql_pontos);
    $stmt_pontos->execute();
    $pontos = $stmt_pontos->fetchAll();
    
    echo "<p><strong>Pontos GPS encontrados:</strong> " . count($pontos) . "</p>";
    
    if (count($pontos) > 1) {
        // Função Haversine
        function haversine($lat1, $lon1, $lat2, $lon2) {
            $R = 6371.0;
            $dLat = deg2rad($lat2 - $lat1);
            $dLon = deg2rad($lon2 - $lon1);
            $lat1 = deg2rad($lat1);
            $lat2 = deg2rad($lat2);
            
            $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 $R * $c;
        }
        
        $distanciaTotal = 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);
            $distanciaTotal += $distancia;
        }
        
        echo "<div style='background: #d1ecf1; padding: 15px; border-radius: 5px;'>";
        echo "<h3>🧮 Cálculo Real:</h3>";
        echo "<ul>";
        echo "<li><strong>Distância calculada:</strong> " . number_format($distanciaTotal, 6) . " km</li>";
        echo "<li><strong>Valor no banco (km_gps_real):</strong> " . ($viagem['km_gps_real'] ?: 'NULL') . "</li>";
        echo "<li><strong>Valor no banco (km_gps_final):</strong> " . ($viagem['km_gps_final'] ?: 'NULL') . "</li>";
        echo "</ul>";
        echo "</div>";
        
        // 5. ATUALIZAR SE NECESSÁRIO
        if (abs($distanciaTotal - ($viagem['km_gps_real'] ?: 0)) > 0.001) {
            echo "<h2>🔧 5. Atualizando KM GPS Real</h2>";
            
                         $sql_update = "UPDATE viagens SET km_gps_real = ? WHERE id = 278";
            $stmt_update = $pdo->prepare($sql_update);
            $stmt_update->execute([$distanciaTotal]);
            
            echo "<p style='color: green;'>✅ <strong>Atualizado!</strong> km_gps_real = " . number_format($distanciaTotal, 6) . " km</p>";
        } else {
            echo "<p style='color: blue;'>ℹ️ <strong>Valor já está correto</strong></p>";
        }
    } else {
        echo "<p style='color: orange;'>⚠️ Poucos pontos GPS para calcular</p>";
    }
    
    // 6. TESTE FINAL
    echo "<h2>🎯 6. Teste Final</h2>";
    
         $sql_final = "SELECT km_gps_final, km_gps_real FROM viagens WHERE id = 278";
    $stmt_final = $pdo->prepare($sql_final);
    $stmt_final->execute();
    $final = $stmt_final->fetch();
    
    echo "<div style='background: #d4edda; padding: 15px; border-radius: 5px;'>";
    echo "<h3>📊 Valores Finais:</h3>";
    echo "<ul>";
    echo "<li><strong>KM GPS Final:</strong> " . number_format($final['km_gps_final'], 3) . " km</li>";
    echo "<li><strong>KM GPS Real:</strong> " . number_format($final['km_gps_real'], 3) . " km</li>";
    echo "<li><strong>Dashboard deve mostrar:</strong> " . number_format($final['km_gps_real'], 3) . " km</li>";
    echo "</ul>";
    echo "</div>";
    
} catch (Exception $e) {
    echo "<p style='color: red;'>❌ Erro: " . $e->getMessage() . "</p>";
}

echo "<hr>";
echo "<p><em>Debug realizado em: " . date('Y-m-d H:i:s') . "</em></p>";
echo "<p><strong>🎯 Próximo passo:</strong> Recarregue o dashboard (Ctrl+F5) e verifique se agora mostra o valor correto!</p>";
?>
