feat: aggiunto gruppo predefinito per la chiusura dei ticket al momento di consuntivare la giornata.
This commit is contained in:
+10
-1
@@ -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);
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user