public async Task <AuthorizedTaskTokenValidationResult> ExecuteAsync(ValidateAuthorizedTaskTokenQuery query, IExecutionContext executionContext)
        {
            var authrizedTaskType = _authorizedTaskTypeDefinitionRepository.GetRequiredByCode(query.AuthorizedTaskTypeCode);
            var tokenParts        = _authorizedTaskTokenFormatter.Parse(query.Token);

            if (tokenParts == null)
            {
                return(NotFoundResult());
            }

            var authorizedTask = await _dbContext
                                 .AuthorizedTasks
                                 .AsNoTracking()
                                 .Include(r => r.User)
                                 .Where(r => r.AuthorizedTaskId == tokenParts.AuthorizedTaskId &&
                                        r.AuthorizedTaskTypeCode == authrizedTaskType.AuthorizedTaskTypeCode)
                                 .SingleOrDefaultAsync();

            var result = Validate(authorizedTask, tokenParts, query, executionContext);

            if (result.IsSuccess)
            {
                result.Data = new AuthorizedTaskTokenValidationResultData()
                {
                    TaskData         = authorizedTask.TaskData,
                    AuthorizedTaskId = authorizedTask.AuthorizedTaskId,
                    UserId           = authorizedTask.User.UserId,
                    UserAreaCode     = authorizedTask.User.UserAreaCode
                };
            }

            return(result);
        }
Exemplo n.º 2
0
        public async Task ExecuteAsync(AddAuthorizedTaskCommand command, IExecutionContext executionContext)
        {
            var taskTypeDefinition = _authorizedTaskTypeDefinitionRepository.GetRequiredByCode(command.AuthorizedTaskTypeCode);
            var ipAddressId        = await GetCurrentIPAddressIdAsync(executionContext);

            await ValidateRateLimitAsync(ipAddressId, command, taskTypeDefinition, executionContext);

            var user = await GetUserAsync(command);

            var authorizedTask = MapAuthorizedTask(command, taskTypeDefinition, user, ipAddressId, executionContext);

            _dbContext.AuthorizedTasks.Add(authorizedTask);
            await _dbContext.SaveChangesAsync();

            command.OutputAuthorizedTaskId = authorizedTask.AuthorizedTaskId;
            command.OutputToken            = _authorizedTaskTokenFormatter.Format(new AuthorizedTaskTokenParts()
            {
                AuthorizedTaskId  = authorizedTask.AuthorizedTaskId,
                AuthorizationCode = authorizedTask.AuthorizationCode
            });
        }