/// <summary>
        /// Creates the line item.
        /// </summary>
        /// <param name="item">The entry.</param>
        /// <param name="parent">Parent item</param>
        /// <param name="quantity">The quantity.</param>
        /// <returns>LineItem.</returns>
        private LineItem CreateLineItem(Item item, Item parent, decimal quantity)
        {
            var lineItem = new LineItem();

            if (parent != null)
            {
                lineItem.DisplayName         = item.DisplayName(String.Format("{0}: {1}", parent.Name, item.Name));
                lineItem.ParentCatalogItemId = parent.ItemId;

                //Build options
                var relations = CatalogClient.GetItemRelations(parent.ItemId);

                var relationGroups = relations.Select(rel => rel.GroupName).Distinct();
                foreach (var prop in item.ItemPropertyValues.LocalizedProperties().Where(p => relationGroups.Contains(p.Name)))
                {
                    var option = new LineItemOption
                    {
                        LineItemId  = item.ItemId,
                        OptionName  = prop.Name,
                        OptionValue = prop.ToString()
                    };
                    lineItem.Options.Add(option);
                }
            }
            else
            {
                lineItem.DisplayName         = item.DisplayName();
                lineItem.ParentCatalogItemId = String.Empty;
            }

            lineItem.CatalogItemId   = item.ItemId;
            lineItem.CatalogItemCode = item.Code;
            var price = PriceListClient.GetLowestPrice(item.ItemId, quantity, false);

            if (price != null)
            {
                lineItem.ListPrice     = price.Sale ?? price.List;
                lineItem.PlacedPrice   = price.Sale ?? price.List;
                lineItem.ExtendedPrice = lineItem.PlacedPrice * quantity;
            }

            lineItem.MaxQuantity         = item.MaxQuantity;
            lineItem.MinQuantity         = item.MinQuantity;
            lineItem.Quantity            = quantity;
            lineItem.Weight              = item.Weight;
            lineItem.Catalog             = CustomerSession.CatalogId;
            lineItem.FulfillmentCenterId = StoreHelper.StoreClient.GetCurrentStore().FulfillmentCenterId;
            //lineItem.CatalogOutline = CatalogOutlineBuilder.BuildCategoryOutline(CatalogClient.CatalogRepository, CustomerSession.CatalogId, item);
            lineItem.CatalogOutline = CatalogOutlineBuilder.BuildCategoryOutline(CustomerSessionService.CustomerSession.CatalogId, item.ItemId).ToString();

            return(lineItem);
        }
Ejemplo n.º 2
0
        public bool IsShopperInCategoryOrSubcategories(string categoryId)
        {
            if (IsShopperInCategory(categoryId))
            {
                return(true);
            }

            //Check for sub categories
            var outline = GetStringValue(ContextFieldConstants.CategoryOutline);

            if (!String.IsNullOrEmpty(outline))
            {
                return(CatalogOutlineBuilder.GetCategoriesHierarchy(outline).Any(x => categoryId.Equals(x, StringComparison.OrdinalIgnoreCase)));
            }

            return(false);
        }
        private static bool IsTargetInCategories(TargetEntry target, string[] categoryIds)
        {
            var retVal = CatalogOutlineBuilder.GetCategoriesHierarchy(target.Outline).Any(x => categoryIds.Contains(x, StringComparer.OrdinalIgnoreCase));

            return(retVal);
        }
        private static bool IsLineItemInCategories(PromotionEntry lineItem, IEnumerable <string> categoryIds)
        {
            var retVal = CatalogOutlineBuilder.GetCategoriesHierarchy(lineItem.Outline).Any(x => categoryIds.Contains(x, StringComparer.OrdinalIgnoreCase));

            return(retVal);
        }