public async Task <MonsterTemplate> CreateMonsterTemplateAsync(NaheulbookExecutionContext executionContext, MonsterTemplateRequest request) { await _authorizationUtil.EnsureAdminAccessAsync(executionContext); using (var uow = _unitOfWorkFactory.CreateUnitOfWork()) { var subCategory = await uow.MonsterSubCategories.GetAsync(request.SubCategoryId); if (subCategory == null) { throw new MonsterSubCategoryNotFoundException(request.SubCategoryId); } var itemTemplates = await uow.ItemTemplates.GetByIdsAsync(request.Inventory.Select(x => x.ItemTemplateId)); var monsterTemplate = new MonsterTemplate { Data = JsonConvert.SerializeObject(request.Data), Name = request.Name, SubCategory = subCategory, Items = request.Inventory.Where(i => !i.Id.HasValue || i.Id == 0).Select(i => new MonsterTemplateInventoryElement { Chance = i.Chance, ItemTemplate = itemTemplates.First(x => x.Id == i.ItemTemplateId), MaxCount = i.MaxCount, MinCount = i.MinCount }).ToList() }; uow.MonsterTemplates.Add(monsterTemplate); await uow.SaveChangesAsync(); return(monsterTemplate); } }
public async Task CreateEffectType_EnsureThatUserIsAnAdmin_BeforeAddingInDatabase() { var executionContext = new NaheulbookExecutionContext(); await _effectService.CreateEffectTypeAsync(executionContext, new CreateEffectTypeRequest()); Received.InOrder(() => { _authorizationUtil.EnsureAdminAccessAsync(executionContext); _unitOfWork.SaveChangesAsync(); }); }
public async Task CreateItemTemplate_EnsureThatUserIsAdmin_IfSourceIsOfficial_BeforeAddingInDatabase() { var executionContext = new NaheulbookExecutionContext(); var createItemTemplateRequest = new ItemTemplateRequest { Source = "official" }; _authorizationUtil.EnsureAdminAccessAsync(executionContext) .Throws(new TestException()); Func <Task <ItemTemplate> > act = () => _service.CreateItemTemplateAsync(executionContext, createItemTemplateRequest); act.Should().Throw <TestException>(); await _unitOfWorkFactory.GetUnitOfWork().DidNotReceive().SaveChangesAsync(); }
public async Task <EffectType> CreateEffectTypeAsync(NaheulbookExecutionContext executionContext, CreateEffectTypeRequest request) { await _authorizationUtil.EnsureAdminAccessAsync(executionContext); var effectType = new EffectType { Name = request.Name }; using (var uow = _unitOfWorkFactory.CreateUnitOfWork()) { uow.EffectTypes.Add(effectType); await uow.SaveChangesAsync(); } return(effectType); }
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 CreateMonsterTemplate_EnsureAdminAccess() { var request = new MonsterTemplateRequest(); var executionContext = new NaheulbookExecutionContext(); _authorizationUtil.EnsureAdminAccessAsync(executionContext) .Throws(new TestException()); Func <Task> act = () => _service.CreateMonsterTemplateAsync(executionContext, request); act.Should().Throw <TestException>(); }
public async Task CreateItemTemplateSection_EnsureThatUserIsAnAdmin_BeforeAddingInDatabase() { var executionContext = new NaheulbookExecutionContext(); await _service.CreateItemTemplateSectionAsync(executionContext, new CreateItemTemplateSectionRequest()); Received.InOrder(() => { _authorizationUtil.EnsureAdminAccessAsync(executionContext); _unitOfWorkFactory.GetUnitOfWork().SaveChangesAsync(); }); }
public async Task <MonsterType> CreateMonsterTypeAsync( NaheulbookExecutionContext executionContext, CreateMonsterTypeRequest request ) { await _authorizationUtil.EnsureAdminAccessAsync(executionContext); using (var uow = _unitOfWorkFactory.CreateUnitOfWork()) { var monsterType = new MonsterType { Name = request.Name, SubCategories = new List <MonsterSubCategory>() }; uow.MonsterTypes.Add(monsterType); await uow.SaveChangesAsync(); return(monsterType); } }
public async Task <ItemTemplate> CreateItemTemplateAsync(NaheulbookExecutionContext executionContext, ItemTemplateRequest request) { if (request.Source == "official") { await _authorizationUtil.EnsureAdminAccessAsync(executionContext); } var itemTemplate = _mapper.Map <ItemTemplate>(request); if (request.Source != "official") { itemTemplate.SourceUserId = executionContext.UserId; } using (var uow = _unitOfWorkFactory.CreateUnitOfWork()) { uow.ItemTemplates.Add(itemTemplate); await uow.SaveChangesAsync(); itemTemplate = (await uow.ItemTemplates.GetWithModifiersWithRequirementsWithSkillsWithSkillModifiersWithSlotsWithUnSkillsAsync(itemTemplate.Id)) !; } return(itemTemplate); }
public async Task <ItemTemplateSection> CreateItemTemplateSectionAsync(NaheulbookExecutionContext executionContext, CreateItemTemplateSectionRequest request) { await _authorizationUtil.EnsureAdminAccessAsync(executionContext); var itemTemplateSection = new ItemTemplateSection { Name = request.Name, Special = string.Join(",", request.Specials), Note = request.Note, Icon = request.Icon, SubCategories = new List <ItemTemplateSubCategory>() }; using (var uow = _unitOfWorkFactory.CreateUnitOfWork()) { uow.ItemTemplateSections.Add(itemTemplateSection); await uow.SaveChangesAsync(); } return(itemTemplateSection); }
public async Task <ItemTemplateSubCategory> CreateItemTemplateSubCategoryAsync(NaheulbookExecutionContext executionContext, CreateItemTemplateSubCategoryRequest request) { await _authorizationUtil.EnsureAdminAccessAsync(executionContext); var itemTemplateSubCategory = new ItemTemplateSubCategory() { SectionId = request.SectionId, Name = request.Name, Note = request.Note, Description = request.Description, TechName = request.TechName }; using (var uow = _unitOfWorkFactory.CreateUnitOfWork()) { uow.ItemTemplateSubCategories.Add(itemTemplateSubCategory); await uow.SaveChangesAsync(); } return(itemTemplateSubCategory); }