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); }
public void CreateItemFromRequest_ShouldSerializeJsonData_AndSetItemTemplateId() { var itemData = new ItemData(); var jsonItemData = "some-json"; var itemTemplate = CreateItemTemplate(); _jsonUtil.DeserializeOrCreate <PartialItemTemplateData>(Arg.Any <string>()) .Returns(new PartialItemTemplateData()); _jsonUtil.SerializeNonNull(itemData) .Returns(jsonItemData); var actualItem = _factory.CreateItem(ItemOwnerType.Character, 10, itemTemplate, itemData); actualItem.ItemTemplateId.Should().Be(itemTemplate.Id); actualItem.Data.Should().BeEquivalentTo(jsonItemData); }
private Item GivenAnItem(ItemData itemData) { _jsonUtil.DeserializeOrCreate <ItemData>(SomeItemDataJson) .Returns(itemData); _jsonUtil.SerializeNonNull(itemData) .Returns(SomeUpdatedJsonData); return(new Item { Data = SomeItemDataJson }); }
public Item CreateItem(ItemTemplate itemTemplate, ItemData itemData) { var itemTemplateData = _jsonUtil.DeserializeOrCreate <PartialItemTemplateData>(itemTemplate.Data); if (itemTemplateData.Charge.HasValue) { itemData.Charge = itemTemplateData.Charge.Value; } if (itemTemplateData.Lifetime != null) { itemData.Lifetime = itemTemplateData.Lifetime; } if (itemTemplateData.Quantifiable == true && itemData.Quantity == null) { itemData.Quantity = 1; } itemData.Icon ??= itemTemplateData.Icon; if (string.IsNullOrEmpty(itemData.Name)) { if (itemData.NotIdentified == true && !string.IsNullOrEmpty(itemTemplateData.NotIdentifiedName)) { itemData.Name = itemTemplateData.NotIdentifiedName; } else { itemData.Name = itemTemplate.Name; } } var item = new Item { Data = _jsonUtil.SerializeNonNull(itemData), ItemTemplateId = itemTemplate.Id }; return(item); }
public async Task UpdateItemDataAsync_ShouldUpdateItemDataFieldAndSaveDb() { const int itemId = 4; var itemData = new ItemData(); var item = GivenAnItem(new ItemData()); _jsonUtil.SerializeNonNull(itemData) .Returns("some-new-item-data-json"); _unitOfWorkFactory.GetUnitOfWork().Items.GetWithOwnerAsync(itemId) .Returns(item); _unitOfWorkFactory.GetUnitOfWork().When(x => x.SaveChangesAsync()) .Do(_ => _itemDataUtil.Received(1).SetItemData(item, itemData)); var actualItem = await _service.UpdateItemDataAsync(new NaheulbookExecutionContext(), itemId, itemData); actualItem.Should().BeSameAs(item); await _unitOfWorkFactory.GetUnitOfWork().Received(1).SaveChangesAsync(); }
public void ApplyChangesAndNotify(Group group, PatchGroupConfigRequest request, INotificationSession notificationSession) { var config = _jsonUtil.DeserializeOrCreate <GroupConfig>(group.Config); if (request.AllowPlayersToAddObject.HasValue) { config.AllowPlayersToAddObject = request.AllowPlayersToAddObject.Value; } if (request.AllowPlayersToSeeSkillGmDetails.HasValue) { config.AllowPlayersToSeeSkillGmDetails = request.AllowPlayersToSeeSkillGmDetails.Value; } if (request.AllowPlayersToSeeGemPriceWhenIdentified.HasValue) { config.AllowPlayersToSeeGemPriceWhenIdentified = request.AllowPlayersToSeeGemPriceWhenIdentified.Value; } group.Config = _jsonUtil.SerializeNonNull(config); notificationSession.NotifyGroupChangeConfig(group.Id, config); }
public async Task <Map> CreateMapAsync(NaheulbookExecutionContext executionContext, CreateMapRequest request, Stream imageStream) { await _authorizationUtil.EnsureAdminAccessAsync(executionContext); using (var uow = _unitOfWorkFactory.CreateUnitOfWork()) { var mapData = new MapData { IsGm = request.Data.IsGm, PixelPerUnit = request.Data.PixelPerUnit, UnitName = request.Data.UnitName, Attribution = request.Data.Attribution .Select(x => new MapData.MapAttribution { Name = x.Name, Url = x.Url }) .ToList() }; var map = new Map { Name = request.Name, Data = _jsonUtil.SerializeNonNull(mapData), ImageData = "{}" }; uow.Maps.Add(map); await uow.SaveChangesAsync(); map.Data = _jsonUtil.SerializeNonNull(mapData); try { var mapImageData = _mapImageUtil.SplitMapImage(imageStream, map.Id); map.ImageData = _jsonUtil.SerializeNonNull(mapImageData); } catch (Exception) { uow.Maps.Remove(map); } await uow.SaveChangesAsync(); return(map); } }
public void SetItemData(Item item, IReadOnlyItemData itemData) { item.Data = _jsonUtil.SerializeNonNull(itemData); }