示例#1
0
        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));
        }
示例#2
0
        public ServiceResult <TaskDTO> UnprogressTask(string sessionToken, int taskId)
        {
            var unprogressTaskRequest = new UnprogressTaskRequest
            {
                SessionToken = sessionToken,
                TaskId       = taskId
            };

            return(ExecuteWithExceptionHandling(
                       context => UnprogressTaskTransactionScript.UnprogressTask(
                           context,
                           unprogressTaskRequest)));
        }