getPendingTasks method

List<SpectraTask> getPendingTasks()

Gets all pending tasks that can be assigned.

Implementation

List<SpectraTask> getPendingTasks() {
  final assignedTaskIds = _agents
      .where(
        (a) => a.currentTaskId != null && a.status == AgentStatus.working,
      )
      .map((a) => a.currentTaskId!)
      .toSet();

  return _convoys
      .where((c) => c.status != 'completed')
      .expand((c) => c.tasks)
      .where((t) {
        // Not assigned and not completed
        final completed = _taskHistory.values.any(
          (list) => list.contains(t.id),
        );
        return !assignedTaskIds.contains(t.id) && !completed;
      })
      .toList();
}