public async Task <DynamicAvatarBundle> AddBundleAsync(DynamicAvatarBundle bundle, List <int> itemIds) { VerifyManagementPermission(); var items = await _dynamicAvatarItemRepository.GetByIdsAsync(itemIds); if (items.Where(_ => _.Unlockable != bundle.CanBeUnlocked).Any()) { throw new GraException($"Not all items are {(bundle.CanBeUnlocked ? "Unlockable" : "Available")}."); } if (bundle.CanBeUnlocked == false && items.GroupBy(_ => _.DynamicAvatarLayerId).Where(_ => _.Skip(1).Any()).Any()) { throw new GraException($"Default bundles cannot have multiple items per layer."); } bundle.SiteId = GetCurrentSiteId(); var newBundle = await _dynamicAvatarBundleRepository.AddSaveAsync( GetClaimId(ClaimType.UserId), bundle); await _dynamicAvatarBundleRepository.AddItemsAsync(newBundle.Id, itemIds); return(newBundle); }