<?php
// SCRIPT PARA CRIAR TABELAS DE RASTREAMENTO EM TEMPO REAL

try {
    $pdo = new PDO('mysql:host=localhost;dbname=controlefrota', 'root', '');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    echo "🗃️ CRIANDO TABELAS DE RASTREAMENTO...\n\n";
    
    // 1. TABELA RASTREAMENTO_TEMPO_REAL
    $sql1 = "CREATE TABLE IF NOT EXISTS rastreamento_tempo_real (
        id BIGINT AUTO_INCREMENT PRIMARY KEY,
        tecnico_id VARCHAR(100) NOT NULL,
        viagem_id BIGINT NULL,
        latitude DECIMAL(10, 8) NOT NULL,
        longitude DECIMAL(11, 8) NOT NULL,
        velocidade DECIMAL(5, 2) DEFAULT 0,
        precisao DECIMAL(8, 2) DEFAULT 0,
        altitude DECIMAL(8, 2) DEFAULT 0,
        timestamp_gps DATETIME DEFAULT CURRENT_TIMESTAMP,
        battery_level INT DEFAULT NULL,
        is_online BOOLEAN DEFAULT TRUE,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        INDEX idx_tecnico (tecnico_id),
        INDEX idx_viagem (viagem_id),
        INDEX idx_timestamp (timestamp_gps),
        INDEX idx_online (is_online)
    )";
    
    $pdo->exec($sql1);
    echo "✅ Tabela rastreamento_tempo_real criada\n";
    
    // 2. TABELA STATUS_TECNICOS
    $sql2 = "CREATE TABLE IF NOT EXISTS status_tecnicos (
        tecnico_id VARCHAR(100) PRIMARY KEY,
        ultimo_ping DATETIME DEFAULT CURRENT_TIMESTAMP,
        latitude_atual DECIMAL(10, 8),
        longitude_atual DECIMAL(11, 8),
        velocidade_atual DECIMAL(5, 2) DEFAULT 0,
        viagem_ativa BIGINT NULL,
        status_conexao ENUM('online', 'offline', 'ausente') DEFAULT 'online',
        battery_level INT DEFAULT NULL,
        app_version VARCHAR(20) DEFAULT NULL,
        updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
        INDEX idx_ping (ultimo_ping),
        INDEX idx_status (status_conexao)
    )";
    
    $pdo->exec($sql2);
    echo "✅ Tabela status_tecnicos criada\n";
    
    // 3. INSERIR STATUS INICIAL DOS TÉCNICOS
    $sql3 = "INSERT INTO status_tecnicos (tecnico_id, status_conexao) 
             SELECT DISTINCT nome, 'offline' 
             FROM motoristas 
             WHERE status = 'ativo'
             ON DUPLICATE KEY UPDATE 
                tecnico_id = tecnico_id";
    
    $pdo->exec($sql3);
    echo "✅ Status inicial dos técnicos configurado\n";
    
    // 4. VERIFICAR TABELAS CRIADAS
    echo "\n📊 VERIFICANDO TABELAS...\n";
    
    $stmt = $pdo->query("SHOW TABLES");
    $tabelas = $stmt->fetchAll(PDO::FETCH_COLUMN);
    $tabelasRastreamento = array_filter($tabelas, function($t) {
        return strpos($t, 'rastreamento') !== false || strpos($t, 'status') !== false;
    });
    
    foreach ($tabelasRastreamento as $tabela) {
        echo "  📋 $tabela\n";
        
        // Mostrar estrutura
        $stmt = $pdo->query("DESCRIBE $tabela");
        $campos = $stmt->fetchAll();
        foreach ($campos as $campo) {
            echo "     - {$campo['Field']} ({$campo['Type']})\n";
        }
        echo "\n";
    }
    
    // 5. TESTAR INSERÇÃO DE EXEMPLO
    echo "🧪 TESTANDO INSERÇÃO...\n";
    
    $sqlTeste = "INSERT INTO rastreamento_tempo_real 
                 (tecnico_id, latitude, longitude, velocidade, precisao) 
                 VALUES ('joao.silva', -15.7942, -47.8825, 45.5, 3.2)";
    
    $pdo->exec($sqlTeste);
    $testId = $pdo->lastInsertId();
    echo "✅ Ponto de teste inserido com ID: $testId\n";
    
    // Consultar o teste
    $stmt = $pdo->query("SELECT * FROM rastreamento_tempo_real WHERE id = $testId");
    $teste = $stmt->fetch();
    
    echo "📍 Dados do teste:\n";
    echo "   - Técnico: {$teste['tecnico_id']}\n";
    echo "   - Coordenadas: {$teste['latitude']}, {$teste['longitude']}\n";
    echo "   - Velocidade: {$teste['velocidade']} km/h\n";
    echo "   - Timestamp: {$teste['timestamp_gps']}\n";
    
    echo "\n🎯 SISTEMA DE RASTREAMENTO PRONTO!\n";
    echo "\n📋 PRÓXIMOS PASSOS:\n";
    echo "1. Modificar app Android conforme 'modificacoes-app-android-rastreamento.md'\n";
    echo "2. Abrir dashboard: backend-php/admin/rastreamento-tempo-real.html\n";
    echo "3. Testar enviando dados via POST para: api-simples-v2.php/rastreamento\n";
    
} catch (Exception $e) {
    echo "❌ Erro: " . $e->getMessage() . "\n";
    exit(1);
}
?> 
