Пример #1
0
        public async Task <ActionResult <NpcResponse> > PutEditNpcAsync(
            [FromServices] NaheulbookExecutionContext executionContext,
            [FromRoute] int npcId,
            NpcRequest request
            )
        {
            try
            {
                var npc = await _npcService.EditNpcAsync(executionContext, npcId, request);

                return(_mapper.Map <NpcResponse>(npc));
            }
            catch (ForbiddenAccessException ex)
            {
                throw new HttpErrorException(StatusCodes.Status403Forbidden, ex);
            }
            catch (NpcNotFoundException ex)
            {
                throw new HttpErrorException(StatusCodes.Status400BadRequest, ex);
            }
        }
Пример #2
0
        public async Task <CreatedActionResult <NpcResponse> > PostCreateNpcAsync(
            [FromServices] NaheulbookExecutionContext executionContext,
            [FromRoute] int groupId,
            NpcRequest request
            )
        {
            try
            {
                var npc = await _npcService.CreateNpcAsync(executionContext, groupId, request);

                return(_mapper.Map <NpcResponse>(npc));
            }
            catch (ForbiddenAccessException ex)
            {
                throw new HttpErrorException(StatusCodes.Status403Forbidden, ex);
            }
            catch (GroupNotFoundException ex)
            {
                throw new HttpErrorException(StatusCodes.Status404NotFound, ex);
            }
        }
Пример #3
0
        public async Task <Npc> EditNpcAsync(NaheulbookExecutionContext executionContext, int npcId, NpcRequest request)
        {
            using var uow = _unitOfWorkFactory.CreateUnitOfWork();

            var npc = await uow.Npcs.GetWitGroupAsync(npcId);

            if (npc == null)
            {
                throw new NpcNotFoundException(npcId);
            }

            _authorizationUtil.EnsureIsGroupOwner(executionContext, npc.Group);

            npc.Name = request.Name;
            npc.Data = _jsonUtil.SerializeNonNull(request.Data);

            await uow.SaveChangesAsync();

            return(npc);
        }
Пример #4
0
        public async Task <Npc> CreateNpcAsync(NaheulbookExecutionContext executionContext, int groupId, NpcRequest request)
        {
            using var uow = _unitOfWorkFactory.CreateUnitOfWork();

            var group = await uow.Groups.GetAsync(groupId);

            if (group == null)
            {
                throw new GroupNotFoundException(groupId);
            }

            _authorizationUtil.EnsureIsGroupOwner(executionContext, group);

            var npc = new Npc
            {
                GroupId = groupId,
                Name    = request.Name,
                Data    = _jsonUtil.SerializeNonNull(request.Data)
            };

            uow.Npcs.Add(npc);

            await uow.SaveChangesAsync();

            return(npc);
        }