private IList <ProductViewModel> MapProductsInCategories(Category category, out int totalProducts) { var page = Request.QueryString["pg"] ?? "1"; var pageSize = Request.QueryString["size"] ?? "12"; var skip = (Int32.Parse(pageSize) * Int32.Parse(page) - Int32.Parse(pageSize)); IList <Facet> facetsForQuerying = System.Web.HttpContext.Current.Request.QueryString.ToFacets(); var productsInCategory = new List <ProductViewModel>(); var subCategories = CatalogLibrary.GetCategories(category.Categories); var products = CatalogLibrary.GetProducts(category.Categories.Append(category.Guid).ToList(), facetsForQuerying.ToFacetDictionary()); foreach (var subCategory in subCategories) { var productsInSubCategory = products.Where(p => p.Categories.Contains(subCategory.Guid)); productsInCategory.AddRange(MapProducts(productsInSubCategory.ToList())); } productsInCategory.AddRange(MapProducts(products.Where(p => p.Categories.Contains(category.Guid)) .ToList())); totalProducts = productsInCategory.Count; productsInCategory = productsInCategory.Skip(skip).Take(Int32.Parse(pageSize)).ToList(); return(productsInCategory); }
internal static string GetCategoryPath(Ucommerce.Search.Models.Category category) { var catalogLibrary = Ucommerce.Infrastructure.ObjectFactory.Instance.Resolve <ICatalogLibrary>(); var catNames = new List <string>(); var cat = category; while (cat != null) { catNames.Add(cat.Name); if (cat.ParentCategory.HasValue) { cat = catalogLibrary.GetCategories(new List <Guid> { cat.ParentCategory.Value }).FirstOrDefault(); } else { cat = null; } } catNames.Reverse(); var catUrl = String.Join("/", catNames.ToArray()); return(catUrl); }
private IList <ProductViewModel> MapProductsInCategories(Category category) { IList <Facet> facetsForQuerying = System.Web.HttpContext.Current.Request.QueryString.ToFacets(); var productsInCategory = new List <ProductViewModel>(); var subCategories = CatalogLibrary.GetCategories(category.Categories); var products = CatalogLibrary.GetProducts(category.Categories.Append(category.Guid).ToList(), facetsForQuerying.ToFacetDictionary()); foreach (var subCategory in subCategories) { var productsInSubCategory = products.Where(p => p.Categories.Contains(subCategory.Guid)); productsInCategory.AddRange(MapProducts(productsInSubCategory.ToList())); } productsInCategory.AddRange(MapProducts(products.Where(p => p.Categories.Contains(category.Guid)) .ToList())); return(productsInCategory); }