<?php
/**
 * Teste do Sistema de Rastreamento a cada 10 segundos
 * Simula o que o app Android faz quando inicia uma viagem
 */

header('Content-Type: text/html; charset=utf-8');
$baseUrl = "https://sistemas.pinheiroempresas.com.br/controlefrota/backend-php";

echo "<!DOCTYPE html>
<html>
<head>
    <title>🚗 Teste Rastreamento 10s</title>
    <style>
        body { font-family: Arial; margin: 20px; }
        .card { border: 1px solid #ddd; padding: 15px; margin: 10px 0; border-radius: 8px; }
        .success { background: #d4edda; color: #155724; }
        .error { background: #f8d7da; color: #721c24; }
        .info { background: #cce7ff; color: #004085; }
        .log { background: #f8f9fa; padding: 10px; max-height: 400px; overflow-y: auto; }
        button { padding: 10px 20px; margin: 5px; border: none; border-radius: 4px; cursor: pointer; }
        .start { background: #28a745; color: white; }
        .stop { background: #dc3545; color: white; }
    </style>
</head>
<body>";

echo "<h1>🚗 Teste de Rastreamento GPS - Intervalos de 10s</h1>";

if (isset($_GET['acao'])) {
    switch ($_GET['acao']) {
        case 'criar-viagem-teste':
            criarViagemTeste();
            break;
        case 'iniciar-rastreamento':
            iniciarRastreamento();
            break;
        case 'parar-rastreamento':
            pararRastreamento();
            break;
        case 'verificar-viagens':
            verificarViagensAtivas();
            break;
    }
}

function criarViagemTeste() {
    global $baseUrl;
    
    echo "<div class='card info'><h3>🆕 Criando Viagem de Teste</h3>";
    
    // Dados da viagem de teste
    $dadosViagem = [
        'id' => time(), // ID único baseado no timestamp
        'tecnicoId' => '1',
        'veiculoId' => 1,
        'cliente' => 'Cliente Teste GPS',
        'motivo' => 'Teste de rastreamento a cada 10s',
        'kmInicial' => 12000,
        'dataInicio' => date('Y-m-d H:i:s'),
        'latitudeInicial' => -23.550520,
        'longitudeInicial' => -46.633308, // São Paulo centro
        'enderecoInicial' => 'São Paulo, SP - Centro'
    ];
    
    // Enviar para o servidor
    $resultado = enviarDados($baseUrl . '/api-simples-v2.php?acao=viagens', $dadosViagem);
    
    if ($resultado['sucesso']) {
        echo "<p>✅ Viagem criada com sucesso!</p>";
        echo "<p><strong>ID da Viagem:</strong> {$dadosViagem['id']}</p>";
        echo "<p><strong>Cliente:</strong> {$dadosViagem['cliente']}</p>";
        echo "<p><strong>Localização inicial:</strong> {$dadosViagem['latitudeInicial']}, {$dadosViagem['longitudeInicial']}</p>";
        
        // Salvar ID da viagem na sessão para usar no rastreamento
        file_put_contents('viagem_teste.json', json_encode($dadosViagem));
        
        echo "<a href='?acao=iniciar-rastreamento'><button class='start'>📡 Iniciar Rastreamento (10s)</button></a>";
    } else {
        echo "<p class='error'>❌ Erro ao criar viagem: {$resultado['erro']}</p>";
    }
    
    echo "</div>";
}

function iniciarRastreamento() {
    echo "<div class='card info'><h3>📡 Rastreamento Ativo (a cada 10 segundos)</h3>";
    
    // Verificar se existe viagem de teste
    if (!file_exists('viagem_teste.json')) {
        echo "<p class='error'>❌ Nenhuma viagem de teste encontrada. <a href='?acao=criar-viagem-teste'>Criar uma</a></p>";
        echo "</div>";
        return;
    }
    
    $viagem = json_decode(file_get_contents('viagem_teste.json'), true);
    $viagemId = $viagem['id'];
    
    echo "<p><strong>Viagem ID:</strong> $viagemId</p>";
    echo "<p><strong>Cliente:</strong> {$viagem['cliente']}</p>";
    echo "<p>🔄 Enviando localização a cada 10 segundos...</p>";
    echo "<a href='?acao=parar-rastreamento'><button class='stop'>⏹ Parar Rastreamento</button></a>";
    echo "<a href='?acao=verificar-viagens'><button>👁 Ver Viagens Ativas</button></a>";
    
    echo "<div id='log' class='log'>";
    echo "<p><strong>📋 Log de Envios:</strong></p>";
    echo "</div>";
    
    // JavaScript para simular envios a cada 10 segundos
    echo "
    <script>
    let contadorEnvios = 0;
    let intervaloId;
    let latitudeInicial = {$viagem['latitudeInicial']};
    let longitudeInicial = {$viagem['longitudeInicial']};
    
    function enviarLocalizacao() {
        contadorEnvios++;
        
        // Simular movimento (pequenas variações nas coordenadas)
        let variacao = 0.001; // ~100 metros de variação
        let novaLat = latitudeInicial + (Math.random() - 0.5) * variacao;
        let novaLng = longitudeInicial + (Math.random() - 0.5) * variacao;
        let velocidade = Math.random() * 60; // 0-60 km/h
        
        let dados = {
            viagem_id: $viagemId,
            latitude: novaLat,
            longitude: novaLng,
            velocidade: velocidade,
            precisao: Math.random() * 10 + 3, // 3-13 metros
            altitude: Math.random() * 20 + 750, // 750-770m
            motorista_nome: 'Administrador',
            timestamp: new Date().toISOString()
        };
        
        let agora = new Date().toLocaleTimeString();
        
        fetch('{$GLOBALS['baseUrl']}/api-simples-v2.php?acao=atualizar-posicao', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json'
            },
            body: JSON.stringify(dados)
        })
        .then(response => response.json())
        .then(data => {
            let log = document.getElementById('log');
            if (data.sucesso) {
                log.innerHTML += '<p>✅ [' + agora + '] Envio #' + contadorEnvios + ': Lat ' + novaLat.toFixed(6) + ', Lng ' + novaLng.toFixed(6) + ', Vel ' + velocidade.toFixed(1) + ' km/h, Motorista: ' + (data.motorista_nome || 'Administrador') + '</p>';
            } else {
                log.innerHTML += '<p style=\"color: red;\">❌ [' + agora + '] Erro no envio #' + contadorEnvios + ': ' + (data.mensagem || 'Erro desconhecido') + '</p>';
            }
            log.scrollTop = log.scrollHeight;
        })
        .catch(error => {
            let log = document.getElementById('log');
            log.innerHTML += '<p style=\"color: red;\">❌ [' + agora + '] Erro de rede no envio #' + contadorEnvios + ': ' + error + '</p>';
            log.scrollTop = log.scrollHeight;
        });
    }
    
    // Iniciar envios a cada 10 segundos
    intervaloId = setInterval(enviarLocalizacao, 10000);
    
    // Primeiro envio imediato
    enviarLocalizacao();
    
    // Parar quando a página for fechada
    window.addEventListener('beforeunload', function() {
        clearInterval(intervaloId);
    });
    </script>";
    
    echo "</div>";
}

function pararRastreamento() {
    echo "<div class='card error'><h3>⏹ Rastreamento Parado</h3>";
    echo "<p>O rastreamento foi interrompido.</p>";
    echo "<a href='?acao=iniciar-rastreamento'><button class='start'>📡 Reiniciar Rastreamento</button></a>";
    echo "<a href='?acao=verificar-viagens'><button>👁 Ver Viagens Ativas</button></a>";
    echo "</div>";
}

function verificarViagensAtivas() {
    global $baseUrl;
    
    echo "<div class='card info'><h3>👁 Viagens Ativas com Rastreamento</h3>";
    
    $resultado = enviarDados($baseUrl . '/api-rastreamento-debug.php', [], 'GET');
    
    if ($resultado['sucesso']) {
        $viagens = $resultado['dados'];
        
        if (empty($viagens)) {
            echo "<p>📭 Nenhuma viagem ativa encontrada.</p>";
        } else {
            echo "<p>🚗 <strong>" . count($viagens) . "</strong> viagem(ns) ativa(s) encontrada(s):</p>";
            
            foreach ($viagens as $viagem) {
                echo "<div style='border-left: 4px solid #007bff; padding-left: 10px; margin: 10px 0;'>";
                echo "<strong>ID:</strong> {$viagem['id']}<br>";
                echo "<strong>Cliente:</strong> {$viagem['cliente']}<br>";
                echo "<strong>Motorista:</strong> {$viagem['motorista_nome']}<br>";
                echo "<strong>Duração:</strong> {$viagem['duracao_minutos']} minutos<br>";
                echo "<strong>Total de pontos GPS:</strong> {$viagem['total_pontos']}<br>";
                
                if (isset($viagem['posicao_atual'])) {
                    echo "<strong>Posição atual:</strong> {$viagem['posicao_atual']['latitude']}, {$viagem['posicao_atual']['longitude']}<br>";
                    echo "<strong>Última atualização:</strong> {$viagem['posicao_atual']['timestamp']}<br>";
                }
                
                echo "</div>";
            }
        }
    } else {
        echo "<p class='error'>❌ Erro ao buscar viagens: {$resultado['erro']}</p>";
    }
    
    echo "</div>";
}

function enviarDados($url, $dados = [], $metodo = 'POST') {
    $ch = curl_init();
    
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    curl_setopt($ch, CURLOPT_USERAGENT, 'TestRastreamento/1.0');
    
    if ($metodo === 'POST' && !empty($dados)) {
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($dados));
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            'Content-Type: application/json'
        ]);
    }
    
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    
    if ($httpCode === 200) {
        $decoded = json_decode($response, true);
        return $decoded ?: ['sucesso' => false, 'erro' => 'Resposta inválida'];
    } else {
        return ['sucesso' => false, 'erro' => "HTTP $httpCode: $response"];
    }
}

// Menu principal
echo "<div class='card'>";
echo "<h3>🎮 Menu de Testes</h3>";
echo "<a href='?acao=criar-viagem-teste'><button class='start'>🆕 Criar Viagem de Teste</button></a>";
echo "<a href='?acao=iniciar-rastreamento'><button class='start'>📡 Iniciar Rastreamento (10s)</button></a>";
echo "<a href='?acao=verificar-viagens'><button>👁 Ver Viagens Ativas</button></a>";
echo "</div>";

echo "<div class='card info'>";
echo "<h4>ℹ️ Como Funciona</h4>";
echo "<ol>";
echo "<li><strong>Criar Viagem:</strong> Simula o que acontece quando o motorista clica 'Iniciar Viagem' no app</li>";
echo "<li><strong>Rastreamento:</strong> Simula o LocationForegroundService enviando GPS a cada 10 segundos</li>";
echo "<li><strong>Verificar:</strong> Mostra viagens ativas e quantos pontos GPS foram recebidos</li>";
echo "</ol>";
echo "<p><strong>⚡ Teste em tempo real:</strong> O rastreamento simula movimento real com pequenas variações de coordenadas.</p>";
echo "</div>";

echo "</body></html>";
?> 
