示例#1
0
        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);
        }