public override async Task <ImportCsvProductsArgument> Run(ImportCsvProductsArgument arg, CommercePipelineExecutionContext context)
        {
            var inventorySets = GetDistinctInventorySetNames(arg);

            foreach (var inventorySetName in inventorySets)
            {
                if (await InventorySetExists(inventorySetName, context))
                {
                    continue;
                }

                var result = await _createInventorySetCommand.Process(context.CommerceContext, inventorySetName, inventorySetName, inventorySetName);
            }

            return(arg);
        }
Example #2
0
        public override async Task <ImportEntityArgument> Run(ImportEntityArgument arg, CommercePipelineExecutionContext context)
        {
            var commerceEntity = arg.ImportHandler.GetCommerceEntity() as Sitecore.Commerce.Plugin.Catalog.Catalog;

            if (commerceEntity == null)
            {
                return(await Task.FromResult(arg));
            }

            var inventorySetName = arg.ImportHandler.GetPropertyValueFromSource <InventorySetNameAttribute, string>();

            if (string.IsNullOrEmpty(inventorySetName))
            {
                return(await Task.FromResult(arg));
            }

            var inventorySetExists = await _doesEntityExistPipeline
                                     .Run(new FindEntityArgument(typeof(InventorySet), inventorySetName.ToEntityId <InventorySet>()), context)
                                     .ConfigureAwait(false);

            if (!inventorySetExists)
            {
                await _createInventorySetCommand.Process(context.CommerceContext, inventorySetName, inventorySetName, string.Empty)
                .ConfigureAwait(false);
            }

            if (string.IsNullOrEmpty(commerceEntity.DefaultInventorySetName) ||
                !inventorySetName.Equals(commerceEntity.DefaultInventorySetName, StringComparison.OrdinalIgnoreCase))
            {
                await _associateCatalogToInventorySetCommand
                .Process(context.CommerceContext, inventorySetName, commerceEntity.Name)
                .ConfigureAwait(false);
            }

            return(await Task.FromResult(arg));
        }