Beispiel #1
0
        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;
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        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;
        }