public async Task <CreatedActionResult <EffectResponse> > PostCreateEffectAsync(
            [FromServices] NaheulbookExecutionContext executionContext,
            [FromRoute] int subCategoryId,
            CreateEffectRequest request
            )
        {
            try
            {
                var effect = await _effectService.CreateEffectAsync(executionContext, subCategoryId, request);

                return(_mapper.Map <EffectResponse>(effect));
            }
            catch (ForbiddenAccessException ex)
            {
                throw new HttpErrorException(StatusCodes.Status403Forbidden, ex);
            }
        }
        public async Task PostCreateEffect_CallEffectService()
        {
            const int subCategoryId          = 12;
            var       createEffectRequest    = new CreateEffectRequest();
            var       expectedEffectResponse = new EffectResponse();
            var       effect = new Effect {
                Id = 42
            };

            _effectService.CreateEffectAsync(_executionContext, subCategoryId, createEffectRequest)
            .Returns(effect);
            _mapper.Map <EffectResponse>(effect)
            .Returns(expectedEffectResponse);

            var result = await _effectSubCategoriesController.PostCreateEffectAsync(_executionContext, subCategoryId, createEffectRequest);

            result.StatusCode.Should().Be(201);
            result.Value.Should().Be(expectedEffectResponse);
        }
 public Task <EffectResponse> CreateEffectAsync(CreateEffectRequest request, string jwt)
 {
     return(_naheulbookHttpClient.PostAndParseJsonResultAsync <EffectResponse>("/api/v2/effects", request, jwt));
 }
        public async Task <Effect> CreateEffectAsync(NaheulbookExecutionContext executionContext, int subCategoryId, CreateEffectRequest request)
        {
            await _authorizationUtil.EnsureAdminAccessAsync(executionContext);

            var effect = new Effect
            {
                Name          = request.Name,
                SubCategoryId = subCategoryId,
                Description   = request.Description,
                Dice          = request.Dice,
                TimeDuration  = request.TimeDuration,
                CombatCount   = request.CombatCount,
                Duration      = request.Duration,
                LapCount      = request.LapCount,
                DurationType  = request.DurationType,
                Modifiers     = request.Modifiers.Select(s => new EffectModifier
                {
                    StatName = s.Stat, Type = s.Type, Value = s.Value
                }).ToList()
            };

            using (var uow = _unitOfWorkFactory.CreateUnitOfWork())
            {
                uow.Effects.Add(effect);
                await uow.SaveChangesAsync();
            }

            return(effect);
        }