protected override IQuery <Offer> ApplyWhereClause(IQuery <Offer> query, OfferFilterDTO filter) { var predicates = new List <IPredicate>(); if (filter.SearchedAuthorsIds != null && filter.SearchedAuthorsIds.Length != 0) { var predicate = new List <IPredicate>(filter.SearchedAuthorsIds .Select(authorId => new SimplePredicate( nameof(Offer.CreatorId), ValueComparingOperator.Equal, authorId))); predicates.Add(new CompositePredicate(predicate)); } if (filter.SearchedCategory.HasValue) { predicates.Add(new SimplePredicate(nameof(Offer.Category), ValueComparingOperator.Equal, filter.SearchedCategory)); } if (filter.SearchedPrice.HasValue) { predicates.Add(new SimplePredicate(nameof(Offer.Price), ValueComparingOperator.Equal, filter.SearchedPrice)); } return(query.Where(new CompositePredicate(predicates))); }
public async Task <QueryResultDTO <OfferDTO, OfferFilterDTO> > ListOffersAsync(OfferFilterDTO filter) { using (UnitOfWorkProvider.Create()) { return(await offerService.ListOffersAsync(filter)); } }