Example #1
0
        public override async Task <SynchronizeCatalogArgument> Run(SynchronizeCatalogArgument arg, CommercePipelineExecutionContext context)
        {
            Sitecore.Commerce.Plugin.Catalog.Catalog catalog = null;
            var catalogId = arg.Proposition.Name.ProposeValidId()
                            .EnsurePrefix(CommerceEntity.IdPrefix <Sitecore.Commerce.Plugin.Catalog.Catalog>());

            if (await _doesEntityExistPipeline.Run(
                    new FindEntityArgument(typeof(Sitecore.Commerce.Plugin.Catalog.Catalog), catalogId), context.CommerceContext.PipelineContextOptions))
            {
                catalog = await _getCatalogPipeline.Run(new GetCatalogArgument(arg.Proposition.Name.ProposeValidId()), context.CommerceContext.PipelineContextOptions);
            }
            else
            {
                var createResult = await _createCatalogPipeline.Run(new CreateCatalogArgument(arg.Proposition.Name.ProposeValidId(), arg.Proposition.Name), context.CommerceContext.PipelineContextOptions);

                catalog = createResult?.Catalog;
            }

            Condition.Requires <Sitecore.Commerce.Plugin.Catalog.Catalog>(catalog).IsNotNull($"{this.Name}: The Catalog could not be created.");

            arg.CatalogId = catalog?.Id;
            arg.Catalog   = catalog;

            return(arg);
        }
Example #2
0
        public override async Task <ImportCsvProductsArgument> Run(ImportCsvProductsArgument arg, CommercePipelineExecutionContext context)
        {
            Condition.Requires(arg, nameof(arg)).IsNotNull();
            Condition.Requires(arg.FileLines, nameof(arg.FileLines)).IsNotNull();

            var catalogList = GetDestinctCatalogData(arg);

            foreach (var(catalogName, fullCatalogName, catalogDisplayName) in catalogList)
            {
                var catalog = await _findEntityPipeline.Run(new FindEntityArgument(typeof(Catalog), fullCatalogName, 1), context);

                if (catalog != null)
                {
                    continue;
                }

                await _createCatalogPipeline.Run(new CreateCatalogArgument(catalogName, catalogDisplayName), context);
            }

            return(arg);
        }