private void SaveTask(ManagedTaskDto task) { var taskToUpdate = _mapper.Map <ManagedTaskDto, ManagedTask>(task); _database.TaskRepository.Update(taskToUpdate); _database.Save(); }
public void UpdateTask(ManagedTaskDto task) { var originalState = _database.TaskRepository.GetById(task.Id).State; if (originalState != task.State) { ChangeTaskState(task, originalState); } SaveTask(task); }
private void CompleteSubTasks(ManagedTaskDto task) { if (task.SubTasks != null) { foreach (var subTask in task.SubTasks) { CompleteSubTasks(subTask); } } SetTaskState(task, ManagedTaskState.Completed); }
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); }
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(); }
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); } }
public IActionResult UpdateTask([FromBody] ManagedTaskDto task) { _tasksService.UpdateTask(task); return(Ok()); }
public IActionResult AddTask([FromBody] ManagedTaskDto newTask) { _tasksService.AddTask(newTask); return(Ok()); }
private void SetTaskState(ManagedTaskDto task, ManagedTaskState newState) { task.State = newState; task.DateOfCompletion = DateTime.Now; SaveTask(task); }