public async Task <AvatarBundle> AddBundleAsync(AvatarBundle bundle, List <int> itemIds) { VerifyManagementPermission(); var items = await _avatarItemRepository.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(_ => _.AvatarLayerId).Where(_ => _.Skip(1).Any()).Any()) { throw new GraException($"Default bundles cannot have multiple items per layer."); } bundle.SiteId = GetCurrentSiteId(); var newBundle = await _avatarBundleRepository.AddSaveAsync( GetClaimId(ClaimType.UserId), bundle); await _avatarBundleRepository.AddItemsAsync(newBundle.Id, itemIds); return(newBundle); }