const express = require('express'); const router = express.Router(); const { query } = require('../config/database'); const { authenticateToken } = require('../middleware/auth'); // REGISTRAR ATIVIDADE (sem auth - usado pelo client) router.post('/', async (req, res) => { try { const { device_id, window_title, application_name, idle_time_seconds, urls } = req.body; if (!device_id) { return res.status(400).json({ error: 'device_id é obrigatório' }); } const deviceCheck = await query( 'SELECT id, company_id FROM devices WHERE device_id = $1', [device_id] ); if (deviceCheck.rows.length === 0) { return res.status(404).json({ error: 'Dispositivo não encontrado' }); } const device = deviceCheck.rows[0]; const result = await query( `INSERT INTO activities (device_id, company_id, window_title, application_name, idle_time_seconds, timestamp) VALUES ($1, $2, $3, $4, $5, NOW()) RETURNING *`, [device.id, device.company_id, window_title, application_name, idle_time_seconds || 0] ); // Se tem URLs, salvar também if (urls && Array.isArray(urls) && urls.length > 0) { for (const urlData of urls) { await query( `INSERT INTO browsing_history (device_id, url, title, browser, visited_at) VALUES ($1, $2, $3, $4, NOW())`, [device_id, urlData.url, urlData.title, urlData.browser] ); } console.log(`📊 ${urls.length} URLs registradas para ${device_id}`); } res.status(201).json({ success: true, activity: result.rows[0] }); } catch (error) { console.error('Erro ao registrar atividade:', error); res.status(500).json({ error: 'Erro ao registrar atividade' }); } }); // LISTAR ATIVIDADES router.get('/', authenticateToken, async (req, res) => { try { const company_id = req.user.company_id; const { device_id, limit = 100 } = req.query; let queryText = `SELECT a.*, d.device_name FROM activities a JOIN devices d ON a.device_id = d.id WHERE a.company_id = $1`; const params = [company_id]; if (device_id) { params.push(device_id); queryText += ` AND a.device_id = $${params.length}`; } queryText += ` ORDER BY a.timestamp DESC LIMIT $${params.length + 1}`; params.push(limit); const result = await query(queryText, params); res.json({ success: true, activities: result.rows }); } catch (error) { console.error('Erro ao listar atividades:', error); res.status(500).json({ error: 'Erro ao listar atividades' }); } }); module.exports = router;