Exemple #1
0
        /// <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());
        }
Exemple #2
0
 private void PrioritizeTasks(object sender, TasksEventArgs e)
 {
     OnPrioritizeTasks?.Invoke(this, new TasksEventArgs(e.Tasks));
 }