Beispiel #1
0
        private Category TransformCore(CommerceContext commerceContext, JToken rawLine, List <Category> importItems)
        {
            var catalogName = rawLine[CatalogNameIndex].ToString();
            var name        = rawLine[CategoryNameIndex].ToString();
            var id          = name.ToCategoryId(catalogName);

            var item = importItems.FirstOrDefault(i => i.Id.Equals(id));

            if (item == null)
            {
                item             = new Category();
                item.Name        = name;
                item.Id          = id;
                item.FriendlyId  = item.Name.ToCategoryFriendlyId(catalogName);
                item.SitecoreId  = GuidUtils.GetDeterministicGuidString(item.Id);
                item.DisplayName = rawLine[CategoryDisplayNameIndex].ToString();

                var component = item.GetComponent <ListMembershipsComponent>();
                component.Memberships.Add(string.Format("{0}", CommerceEntity.ListName <Category>()));
                component.Memberships.Add(commerceContext.GetPolicy <KnownCatalogListsPolicy>().CatalogItems);

                importItems.Add(item);
            }

            return(item);
        }
        private SellableItem TransformCore(CommerceContext commerceContext, JToken rawLine, List <SellableItem> importItems)
        {
            var productId = rawLine[ProductIdIndex].ToString();
            var id        = productId.ToEntityId <SellableItem>();

            var item = importItems.FirstOrDefault(i => i.Id.Equals(id));

            if (item == null)
            {
                item             = new SellableItem();
                item.ProductId   = productId;
                item.Id          = id;
                item.FriendlyId  = item.ProductId;
                item.Name        = rawLine[ProductNameIndex].ToString();
                item.SitecoreId  = GuidUtils.GetDeterministicGuidString(item.Id);
                item.DisplayName = rawLine[DisplayNameIndex].ToString();
                item.TypeOfGood  = rawLine[TypeOfGoodIndex].ToString();

                var listPricePolicy = item.GetPolicy <ListPricingPolicy>();
                listPricePolicy.AddPrice(new Money
                {
                    CurrencyCode = "USD",
                    Amount       = decimal.Parse(rawLine[ListPriceIndex].ToString())
                });

                var component = item.GetComponent <ListMembershipsComponent>();
                component.Memberships.Add(string.Format("{0}", CommerceEntity.ListName <SellableItem>()));
                component.Memberships.Add(commerceContext.GetPolicy <KnownCatalogListsPolicy>().CatalogItems);

                importItems.Add(item);
            }

            return(item);
        }
        protected virtual string ExtractCatalogId(string id)
        {
            var strArray = id.Split(new string[] { "-" }, StringSplitOptions.RemoveEmptyEntries);

            if (strArray.Length < 3)
            {
                return(string.Empty);
            }

            return(GuidUtils.GetDeterministicGuidString(CommerceEntity.IdPrefix <Catalog>() + strArray[2]));
        }
Beispiel #4
0
        private void TransformCore(CommerceContext commerceContext, string[] rawFields, Category item)
        {
            var catalogName = rawFields[CatalogNameIndex];

            item.Name        = rawFields[CategoryNameIndex];
            item.Id          = item.Name.ToCategoryId(catalogName);
            item.FriendlyId  = item.Name.ToCategoryFriendlyId(catalogName);
            item.SitecoreId  = GuidUtils.GetDeterministicGuidString(item.Id);
            item.DisplayName = rawFields[CategoryDisplayNameIndex];
            //item.Description = arg.Description;
            var component = item.GetComponent <ListMembershipsComponent>();

            component.Memberships.Add(string.Format("{0}", CommerceEntity.ListName <Category>()));
            component.Memberships.Add(commerceContext.GetPolicy <KnownCatalogListsPolicy>().CatalogItems);
        }
