public void AddToSprint(Task task) { BacklogTasks.Remove(task); task.SprintRelevant = true; if (task.SprintPosition == null) { // Add it at the bottom of the ToDo tasks task.SprintPosition = Positioning.Calculate(SprintTasks.Where(t => t.Status == Status.ToDo).LastOrDefault()?.Position, null); DataAccess.UpdateTask(task); } else { DataAccess.UpdateTaskSprintRelevance(task); } for (int i = 0; i < SprintTasks.Count(); i++) { if (String.Compare(SprintTasks[i].SprintPosition, task.SprintPosition) >= 0) { SprintTasks.Insert(i, task); ApplyFilters(); return; } } SprintTasks.Add(task); ApplyFilters(); Selected = task; }
private void HandleReorder(Task task, int indexFrom, int indexTo) { string nextPos = BacklogTasksFiltered.ElementAtOrDefault(indexTo + 1)?.Position ?? Positioning.EndStop; string prevPos = BacklogTasks.Where(t => String.Compare(nextPos, t.Position) >= 1).OrderBy(t => t.Position).LastOrDefault()?.Position ?? "a"; // if there are sprint tasks that would be below the previous (= above) element make sure that the new element is placed below those as well so that they end in a similar position once they are added to the backlog again prevPos = SprintTasks.Where(t => String.Compare(t.Position, prevPos) >= 0 && String.Compare(t.Position, nextPos) < 0).OrderBy(t => t.Position).LastOrDefault()?.Position ?? prevPos; task.Position = Positioning.Calculate(prevPos, nextPos); DataAccess.UpdateTaskPosition(task); }
private void HandleReorder(ObservableCollection <Task> sender, Task task, int index, bool save = true) { List <Task> collection = Tasks.Where(t => t.Status == task.Status).ToList(); string nextPos = sender.ElementAtOrDefault(index + 1)?.Position ?? Positioning.EndStop; string prevPos = collection.Where(t => String.Compare(nextPos, t.Position) >= 0).OrderBy(t => t.Position).LastOrDefault()?.Position ?? "a"; task.Position = Positioning.Calculate(prevPos, nextPos); if (save) { DataAccess.UpdateTaskPosition(task); } }
public async System.Threading.Tasks.Task CreateTask() { Task task = new Task() { Status = Status.ToDo, SprintRelevant = false, BoardID = 0, Priority = Priority.Low, Position = Positioning.Calculate(Positioning.Max(BacklogTasks.LastOrDefault()?.Position, SprintTasks.LastOrDefault()?.Position), null), CreationDate = DateTime.Now }; long id = await DataAccess.AddTask(task); task.ID = id; BacklogTasks.Add(task); ApplyFilters(); Selected = task; }