<?php
header('Content-Type: text/html; charset=utf-8');
require_once 'config/database.php';

echo "<h1>📍 Inserir Pontos GPS na Viagem 262</h1>";

try {
    $pdo = conectarBanco();
    
    // 1. Verificar viagem 262
    echo "<h2>📋 Verificando Viagem ID 262</h2>";
    $sql = "SELECT * FROM viagens WHERE id = 262";
    $stmt = $pdo->query($sql);
    $viagem = $stmt->fetch(PDO::FETCH_ASSOC);
    
    if (!$viagem) {
        echo "<p>❌ Viagem ID 262 não encontrada!</p>";
        exit;
    }
    
    echo "<p>✅ Viagem encontrada: {$viagem['cliente']} - {$viagem['motivo']}</p>";
    echo "<p>📅 Data início: {$viagem['data_inicio']}</p>";
    echo "<p>📅 Data fim: " . ($viagem['data_fim'] ?: 'Em andamento') . "</p>";
    
    // 2. Inserir pontos GPS de teste na rastreamento_tempo_real
    echo "<h2>📍 Inserindo Pontos GPS de Teste</h2>";
    
    // Pontos de teste (simulando uma viagem real)
    $pontos = [
        ['lat' => -10.123456, 'lng' => -48.123456, 'vel' => 25.5, 'prec' => 10.0, 'alt' => 100.0],
        ['lat' => -10.123500, 'lng' => -48.123500, 'vel' => 30.2, 'prec' => 8.5, 'alt' => 101.0],
        ['lat' => -10.123600, 'lng' => -48.123600, 'vel' => 28.7, 'prec' => 12.0, 'alt' => 102.0],
        ['lat' => -10.123700, 'lng' => -48.123700, 'vel' => 32.1, 'prec' => 9.2, 'alt' => 103.0],
        ['lat' => -10.123800, 'lng' => -48.123800, 'vel' => 27.8, 'prec' => 11.5, 'alt' => 104.0],
        ['lat' => -10.123900, 'lng' => -48.123900, 'vel' => 29.3, 'prec' => 7.8, 'alt' => 105.0],
        ['lat' => -10.124000, 'lng' => -48.124000, 'vel' => 31.5, 'prec' => 10.2, 'alt' => 106.0],
        ['lat' => -10.124100, 'lng' => -48.124100, 'vel' => 26.9, 'prec' => 13.1, 'alt' => 107.0],
        ['lat' => -10.124200, 'lng' => -48.124200, 'vel' => 33.2, 'prec' => 8.9, 'alt' => 108.0],
        ['lat' => -10.124300, 'lng' => -48.124300, 'vel' => 28.4, 'prec' => 11.7, 'alt' => 109.0]
    ];
    
    $pontosInseridos = 0;
    $timestamp = strtotime($viagem['data_inicio']);
    
    foreach ($pontos as $i => $ponto) {
        $sql = "INSERT INTO rastreamento_tempo_real (
            tecnico_id, viagem_id, latitude, longitude, velocidade, 
            precisao, altitude, timestamp_gps, battery_level, is_online
        ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
        
        $stmt = $pdo->prepare($sql);
        $resultado = $stmt->execute([
            $viagem['tecnico_id'],
            262, // viagem_id
            $ponto['lat'],
            $ponto['lng'],
            $ponto['vel'],
            $ponto['prec'],
            $ponto['alt'],
            date('Y-m-d H:i:s', $timestamp + ($i * 30)), // 30 segundos entre pontos
            85, // battery_level
            1 // is_online
        ]);
        
        if ($resultado) {
            $pontosInseridos++;
            echo "<p>✅ Ponto " . ($i + 1) . " inserido: {$ponto['lat']}, {$ponto['lng']}</p>";
        } else {
            echo "<p>❌ Erro ao inserir ponto " . ($i + 1) . "</p>";
        }
    }
    
    echo "<div style='background: #e8f5e8; padding: 15px; border-radius: 5px; margin: 10px 0;'>";
    echo "<h3>✅ $pontosInseridos pontos GPS inseridos com sucesso!</h3>";
    echo "</div>";
    
    // 3. Calcular km_gps_final baseado nos pontos
    echo "<h2>📊 Calculando km_gps_final</h2>";
    
    $sql = "SELECT latitude, longitude, timestamp_gps FROM rastreamento_tempo_real WHERE viagem_id = 262 ORDER BY timestamp_gps ASC";
    $stmt = $pdo->query($sql);
    $pontosGPS = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    if (count($pontosGPS) > 1) {
        $distanciaTotal = 0;
        for ($i = 0; $i < count($pontosGPS) - 1; $i++) {
            $lat1 = $pontosGPS[$i]['latitude'];
            $lon1 = $pontosGPS[$i]['longitude'];
            $lat2 = $pontosGPS[$i + 1]['latitude'];
            $lon2 = $pontosGPS[$i + 1]['longitude'];
            
            $distancia = haversine($lat1, $lon1, $lat2, $lon2);
            $distanciaTotal += $distancia;
        }
        
        echo "<p><strong>Distância total calculada:</strong> " . number_format($distanciaTotal, 3) . " km</p>";
        echo "<p><strong>Baseado em:</strong> " . count($pontosGPS) . " pontos GPS</p>";
        
        // 4. Atualizar viagem com os dados calculados
        echo "<h2>🔧 Atualizando Viagem 262</h2>";
        
        $primeiroPonto = $pontosGPS[0];
        $ultimoPonto = end($pontosGPS);
        
        $sql = "UPDATE viagens SET 
            km_gps_final = ?,
            latitude_inicial = ?,
            longitude_inicial = ?,
            latitude_final = ?,
            longitude_final = ?
            WHERE id = 262";
        
        $stmt = $pdo->prepare($sql);
        $resultado = $stmt->execute([
            $distanciaTotal,
            $primeiroPonto['latitude'],
            $primeiroPonto['longitude'],
            $ultimoPonto['latitude'],
            $ultimoPonto['longitude']
        ]);
        
        if ($resultado) {
            echo "<div style='background: #e8f5e8; padding: 15px; border-radius: 5px;'>";
            echo "<h3>✅ VIAGEM 262 ATUALIZADA COM SUCESSO!</h3>";
            echo "<p><strong>km_gps_final:</strong> " . number_format($distanciaTotal, 3) . " km</p>";
            echo "<p><strong>latitude_inicial:</strong> {$primeiroPonto['latitude']}</p>";
            echo "<p><strong>longitude_inicial:</strong> {$primeiroPonto['longitude']}</p>";
            echo "<p><strong>latitude_final:</strong> {$ultimoPonto['latitude']}</p>";
            echo "<p><strong>longitude_final:</strong> {$ultimoPonto['longitude']}</p>";
            echo "</div>";
        } else {
            echo "<div style='background: #ffe6e6; padding: 15px; border-radius: 5px;'>";
            echo "<h3>❌ ERRO AO ATUALIZAR VIAGEM!</h3>";
            echo "</div>";
        }
        
    } else {
        echo "<p>❌ Pontos GPS insuficientes para calcular distância</p>";
    }
    
    // 5. Verificar dados finais
    echo "<h2>🔍 Verificando Dados Finais</h2>";
    
    $sql = "SELECT km_gps_final, latitude_inicial, longitude_inicial, latitude_final, longitude_final FROM viagens WHERE id = 262";
    $stmt = $pdo->query($sql);
    $dadosFinais = $stmt->fetch(PDO::FETCH_ASSOC);
    
    echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
    echo "<tr><th>Campo</th><th>Valor</th><th>Status</th></tr>";
    
    $campos = ['km_gps_final', 'latitude_inicial', 'longitude_inicial', 'latitude_final', 'longitude_final'];
    foreach ($campos as $campo) {
        $valor = $dadosFinais[$campo];
        $status = ($valor && $valor != '0' && $valor != '0.00000000') ? '✅ OK' : '❌ PROBLEMA';
        $cor = ($valor && $valor != '0' && $valor != '0.00000000') ? 'background-color: #e8f5e8;' : 'background-color: #ffe6e6;';
        
        echo "<tr style='$cor'>";
        echo "<td><strong>$campo</strong></td>";
        echo "<td>" . ($valor ?: 'NULL') . "</td>";
        echo "<td>$status</td>";
        echo "</tr>";
    }
    echo "</table>";
    
    // 6. Verificar pontos na rastreamento_tempo_real
    $sql = "SELECT COUNT(*) as total FROM rastreamento_tempo_real WHERE viagem_id = 262";
    $stmt = $pdo->query($sql);
    $totalPontos = $stmt->fetch(PDO::FETCH_ASSOC)['total'];
    
    echo "<div style='background: #e8f5e8; padding: 15px; border-radius: 5px; margin: 10px 0;'>";
    echo "<h3>📊 Resumo Final:</h3>";
    echo "<p><strong>Total de pontos GPS:</strong> $totalPontos</p>";
    echo "<p><strong>km_gps_final:</strong> " . number_format($dadosFinais['km_gps_final'] ?: 0, 3) . " km</p>";
    echo "<p><strong>Status:</strong> " . ($dadosFinais['km_gps_final'] ? '✅ CORRIGIDO' : '❌ AINDA COM PROBLEMA') . "</p>";
    echo "</div>";
    
} catch (Exception $e) {
    echo "<p>❌ Erro: " . $e->getMessage() . "</p>";
}

// Função Haversine para calcular distância
function haversine($lat1, $lon1, $lat2, $lon2) {
    $R = 6371.0; // Raio da Terra em km
    $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;
}
?>
