private IQueryable <Ad> Search(string keywordSearch, Guid[] categories, OrderSearchAd order, double maxPrice, double minPrice, int pageSize, int page) { var specification = SpecificationAdQueryBuilder.MinPrice(minPrice); specification = maxPrice > 0 ? specification.MaxPrice(maxPrice) : specification; specification = !string.IsNullOrEmpty(keywordSearch) ? specification.WithKeywordInTitle(keywordSearch) : specification; specification = categories?.Length > 0 ? specification.WithCategory(categories) : specification; var result = _adService.Search(specification); switch (order) { case OrderSearchAd.Publish: result = result.OrderBy(c => c.Date); break; case OrderSearchAd.MaxPrice: result = result.OrderByDescending(c => c.Price); break; case OrderSearchAd.MinPrice: result = result.OrderBy(c => c.Price); break; } return(result .Skip(pageSize * ((page > 0 ? page : 1) - 1)) .Take(pageSize)); }
public async Task <IEnumerable <Ad> > SearchAdsAsync(string keywordSearch, Guid[] categories = default(Guid[]), OrderSearchAd order = OrderSearchAd.Publish, double maxPrice = 0, double minPrice = 0, int pageSize = 20, int page = 1) { return(await Search(keywordSearch, categories, order, maxPrice, minPrice, pageSize, page).ToListAsync(CancellationToken)); }
public IEnumerable <Ad> SearchAds(string keywordSearch, Guid[] categories = default(Guid[]), OrderSearchAd order = OrderSearchAd.Publish, double maxPrice = 0, double minPrice = 0, int pageSize = 20, int page = 1) { return(Search(keywordSearch, categories, order, maxPrice, minPrice, pageSize, page).ToList()); }