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

// Buscar últimos pontos
$sql = "SELECT 
            r.*,
            v.tecnico_id,
            v.cliente,
            TIMESTAMPDIFF(SECOND, r.timestamp, NOW()) as segundos_atraso
        FROM rastreamento_tempo_real r
        JOIN viagens v ON r.viagem_id = v.id
        WHERE r.timestamp > DATE_SUB(NOW(), INTERVAL 1 HOUR)
        ORDER BY r.timestamp DESC
        LIMIT 100";

$pontos = $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);

// Agrupar por viagem
$viagens = [];
foreach ($pontos as $ponto) {
    $viagemId = $ponto['viagem_id'];
    if (!isset($viagens[$viagemId])) {
        $viagens[$viagemId] = [
            'tecnico_id' => $ponto['tecnico_id'],
            'cliente' => $ponto['cliente'],
            'ultimo_ponto' => null,
            'pontos' => [],
            'status' => 'offline'
        ];
    }
    $viagens[$viagemId]['pontos'][] = $ponto;
    
    // Atualizar último ponto
    if (!$viagens[$viagemId]['ultimo_ponto'] || 
        $ponto['timestamp'] > $viagens[$viagemId]['ultimo_ponto']['timestamp']) {
        $viagens[$viagemId]['ultimo_ponto'] = $ponto;
        
        // Atualizar status
        if ($ponto['segundos_atraso'] < 10) {
            $viagens[$viagemId]['status'] = 'online';
        } else if ($ponto['segundos_atraso'] < 30) {
            $viagens[$viagemId]['status'] = 'atrasado';
        }
    }
}

?>
<!DOCTYPE html>
<html>
<head>
    <title>Monitor de Rastreamento</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <style>
        body { font-family: Arial; margin: 20px; }
        .card {
            border: 1px solid #ccc;
            padding: 15px;
            margin: 10px 0;
            border-radius: 5px;
        }
        .online { background: #d4edda; }
        .atrasado { background: #fff3cd; }
        .offline { background: #f8d7da; }
        #map { height: 400px; width: 100%; margin: 20px 0; }
        .status-icon {
            display: inline-block;
            width: 10px;
            height: 10px;
            border-radius: 50%;
            margin-right: 5px;
        }
        .status-online { background: #28a745; }
        .status-atrasado { background: #ffc107; }
        .status-offline { background: #dc3545; }
    </style>
</head>
<body>
    <h1>🚗 Monitor de Rastreamento</h1>
    
    <div class="card">
        <h3>Mapa</h3>
        <div id="map"></div>
    </div>
    
    <?php foreach ($viagens as $viagemId => $viagem): ?>
        <?php 
        $ultimoPonto = $viagem['ultimo_ponto'];
        $atraso = $ultimoPonto['segundos_atraso'];
        ?>
        <div class="card <?php echo $viagem['status']; ?>">
            <h3>
                <span class="status-icon status-<?php echo $viagem['status']; ?>"></span>
                Viagem #<?php echo $viagemId; ?>
            </h3>
            <p><strong>Técnico:</strong> <?php echo $viagem['tecnico_id']; ?></p>
            <p><strong>Cliente:</strong> <?php echo $viagem['cliente']; ?></p>
            <p><strong>Último ponto:</strong> 
                <?php echo date('H:i:s', strtotime($ultimoPonto['timestamp'])); ?>
                (<?php echo $atraso; ?> segundos atrás)
            </p>
            <p><strong>Localização:</strong> 
                <?php echo $ultimoPonto['latitude']; ?>, 
                <?php echo $ultimoPonto['longitude']; ?>
            </p>
            <p><strong>Velocidade:</strong> <?php echo $ultimoPonto['velocidade']; ?> km/h</p>
            <p><strong>Bateria:</strong> <?php echo $ultimoPonto['battery_level']; ?>%</p>
        </div>
    <?php endforeach; ?>

    <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>
    <script>
        // Inicializar mapa
        function initMap() {
            const map = new google.maps.Map(document.getElementById('map'), {
                zoom: 12,
                center: {lat: -15.7801, lng: -47.9292}, // Brasília
            });
            
            // Adicionar marcadores
            <?php foreach ($viagens as $viagemId => $viagem): ?>
            new google.maps.Marker({
                position: {
                    lat: <?php echo $viagem['ultimo_ponto']['latitude']; ?>,
                    lng: <?php echo $viagem['ultimo_ponto']['longitude']; ?>
                },
                map: map,
                title: 'Viagem #<?php echo $viagemId; ?> - <?php echo $viagem['tecnico_id']; ?>'
            });
            <?php endforeach; ?>
        }
        
        // Atualizar a cada 5 segundos
        setInterval(() => {
            window.location.reload();
        }, 5000);
        
        // Inicializar
        initMap();
    </script>
</body>
</html> 
