/// <summary> /// Prioritize the next task from a list of tasks /// By default, get the first task of the list /// Subscribe to OnPrioritizeTasks event to filter and prioritize the list of tasks /// </summary> /// <param name="tasks">list of tasks to prioritize</param> /// <returns>The prioritize task</returns> /// <example> /// manager.OnPrioritizeTasks += PrioritizeManager; /// public void PrioritizeManager(object sender, TasksEventArgs e) /// { /// e.Tasks = e.Tasks.OrderBy(i => i.Created); /// } /// </example> public SymuTask PrioritizeNextTask(IEnumerable <SymuTask> tasks) { if (tasks is null) { throw new ArgumentNullException(nameof(tasks)); } var symuTasks = tasks.ToList(); if (!symuTasks.Any()) { return(null); } symuTasks = symuTasks.OrderByDescending(t => t.LastTouched).ToList(); OnPrioritizeTasks?.Invoke(this, new TasksEventArgs(symuTasks)); return(symuTasks.First()); }
private void PrioritizeTasks(object sender, TasksEventArgs e) { OnPrioritizeTasks?.Invoke(this, new TasksEventArgs(e.Tasks)); }