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