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); } }
private void SetTaskState(ManagedTaskDto task, ManagedTaskState newState) { task.State = newState; task.DateOfCompletion = DateTime.Now; SaveTask(task); }