feat: aggiunto gruppo predefinito per la chiusura dei ticket al momento di consuntivare la giornata.

This commit is contained in:
2026-07-29 22:50:49 +02:00
parent 99c4f450f4
commit e2482159bc
2 changed files with 32 additions and 1 deletions
+10 -1
View File
@@ -34,11 +34,20 @@ async function fetchTicketsDetails(ticketIds) {
// GET /api/groups - List all groups with member counts // GET /api/groups - List all groups with member counts
router.get('/', (req, res) => { router.get('/', (req, res) => {
try { 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(` const groups = db.prepare(`
SELECT g.*, SELECT g.*,
(SELECT COUNT(*) FROM ticket_group_members WHERE group_id = g.id) AS member_count (SELECT COUNT(*) FROM ticket_group_members WHERE group_id = g.id) AS member_count
FROM ticket_groups g 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(); `).all();
res.json(groups); res.json(groups);
+22
View File
@@ -2186,6 +2186,28 @@ router.post('/auto-time', async (req, res) => {
[ticketId, articleId, remaining, operatorId] [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'); await client.query('COMMIT');
// Log activity // Log activity