/// <summary> /// Gets the store all filters. /// </summary> /// <param name="store">The store.</param> /// <returns>ISearchFilter[][].</returns> private ISearchFilter[] GetStoreAllFilters(Store store) { var filters = new List<ISearchFilter>(); var catalogClient = ClientContext.Clients.CreateCatalogClient(); // get category filters var children = catalogClient.GetChildCategoriesById(_customerSession.CustomerSession.CategoryId); if (children != null) { var categoryFilter = new CategoryFilter { Key = "__outline" }; var listOfValues = (from child in children.OfType<Category>() let outline = String.Format("{0}*", catalogClient.BuildCategoryOutline(_customerSession.CustomerSession.CatalogId, child)) select new CategoryFilterValue {Id = child.CategoryId, Outline = outline, Name = child.DisplayName()}).ToList(); // add filters only if found any if (listOfValues.Count > 0) { categoryFilter.Values = listOfValues.ToArray(); filters.Add(categoryFilter); } /* var categoryFilter = new AttributeFilter{ IsLocalized = false, Key = "__outline"}; var listOfValues = new List<AttributeFilterValue>(); foreach (var child in children.OfType<Category>()) { var outline = String.Format("{0}*", catalogClient.BuildCategoryOutline(_customerSession.CustomerSession.CatalogId, child)); var val = new AttributeFilterValue() { Id = outline, Value = outline }; listOfValues.Add(val); } // add filters only if found any if (listOfValues.Count > 0) { categoryFilter.Values = listOfValues.ToArray(); filters.Add(categoryFilter); } * */ } var browsing = GetStoreBrowseFilters(store); if (browsing != null) { if (browsing.Attributes != null) { filters.AddRange(browsing.Attributes); } if (browsing.AttributeRanges != null) { filters.AddRange(browsing.AttributeRanges); } if (browsing.Prices != null) { filters.AddRange(browsing.Prices); } } return filters.ToArray(); }
public static ISearchFilter Convert(this ISearchFilterService helper, ISearchFilter filter, string[] keys) { // get values that we have filters set for var values = from v in filter.GetValues() where keys.Contains(v.Id) select v; var attributeFilter = filter as AttributeFilter; if (attributeFilter != null) { var newFilter = new AttributeFilter(); newFilter.InjectFrom(filter); newFilter.Values = values.OfType<AttributeFilterValue>().ToArray(); return newFilter; } var rangeFilter = filter as RangeFilter; if (rangeFilter != null) { var newFilter = new RangeFilter(); newFilter.InjectFrom(filter); newFilter.Values = values.OfType<RangeFilterValue>().ToArray(); return newFilter; } var priceRangeFilter = filter as PriceRangeFilter; if (priceRangeFilter != null) { var newFilter = new PriceRangeFilter(); newFilter.InjectFrom(filter); newFilter.Values = values.OfType<RangeFilterValue>().ToArray(); return newFilter; } var categoryFilter = filter as CategoryFilter; if (categoryFilter != null) { var newFilter = new CategoryFilter(); newFilter.InjectFrom(filter); newFilter.Values = values.OfType<CategoryFilterValue>().ToArray(); return newFilter; } return null; }