public static OrderPaginationParams ConvertToOrderPagination(this OrderPaginationParams _params, HttpContext context)
 {
     _params.UserId    = context.Request.Headers["UserId"];
     _params.ProductId = context.Request.Headers["ProductId"];
     _params.Status    = context.Request.Headers["Status"].Select(item => (OrderStatusEnum)int.Parse(item)).FirstOrDefault();
     _params.Category  = context.Request.Headers["Category"].Select(item => (BookCategoryEnum)int.Parse(item)).FirstOrDefault();
     return(_params);
 }
 private IQueryable <Order> Filter(OrderPaginationParams pageParams)
 {
     return(FindByExpression(item =>
                             ((pageParams.MinDateTime == null) || item.CreatedDate >= pageParams.MinDateTime) &&
                             ((pageParams.MaxDateTime == null) || item.CreatedDate <= pageParams.MaxDateTime) &&
                             (pageParams.Category == null || item.Product.Category == pageParams.Category) &&
                             (pageParams.Status == null || item.status == pageParams.Status) &&
                             ((string.IsNullOrEmpty(pageParams.UserId) || item.UserId == pageParams.UserId))));
 }
        public async Task <PagedList <Order> > GetOrderPerPageAsync(OrderPaginationParams pageParams)
        {
            var filteredSource = Filter(pageParams).Include(o => o.User).Include(o => o.Product);

            return(await PagedList <Order> .ToPagedList(filteredSource, pageParams.Pagenumber, pageParams.Pagesize));
        }