public GetFeaturedProductResponse GetFeaturedProducts() { GetFeaturedProductResponse response = new GetFeaturedProductResponse(); Query productQuery = new Query(); productQuery.OrderByProperty = new OrderByClause { Desc = true, PropertyName = PropertyNameHelper.ResolvePropertyName<ProductTitle>(pt => pt.Price) }; response.Products = _productTitleRespository.FindBy(productQuery, 0, 6).ConvertToProductViews(); return response; }
private IEnumerable<Product> GetAllProductsMatchingQueryAndSort(GetProductsByCategoryRequest request, Query productQuery) { IEnumerable<Product> productsMatchingRefinement = _productRepository.FindBy(productQuery); switch (request.SortBy) { case ProductsSortBy.PriceHighToLow: productsMatchingRefinement = productsMatchingRefinement.OrderByDescending(p => p.Price); break; case ProductsSortBy.PriceLowToHigh: productsMatchingRefinement = productsMatchingRefinement.OrderBy(p => p.Price); break; } return productsMatchingRefinement; }
public static Query CreateQueryFor(GetProductsByCategoryRequest request) { Query productQuery = new Query(); Query colorQuery = new Query(); Query brandQuery = new Query(); Query sizeQuery = new Query(); colorQuery.QueryOperator = QueryOperator.Or; foreach (var id in request.ColorIds) { colorQuery.Add(Criterion.Create<Product>(p => p.Color.Id, id, CriteriaOperator.Equal)); } if (colorQuery.Criteria.Count() > 0) { productQuery.AddSubQuery(colorQuery); } brandQuery.QueryOperator = QueryOperator.Or; foreach (var id in request.BrandIds) { brandQuery.Add(Criterion.Create<Product>(p => p.Brand.Id,id, CriteriaOperator.Equal)); } if (brandQuery.Criteria.Count() > 0) { productQuery.AddSubQuery(brandQuery); } sizeQuery.QueryOperator = QueryOperator.Or; foreach (var id in request.SizeIds) { sizeQuery.Add(Criterion.Create<Product>(t => t.Size.Id, id, CriteriaOperator.Equal)); } if (sizeQuery.Criteria.Count() > 0) { productQuery.AddSubQuery(sizeQuery); } productQuery.Add(Criterion.Create<Product>(t => t.Category.Id, request.CategoryId, CriteriaOperator.Equal)); return productQuery; }
public void AddSubQuery(Query query) { _subQueries.Add(query); }