From 1807dca57da6ece1344111d44b8b15b13a675ce2 Mon Sep 17 00:00:00 2001 From: Marc Rejohn Castillano Date: Wed, 25 Feb 2026 21:09:10 +0800 Subject: [PATCH] Ordering of IT Staff in dashboard based on most active --- lib/screens/dashboard/dashboard_screen.dart | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/screens/dashboard/dashboard_screen.dart b/lib/screens/dashboard/dashboard_screen.dart index 83d9502f..fc91f5f3 100644 --- a/lib/screens/dashboard/dashboard_screen.dart +++ b/lib/screens/dashboard/dashboard_screen.dart @@ -243,7 +243,7 @@ final dashboardMetricsProvider = Provider>((ref) { const triageWindow = Duration(minutes: 1); final triageCutoff = now.subtract(triageWindow); - final staffRows = staffProfiles.map((staff) { + var staffRows = staffProfiles.map((staff) { final lastMessage = lastStaffMessageByUser[staff.id]; final ticketsResponded = respondedTicketsByUser[staff.id]?.length ?? 0; final tasksClosed = tasksClosedByUser[staff.id]?.length ?? 0; @@ -264,6 +264,15 @@ final dashboardMetricsProvider = Provider>((ref) { ); }).toList(); + // Order IT staff by combined activity (tickets responded today + tasks closed today) + // descending so most-active staff appear first. Use name as a stable tiebreaker. + staffRows.sort((a, b) { + final aCount = a.ticketsRespondedToday + a.tasksClosedToday; + final bCount = b.ticketsRespondedToday + b.tasksClosedToday; + if (bCount != aCount) return bCount.compareTo(aCount); + return a.name.compareTo(b.name); + }); + return AsyncData( DashboardMetrics( newTicketsToday: ticketsToday.length,