Merge pull request #357 from R0m1k3/1.1

1.1
This commit is contained in:
LogiFlow authored and GitHub committed 2025-09-07 09:38:03 +02:00
commit 18316c5965
2 files changed
+38 -10

No files matched your search

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

+38 -10
View File
@@ -2276,37 +2276,65 @@ export class DatabaseStorage implements IStorage {
resolvedTickets: number; resolvedTickets: number;
criticalTickets: number; criticalTickets: number;
}> { }> {
let query = db.select({ count: sql<number>`count(*)`, status: savTickets.status, priority: savTickets.priority }) let baseQuery = db.select().from(savTickets);
.from(savTickets);
if (groupIds?.length) { if (groupIds?.length) {
query = query.where(inArray(savTickets.groupId, groupIds)); baseQuery = baseQuery.where(inArray(savTickets.groupId, groupIds));
} }
const results = await query.groupBy(savTickets.status, savTickets.priority); // Get status counts
const statusResults = await db
.select({
count: sql<number>`count(*)`,
status: savTickets.status
})
.from(savTickets)
.where(groupIds?.length ? inArray(savTickets.groupId, groupIds) : undefined)
.groupBy(savTickets.status);
// Get priority counts
const priorityResults = await db
.select({
count: sql<number>`count(*)`,
priority: savTickets.priority
})
.from(savTickets)
.where(groupIds?.length ? inArray(savTickets.groupId, groupIds) : undefined)
.groupBy(savTickets.priority);
// Get total count
const totalResult = await db
.select({ count: sql<number>`count(*)` })
.from(savTickets)
.where(groupIds?.length ? inArray(savTickets.groupId, groupIds) : undefined);
const stats = { const stats = {
totalTickets: 0, totalTickets: Number(totalResult[0]?.count || 0),
newTickets: 0, newTickets: 0,
inProgressTickets: 0, inProgressTickets: 0,
resolvedTickets: 0, resolvedTickets: 0,
criticalTickets: 0, criticalTickets: 0,
}; };
results.forEach(result => { // Process status results
const count = result.count || 0; statusResults.forEach(result => {
stats.totalTickets += count; const count = Number(result.count || 0);
if (result.status === 'nouveau') { if (result.status === 'nouveau') {
stats.newTickets += count; stats.newTickets = count;
} else if (['en_cours', 'attente_pieces', 'attente_echange'].includes(result.status)) { } else if (['en_cours', 'attente_pieces', 'attente_echange'].includes(result.status)) {
stats.inProgressTickets += count; stats.inProgressTickets += count;
} else if (['resolu', 'ferme'].includes(result.status)) { } else if (['resolu', 'ferme'].includes(result.status)) {
stats.resolvedTickets += count; stats.resolvedTickets += count;
} }
});
// Process priority results for critical tickets
priorityResults.forEach(result => {
const count = Number(result.count || 0);
if (result.priority === 'critique') { if (result.priority === 'critique') {
stats.criticalTickets += count; stats.criticalTickets = count;
} }
}); });