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])); }
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); }
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); }
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]}")); }