<?php
/**
 * Script para simular dados GPS em tempo real
 * Para demonstração do sistema de rastreamento
 */

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

// Configurações do banco de dados
$configs = [
    ['host' => 'localhost', 'user' => 'pinheir3', 'password' => '080880Gelboy', 'database' => 'pinheir3_controle_frotasV1.1'],
    ['host' => 'localhost', 'user' => 'root', 'password' => '080880Gelboy', 'database' => 'pinheir3_controle_frotasV1.1'],
    ['host' => 'localhost', 'user' => 'pinheir3', 'password' => '', 'database' => 'pinheir3_controle_frotasV1.1'],
    ['host' => 'localhost', 'user' => 'root', 'password' => '', 'database' => 'controle_frotas']
];

$pdo = null;
$configUsada = null;

// Tentar conectar com diferentes configurações
foreach ($configs as $config) {
    try {
        $pdo = new PDO(
            "mysql:host={$config['host']};dbname={$config['database']};charset=utf8mb4",
            $config['user'],
            $config['password'],
            [
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
                PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4"
            ]
        );
        $configUsada = $config;
        break;
    } catch (PDOException $e) {
        continue;
    }
}

if (!$pdo) {
    die('<h3>❌ Erro: Não foi possível conectar com o banco de dados</h3>');
}

echo "<h2>🛰️ Simulador de GPS em Tempo Real</h2>";
echo "<p><strong>Banco conectado:</strong> {$configUsada['database']} (usuário: {$configUsada['user']})</p>";

