public TaskDTO UnprogressTask(TodoContext context, UnprogressTaskRequest unprogressTaskRequest) { _unprogressTaskRequestValidator.ValidateAndThrow(unprogressTaskRequest); var user = _authenticationService.GetUserBySessionToken( context, unprogressTaskRequest.SessionToken); var task = context.Tasks .Include("User") .SingleOrDefault(t => t.TaskId == unprogressTaskRequest.TaskId); if (task == null) { throw new TodoException(ServiceError.NoSuchTask); } if (task.UserId != user.UserId) { throw new TodoException(ServiceError.NoPermissions); } var newTaskStatus = _taskProgressLogic.GetPreviousFor((TaskStatus)task.TaskStatus); task.TaskStatus = (int)newTaskStatus; task.ModifiedAt = _timeProvider.GetCurrentTime(); context.SaveChanges(); return(_taskToTaskDtoMapper.Map(task)); }
public ServiceResult <TaskDTO> UnprogressTask(string sessionToken, int taskId) { var unprogressTaskRequest = new UnprogressTaskRequest { SessionToken = sessionToken, TaskId = taskId }; return(ExecuteWithExceptionHandling( context => UnprogressTaskTransactionScript.UnprogressTask( context, unprogressTaskRequest))); }