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