From e2482159bc39c396d7a8ea659d708beea81ced75 Mon Sep 17 00:00:00 2001 From: Gabriele Cimaschi Date: Wed, 29 Jul 2026 22:50:49 +0200 Subject: [PATCH] feat: aggiunto gruppo predefinito per la chiusura dei ticket al momento di consuntivare la giornata. --- routes/groups.js | 11 ++++++++++- routes/tickets.js | 22 ++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/routes/groups.js b/routes/groups.js index 65c58c2..41b72a2 100644 --- a/routes/groups.js +++ b/routes/groups.js @@ -34,11 +34,20 @@ async function fetchTicketsDetails(ticketIds) { // GET /api/groups - List all groups with member counts router.get('/', (req, res) => { try { + // Ensure default group exists + const defaultGroup = db.prepare('SELECT id FROM ticket_groups WHERE UPPER(nome) = ?').get('CHIUDI A FINE GIORNATA'); + if (!defaultGroup) { + db.prepare(` + INSERT INTO ticket_groups (nome, descrizione) + VALUES (?, ?) + `).run('CHIUDI A FINE GIORNATA', 'I ticket in questo gruppo verranno chiusi automaticamente alla consuntivazione di fine giornata'); + } + const groups = db.prepare(` SELECT g.*, (SELECT COUNT(*) FROM ticket_group_members WHERE group_id = g.id) AS member_count FROM ticket_groups g - ORDER BY g.nome ASC + ORDER BY CASE WHEN UPPER(g.nome) = 'CHIUDI A FINE GIORNATA' THEN 1 ELSE 0 END ASC, g.nome ASC `).all(); res.json(groups); diff --git a/routes/tickets.js b/routes/tickets.js index 62d793f..5eb6b18 100644 --- a/routes/tickets.js +++ b/routes/tickets.js @@ -2186,6 +2186,28 @@ router.post('/auto-time', async (req, res) => { [ticketId, articleId, remaining, operatorId] ); + // 6. Close tickets in default group 'CHIUDI A FINE GIORNATA' + try { + const closeGroup = db.prepare('SELECT id FROM ticket_groups WHERE UPPER(nome) = ?').get('CHIUDI A FINE GIORNATA'); + if (closeGroup) { + const groupMembers = db.prepare('SELECT ticket_id FROM ticket_group_members WHERE group_id = ?').all(closeGroup.id); + if (groupMembers.length > 0) { + const groupTicketIds = groupMembers.map(m => m.ticket_id); + const idPlaceholders = groupTicketIds.map((_, i) => `$${i + 1}`).join(', '); + + // Update ticket state to closed in OTRS DB + await client.query( + `UPDATE ticket SET ticket_state_id = $${groupTicketIds.length + 1}, change_time = NOW(), change_by = $${groupTicketIds.length + 2} WHERE id IN (${idPlaceholders})`, + [...groupTicketIds, stateId, operatorId] + ); + + console.log(`[Auto-Time] Closed ${groupTicketIds.length} tickets from group 'CHIUDI A FINE GIORNATA'`); + } + } + } catch (grpCloseErr) { + console.error('[Auto-Time] Error closing tickets from CHIUDI A FINE GIORNATA group:', grpCloseErr); + } + await client.query('COMMIT'); // Log activity