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,