public ActionResult Purchase(PurchaseSearchVM vm)
        {
            var filter = new PurchaseFilter();
            var model  = filter.FilterPurchase(vm);

            return(View(model.ToList()));
        }
        public static Expression <Func <Purchase, bool> > GetQuery(PurchaseFilter filter)
        {
            Expression <Func <Purchase, bool> > expression = order => true;

            if (!string.IsNullOrEmpty(filter.Description))
            {
                expression = expression.And(x => x.Description.Contains(filter.Description));
            }

            if (filter.State.HasValue)
            {
                expression = expression.And(x => x.State == (PurchaseState)Enum.Parse(typeof(PurchaseState),
                                                                                      filter.State.ToString()));
            }

            if (filter.DateInitial.HasValue)
            {
                expression = expression.And(x => x.Date >= filter.DateInitial);
            }

            if (filter.DateEnd.HasValue)
            {
                expression = expression.And(x => x.Date <= filter.DateEnd);
            }

            return(expression);
        }
 public async Task <IList <PurchaseDto> > FilterAsync(Pagination pagination, PurchaseFilter filter)
 => _mapper.Map <List <PurchaseDto> >(
     await _purchaseRepository.FilterAsync(pagination, filter));