try {
    $acao = $_GET['acao'] ?? 'criar_viagem_teste';
    
    switch ($acao) {
        case 'criar_viagem_teste':
            echo "<h3>➕ Criando viagem de teste...</h3>";
            
            // Criar uma nova viagem de teste
            $sql = "
                INSERT INTO viagens (
                    tecnico_id, veiculo_id, cliente, motivo, km_inicial, 
                    data_inicio, latitude_inicial, longitude_inicial
                ) VALUES (
                    :tecnico_id, :veiculo_id, :cliente, :motivo, :km_inicial,
                    NOW(), :latitude_inicial, :longitude_inicial
                )
            ";
            
            $stmt = $pdo->prepare($sql);
            $stmt->execute([
                'tecnico_id' => '1',
                'veiculo_id' => 1,
                'cliente' => 'Cliente Teste GPS - ' . date('H:i:s'),
                'motivo' => 'Simulação de rastreamento em tempo real',
                'km_inicial' => 100,
                'latitude_inicial' => -10.9472, // Aracaju, SE
                'longitude_inicial' => -37.0731
            ]);
            
            $viagemId = $pdo->lastInsertId();
            echo "<p>✅ <strong>Viagem criada:</strong> ID #{$viagemId}</p>";
            
            // Adicionar primeiro ponto GPS na tabela trajeto_pontos
            $sql = "
                INSERT INTO trajeto_pontos (
                    viagem_id, latitude, longitude, timestamp_ponto, velocidade, precisao
                ) VALUES (
                    :viagem_id, :latitude, :longitude, NOW(), :velocidade, :precisao
                )
            ";
            
            $stmt = $pdo->prepare($sql);
            $stmt->execute([
                'viagem_id' => $viagemId,
                'latitude' => -10.9472,
                'longitude' => -37.0731,
                'velocidade' => 0,
                'precisao' => 5.0
            ]);
            
            echo "<p>✅ <strong>Ponto GPS inicial adicionado</strong></p>";
            echo "<p><a href='?acao=simular_movimento&viagem_id={$viagemId}' class='btn'>🚗 Simular Movimento</a></p>";
            echo "<p><a href='admin/rastreamento-tempo-real.html' target='_blank' class='btn'>🗺️ Ver no Rastreamento</a></p>";
            break;
            
        case 'simular_movimento':
            $viagemId = $_GET['viagem_id'] ?? null;
            if (!$viagemId) {
                echo "<p>❌ ID da viagem é obrigatório</p>";
                break;
            }
            
            echo "<h3>🚗 Simulando movimento da viagem #{$viagemId}...</h3>";
            
            // Buscar último ponto GPS
            $sql = "
                SELECT latitude, longitude, velocidade 
                FROM trajeto_pontos 
                WHERE viagem_id = :viagem_id 
                ORDER BY timestamp_ponto DESC 
                LIMIT 1
            ";
            
            $stmt = $pdo->prepare($sql);
            $stmt->execute(['viagem_id' => $viagemId]);
            $ultimoPonto = $stmt->fetch();
            
            if (!$ultimoPonto) {
                echo "<p>❌ Nenhum ponto GPS encontrado para esta viagem</p>";
                break;
            }
            
            // Simular movimento: pequenos incrementos nas coordenadas
            $novaLatitude = $ultimoPonto['latitude'] + (rand(-50, 50) / 100000); // ±0.0005 graus
            $novaLongitude = $ultimoPonto['longitude'] + (rand(-50, 50) / 100000);
            $novaVelocidade = rand(0, 60); // 0-60 km/h
            
            // Adicionar novo ponto GPS
            $sql = "
                INSERT INTO trajeto_pontos (
                    viagem_id, latitude, longitude, timestamp_ponto, velocidade, precisao
                ) VALUES (
                    :viagem_id, :latitude, :longitude, NOW(), :velocidade, :precisao
                )
            ";
            
            $stmt = $pdo->prepare($sql);
            $stmt->execute([
                'viagem_id' => $viagemId,
                'latitude' => $novaLatitude,
                'longitude' => $novaLongitude,
                'velocidade' => $novaVelocidade,
                'precisao' => rand(3, 8) + (rand(0, 99) / 100) // 3.00-8.99 metros
            ]);
            
            echo "<p>✅ <strong>Novo ponto GPS adicionado:</strong></p>";
            echo "<ul>";
            echo "<li><strong>Latitude:</strong> {$novaLatitude}</li>";
            echo "<li><strong>Longitude:</strong> {$novaLongitude}</li>";
            echo "<li><strong>Velocidade:</strong> {$novaVelocidade} km/h</li>";
            echo "</ul>";
            
            // Contar total de pontos
            $sql = "SELECT COUNT(*) as total FROM trajeto_pontos WHERE viagem_id = :viagem_id";
            $stmt = $pdo->prepare($sql);
            $stmt->execute(['viagem_id' => $viagemId]);
            $total = $stmt->fetch()['total'];
            
            echo "<p><strong>Total de pontos GPS:</strong> {$total}</p>";
            echo "<p><a href='?acao=simular_movimento&viagem_id={$viagemId}' class='btn'>🔄 Simular Mais Movimento</a></p>";
            echo "<p><a href='admin/rastreamento-tempo-real.html' target='_blank' class='btn'>🗺️ Ver no Rastreamento</a></p>";
            
            // Auto-refresh para simulação contínua
            if (isset($_GET['auto'])) {
                echo "<script>setTimeout(() => window.location.reload(), 3000);</script>";
                echo "<p><em>🔄 Página atualizará automaticamente em 3 segundos...</em></p>";
            } else {
                echo "<p><a href='?acao=simular_movimento&viagem_id={$viagemId}&auto=1' class='btn'>🔄 Modo Automático</a></p>";
            }
            break;
            
        case 'listar_viagens_ativas':
            echo "<h3>📋 Viagens Ativas</h3>";
            
            $sql = "
                SELECT 
                    v.id, v.cliente, v.data_inicio,
                    COUNT(tp.id) as total_pontos_gps
                FROM viagens v
                LEFT JOIN trajeto_pontos tp ON v.id = tp.viagem_id
                WHERE v.data_fim IS NULL
                GROUP BY v.id
                ORDER BY v.data_inicio DESC
            ";
            
            $stmt = $pdo->prepare($sql);
            $stmt->execute();
            $viagens = $stmt->fetchAll();
            
            if (empty($viagens)) {
                echo "<p>ℹ️ Nenhuma viagem ativa encontrada</p>";
                echo "<p><a href='?acao=criar_viagem_teste' class='btn'>➕ Criar Viagem de Teste</a></p>";
            } else {
                echo "<table border='1' cellpadding='10' style='border-collapse: collapse; width: 100%;'>";
                echo "<tr style='background: #f0f0f0;'>";
                echo "<th>ID</th><th>Cliente</th><th>Início</th><th>Pontos GPS</th><th>Ações</th>";
                echo "</tr>";
                
                foreach ($viagens as $viagem) {
                    echo "<tr>";
                    echo "<td>{$viagem['id']}</td>";
                    echo "<td>{$viagem['cliente']}</td>";
                    echo "<td>" . date('d/m/Y H:i', strtotime($viagem['data_inicio'])) . "</td>";
                    echo "<td>{$viagem['total_pontos_gps']}</td>";
                    echo "<td>";
                    echo "<a href='?acao=simular_movimento&viagem_id={$viagem['id']}' style='margin-right: 10px;'>🚗 Simular</a>";
                    echo "<a href='?acao=finalizar_viagem&viagem_id={$viagem['id']}'>🏁 Finalizar</a>";
                    echo "</td>";
                    echo "</tr>";
                }
                echo "</table>";
            }
            
            echo "<br><p><a href='?acao=criar_viagem_teste' class='btn'>➕ Nova Viagem de Teste</a></p>";
            echo "<p><a href='admin/rastreamento-tempo-real.html' target='_blank' class='btn'>🗺️ Ver Rastreamento</a></p>";
            break;
            
        case 'finalizar_viagem':
            $viagemId = $_GET['viagem_id'] ?? null;
            if (!$viagemId) {
                echo "<p>❌ ID da viagem é obrigatório</p>";
                break;
            }
            
            // Finalizar viagem
            $sql = "
                UPDATE viagens 
                SET data_fim = NOW(), km_final = km_inicial + :km_percorrido
                WHERE id = :viagem_id AND data_fim IS NULL
            ";
            
            $stmt = $pdo->prepare($sql);
            $stmt->execute([
                'viagem_id' => $viagemId,
                'km_percorrido' => rand(5, 50) // Simular KM percorrido
            ]);
            
            if ($stmt->rowCount() > 0) {
                echo "<p>✅ <strong>Viagem #{$viagemId} finalizada com sucesso!</strong></p>";
            } else {
                echo "<p>⚠️ Viagem não encontrada ou já finalizada</p>";
            }
            
            echo "<p><a href='?acao=listar_viagens_ativas' class='btn'>📋 Ver Viagens Ativas</a></p>";
            break;
            
        default:
            echo "<p>❌ Ação não reconhecida</p>";
    }
    
} catch (Exception $e) {
    echo "<h3>❌ Erro:</h3>";
    echo "<p>{$e->getMessage()}</p>";
    echo "<p><strong>Linha:</strong> {$e->getLine()}</p>";
    echo "<p><strong>Arquivo:</strong> " . basename($e->getFile()) . "</p>";
}

echo "<hr>";
echo "<h3>🎮 Menu de Opções:</h3>";
echo "<ul>";
echo "<li><a href='?acao=criar_viagem_teste'>➕ Criar Nova Viagem de Teste</a></li>";
echo "<li><a href='?acao=listar_viagens_ativas'>📋 Listar Viagens Ativas</a></li>";
echo "<li><a href='admin/rastreamento-tempo-real.html' target='_blank'>🗺️ Ver Rastreamento em Tempo Real</a></li>";
echo "<li><a href='admin/dashboard.html' target='_blank'>📊 Dashboard Principal</a></li>";
echo "</ul>";

echo "<style>
.btn {
    display: inline-block;
    padding: 8px 16px;
    background: #007bff;
    color: white;
    text-decoration: none;
    border-radius: 4px;
    margin: 5px;
}
.btn:hover {
    background: #0056b3;
    color: white;
}
</style>";
?> 
