コード例 #1
0
        private void SaveTask(ManagedTaskDto task)
        {
            var taskToUpdate = _mapper.Map <ManagedTaskDto, ManagedTask>(task);

            _database.TaskRepository.Update(taskToUpdate);
            _database.Save();
        }
コード例 #2
0
        public void UpdateTask(ManagedTaskDto task)
        {
            var originalState = _database.TaskRepository.GetById(task.Id).State;

            if (originalState != task.State)
            {
                ChangeTaskState(task, originalState);
            }

            SaveTask(task);
        }
コード例 #3
0
 private void CompleteSubTasks(ManagedTaskDto task)
 {
     if (task.SubTasks != null)
     {
         foreach (var subTask in task.SubTasks)
         {
             CompleteSubTasks(subTask);
         }
     }
     SetTaskState(task, ManagedTaskState.Completed);
 }
コード例 #4
0
        private bool SubTasksCanBeCompleted(ManagedTaskDto task)
        {
            foreach (var subTask in task.SubTasks)
            {
                if (!SubTasksCanBeCompleted(subTask))
                {
                    return(false);
                }
            }

            return(task.State == ManagedTaskState.Executing || task.State == ManagedTaskState.Completed);
        }
コード例 #5
0
        public void AddTask(ManagedTaskDto task)
        {
            if (task == null)
            {
                throw new ArgumentNullException();
            }

            var newTask = _mapper.Map <ManagedTaskDto, ManagedTask>(task);

            newTask.Id          = Guid.NewGuid();
            newTask.DateOfIssue = DateTime.Now;

            _database.TaskRepository.Add(newTask);
            _database.Save();
        }
コード例 #6
0
        private void ChangeTaskState(ManagedTaskDto task, ManagedTaskState originalState)
        {
            if (!Enum.IsDefined(typeof(ManagedTaskState), task.State))
            {
                throw new InvalidOperationException("Заданного состояния не существует");
            }

            if (task.State == ManagedTaskState.Paused && originalState != ManagedTaskState.Executing)
            {
                throw new InvalidOperationException("Статус \"Приостановлена\" может быть присвоен только задачам со статусом \"Выполняется\"");
            }

            if (task.State == ManagedTaskState.Completed)
            {
                if (originalState != ManagedTaskState.Executing || !SubTasksCanBeCompleted(task))
                {
                    throw new InvalidOperationException("Статус \"Завершена\" может быть присвоен только задачам со статусом \"Выполняется\"," +
                                                        " подзадачи которых также имеют статус \"Выполняется\" или \"Завершена\"");
                }
                task.DateOfCompletion = DateTime.Now;
                CompleteSubTasks(task);
            }
        }
コード例 #7
0
 public IActionResult UpdateTask([FromBody] ManagedTaskDto task)
 {
     _tasksService.UpdateTask(task);
     return(Ok());
 }
コード例 #8
0
 public IActionResult AddTask([FromBody] ManagedTaskDto newTask)
 {
     _tasksService.AddTask(newTask);
     return(Ok());
 }
コード例 #9
0
 private void SetTaskState(ManagedTaskDto task, ManagedTaskState newState)
 {
     task.State            = newState;
     task.DateOfCompletion = DateTime.Now;
     SaveTask(task);
 }