예제 #1
0
        public PurchasableProductListJsonResult GetPurchasableProductListJsonResult(IVisitorContext visitorContext, string currentItemId, string currentCatalogItemId, string searchKeyword, int?pageNumber, string facetValues, string sortField, int?pageSize, SortDirection?sortDirection)
        {
            Assert.ArgumentNotNull(visitorContext, "visitorContext");
            PurchasableProductListJsonResult productListJsonResult = base.ModelProvider.GetModel <PurchasableProductListJsonResult>();
            Item item = (!string.IsNullOrEmpty(currentCatalogItemId)) ? Context.Database.GetItem(currentCatalogItemId) : null;

            if (string.IsNullOrEmpty(currentCatalogItemId) && !string.IsNullOrEmpty(searchKeyword))
            {
                item = base.StorefrontContext.CurrentStorefront.CatalogItem;
            }
            if (item != null)
            {
                Item currentItem = Context.Database.GetItem(currentItemId);
                base.SiteContext.CurrentCatalogItem = item;
                base.SiteContext.CurrentItem        = currentItem;
                CategorySearchInformation categorySearchInformation = base.SearchInformation.GetCategorySearchInformation(item);
                this.GetSortParameters(categorySearchInformation, ref sortField, ref sortDirection);
                CommerceSearchOptions commerceSearchOptions = new CommerceSearchOptions(this.GetDefaultItemsPerPage(pageSize, categorySearchInformation), pageNumber.GetValueOrDefault(0));
                if (!string.IsNullOrWhiteSpace(searchKeyword))
                {
                    commerceSearchOptions.SearchKeyword = searchKeyword;
                    commerceSearchOptions.CatalogName   = base.StorefrontContext.CurrentStorefront.Catalog;
                }
                this.UpdateOptionsWithFacets(categorySearchInformation.RequiredFacets, facetValues, commerceSearchOptions);
                this.UpdateOptionsWithSorting(sortField, sortDirection, commerceSearchOptions);
                SearchResults        childProducts     = base.GetChildProducts(commerceSearchOptions, item);
                List <ProductEntity> productEntityList = this.AdjustProductPriceAndStockStatus(visitorContext, childProducts, item).ToList();
                productListJsonResult.Initialize(this, productEntityList, false, searchKeyword);
            }
            else if (Sitecore.Context.PageMode.IsExperienceEditor)
            {
                productListJsonResult = InitializeMockData(this, productListJsonResult);
            }
            return(productListJsonResult);
        }
예제 #2
0
        public JsonResult GetPurchasableProductList([Bind(Prefix = "q")] string searchKeyword, [Bind(Prefix = "pg")] int?pageNumber, [Bind(Prefix = "f")] string facetValues, [Bind(Prefix = "s")] string sortField, [Bind(Prefix = "ps")] int?pageSize, [Bind(Prefix = "sd")] Sitecore.Commerce.XA.Foundation.Common.Constants.SortDirection?sortDirection, [Bind(Prefix = "cci")] string currentCatalogItemId, [Bind(Prefix = "ci")] string currentItemId)
        {
            IVisitorContext service = ServiceLocator.ServiceProvider.GetService <IVisitorContext>();
            PurchasableProductListJsonResult productListJsonResult = _purchasableProductListRepository.GetPurchasableProductListJsonResult(service, currentItemId, currentCatalogItemId, searchKeyword, pageNumber, facetValues, sortField, pageSize, sortDirection);

            return(base.Json(productListJsonResult));
        }
예제 #3
0
        public static PurchasableProductListJsonResult InitializeMockData(BaseCommerceModelRepository repository, PurchasableProductListJsonResult model)
        {
            List <ProductEntity> productEntities = GetProductEntities();

            model.Initialize(repository, productEntities, true, "");
            foreach (PurchasableProductSummaryViewModel product in model.ChildProducts)
            {
                MediaItem item = Sitecore.Context.Database.GetItem(CatalogFeatureConstants.MockDataItems.MockProductId);
                product.Images.Add(item);
                product.DisplayName         = "Lorem ipsum";
                product.Description         = "Lorem ipsum";
                product.DisplayStartingFrom = true;
                product.Link = "/";
            }
            return(model);
        }