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 ApplyFilters() { BacklogTasksFiltered.Clear(); Priority?priority; if (PriorityFilter == null || PriorityFilter.Equals(" ")) { priority = null; } else { priority = (Priority)System.Enum.Parse(typeof(Priority), PriorityFilter); } var temp = BacklogTasks .Where( t => (t?.Title ?? "").Contains(SearchTerm ?? "") && (BoardFilter == null || BoardFilter.ID == -1 || t.BoardID == BoardFilter.ID) && (priority == null || t.Priority == priority) && (DueDateFilter == null || DueDateFilter.Equals(" ") || (DueDateFilter.Equals("Overdue") && t.DueDate != null && t.DueDate < DateTime.Now) || (DueDateFilter.Equals("Todays") && t.DueDate != null && t.DueDate == DateTime.Today) || (DueDateFilter.Equals("3 Days") && t.DueDate != null && DateTime.Now.AddDays(3) - t.DueDate <= TimeSpan.FromDays(3)) )).OrderBy(t => t.Position); foreach (Task task in temp) { BacklogTasksFiltered.Add(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); }
public void DeleteSelected() { DataAccess.DeleteTask(Selected); if (Selected.SprintRelevant) { SprintTasks.Remove(Selected); } else { BacklogTasks.Remove(Selected); ApplyFilters(); } Selected = null; }
public async void CreateSprint() { await DataAccess.ClearSprint(); foreach (Task task in SprintTasks) { if (task.Status != Status.Completed) { task.SprintRelevant = false; BacklogTasks.Add(task); } } SprintTasks.Clear(); ApplyFilters(); }
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; }
public void RemoveFromSprint(Task task) { SprintTasks.Remove(task); task.SprintRelevant = false; DataAccess.UpdateTaskSprintRelevance(task); for (int i = 0; i < BacklogTasks.Count(); i++) { if (String.Compare(BacklogTasks[i].Position, task.Position) >= 0) { BacklogTasks.Insert(i, task); return; } } BacklogTasks.Add(task); ApplyFilters(); Selected = task; }
public async System.Threading.Tasks.Task LoadDataAsync() { BacklogTasks.Clear(); SprintTasks.Clear(); var tasks = await DataAccess.GetTasks(true); foreach (var task in tasks) { if (task.SprintRelevant) { SprintTasks.Add(task); } else { BacklogTasks.Add(task); } } ApplyFilters(); BacklogTasksFiltered.CollectionChanged += CollectionChanged; }