Beispiel #5
0
        private void TransformCore(CommerceContext commerceContext, string[] rawFields, SellableItem item)
        {
            item.ProductId  = rawFields[ProductIdIndex];
            item.Id         = item.ProductId.ToEntityId <SellableItem>();
            item.FriendlyId = item.ProductId;
            item.Name       = rawFields[ProductNameIndex];
            /// Be sure not to include SitecoreId in <see cref="ProductExtensionComponentComparer"/>
            item.SitecoreId   = GuidUtils.GetDeterministicGuidString(item.Id);
            item.DisplayName  = rawFields[DisplayNameIndex];
            item.Description  = rawFields[DescriptionIndex];
            item.Brand        = rawFields[BrandIndex];
            item.Manufacturer = rawFields[ManufacturerIndex];
            item.TypeOfGood   = rawFields[TypeOfGoodIndex];
            var tags = string.IsNullOrEmpty(rawFields[TagsIndex]) ? null : rawFields[TagsIndex].Split('|');

            item.Tags = tags == null ? new List <Tag>() : tags.Select(x => new Tag(x)).ToList();

            var component = item.GetComponent <ListMembershipsComponent>();

            component.Memberships.Add(string.Format("{0}", CommerceEntity.ListName <SellableItem>()));
            component.Memberships.Add(commerceContext.GetPolicy <KnownCatalogListsPolicy>().CatalogItems);
        }
Beispiel #6
0
        private async Task UpsertSellableItem(SellableItem item, CommercePipelineExecutionContext context)
        {
            if (string.IsNullOrEmpty(item.ProductId))
            {
                item.ProductId = item.Id.SimplifyEntityName().ProposeValidId();
            }

            if (string.IsNullOrEmpty(item.FriendlyId))
            {
                item.FriendlyId = item.Id.SimplifyEntityName();
            }

            if (string.IsNullOrEmpty(item.SitecoreId))
            {
                item.SitecoreId = GuidUtils.GetDeterministicGuidString(item.Id);
            }

            var entity = await _findEntityPipeline.Run(new FindEntityArgument(typeof(SellableItem), item.Id), context).ConfigureAwait(false);

            if (entity == null)
            {
                await _persistEntityPipeline.Run(new PersistEntityArgument(item), context).ConfigureAwait(false);

                return;
            }

            if (!(entity is SellableItem))
            {
                return;
            }

            var existingSellableItem = entity as SellableItem;

            // Try to merge the items.
            existingSellableItem.Name = item.Name;

            foreach (var policy in item.Policies)
            {
                if (existingSellableItem.HasPolicy(policy.GetType()))
                {
                    existingSellableItem.RemovePolicy(policy.GetType());
                }

                existingSellableItem.SetPolicy(policy);
            }

            if (item.HasComponent <ItemVariationsComponent>())
            {
                var variations = existingSellableItem.GetComponent <ItemVariationsComponent>();

                foreach (var variation in item.GetComponent <ItemVariationsComponent>().ChildComponents.OfType <ItemVariationComponent>())
                {
                    var existingVariation = existingSellableItem.GetVariation(variation.Id);
                    if (existingVariation != null)
                    {
                        existingVariation.Name = variation.Name;

                        foreach (var policy in variation.Policies)
                        {
                            if (existingVariation.Policies.Any(x => x.GetType() == policy.GetType()))
                            {
                                existingVariation.RemovePolicy(policy.GetType());
                            }

                            existingVariation.SetPolicy(policy);
                        }
                    }
                    else
                    {
                        variations.ChildComponents.Add(variation);
                    }
                }
            }

            await _persistEntityPipeline.Run(new PersistEntityArgument(existingSellableItem), context).ConfigureAwait(false);
        }
        private static string ExtractCatalogId(string id)
        {
            var strArray = id.Split(new[] { "-" }, StringSplitOptions.RemoveEmptyEntries);

            return(strArray.Length < 3 ? string.Empty : GuidUtils.GetDeterministicGuidString($"{CommerceEntity.IdPrefix<Catalog>()}{strArray[2]}"));
        }