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); } }
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); } }
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); }
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); }