private Algolia.Search.Query getFilteredProductQuery(Algolia.Search.Query query, IProductFilter filter, params string[] excludeFacets )
		{
			if (filter != null)
			{
				List<string> facets = new List<string>();
				facets.Add("status:"+(int)ProductStatus.Approved);
				facets.Add("notVisible:false");
				facets.Add("isBlocked:false");
				if (filter.Category != null && !excludeFacets.Contains("categoryID"))
				{
					facets.Add("categoryID:"+filter.Category.ID);
				}

				if (filter.Subcategory != null && !excludeFacets.Contains("subcategoryID"))
				{
					facets.Add("subcategoryID:"+filter.Subcategory.ID);
				}

				if (filter.Country != null && !excludeFacets.Contains("countryID"))
				{
					facets.Add("countryID:"+filter.Country.ID);
				}

				if (filter.City != null && !excludeFacets.Contains("cityID"))
				{
					facets.Add("cityID:"+filter.City.ID);
				}

				if (facets.Count > 0)
					query.SetFacetFilters(facets);

				if (filter.Tags != null && filter.Tags.Count > 0)
				{
					query.SetTagFilters(string.Join(",", filter.Tags));
				}

				List<string> numericFilters = new List<string>();
				numericFilters.Add("status=" + (int)ProductStatus.Approved);

				if (filter.StartPrice != null)
				{
					numericFilters.Add("price>=" + filter.StartPrice);
				}

				if (filter.EndPrice != null)
				{
					numericFilters.Add("price<=" + filter.EndPrice);
				}

				if (numericFilters.Count > 0)
					query.SetNumericFilters(string.Join(",", numericFilters));
			}
			return query;
		}
示例#2
0
		private Algolia.Search.Query getFilteredStoreQuery(Algolia.Search.Query query, IStoreFilter filter, params string[] excludeFacets)
		{
			if (filter != null)
			{
				List<string> facets = new List<string>();
				facets.Add("isBlocked:false");
				if (filter.Category != null && !excludeFacets.Contains("categoryID"))
				{
					facets.Add("categoryID:"+filter.Category.ID);
				}

				if (filter.Country != null && !excludeFacets.Contains("countryID"))
				{
					facets.Add("countryID:"+filter.Country.ID);
				}

				if (filter.City != null && !excludeFacets.Contains("cityID"))
				{
					facets.Add("cityID:"+filter.City.ID);
				}

				if (facets.Count > 0)
					query.SetFacetFilters(facets);

				if (filter.Tags != null && filter.Tags.Count > 0)
				{
					query.SetTagFilters(string.Join(",", filter.Tags));
				}
			}
			return query;
		}