public ActionResult <IEnumerable <OrderItemDto> > GetOrderItems([FromQuery] OrderItemParametersDto orderItemParameters) { var orderItemsFromRepo = _orderItemRepository.GetOrderItems(orderItemParameters); var paginationMetadata = new { totalCount = orderItemsFromRepo.TotalCount, pageSize = orderItemsFromRepo.PageSize, currentPage = orderItemsFromRepo.CurrentPage, totalPages = orderItemsFromRepo.TotalPages, previousPageLink = orderItemsFromRepo.HasPrevious, nextPageLink = orderItemsFromRepo.HasNext }; Response.Headers.Add("X-Pagination", JsonSerializer.Serialize(paginationMetadata)); var orderItemsDto = _mapper.Map <IEnumerable <OrderItemDto> >(orderItemsFromRepo); return(Ok(orderItemsDto)); }
public PagedList <OrderItem> GetOrderItems(OrderItemParametersDto orderItemParameters) { if (orderItemParameters == null) { throw new ArgumentNullException(nameof(orderItemParameters)); } var collection = _context.OrderItems .Include(oi => oi.Order) .Include(oi => oi.Category) as IQueryable <OrderItem>; if (!string.IsNullOrWhiteSpace(orderItemParameters.ExternalOrderNo)) { var externalOrderNo = orderItemParameters.ExternalOrderNo.Trim(); collection = collection.Where(oi => oi.Order.ExternalOrderNo == externalOrderNo); } if (!string.IsNullOrWhiteSpace(orderItemParameters.QueryString)) { var QueryString = orderItemParameters.QueryString.Trim(); collection = collection.Where(oi => oi.ProductName.Contains(QueryString) || oi.Status.Contains(QueryString) || oi.Comments.Contains(QueryString)); } var sieveModel = new SieveModel { Sorts = orderItemParameters.SortOrder }; collection = _sieveProcessor.Apply(sieveModel, collection); return(PagedList <OrderItem> .Create(collection, orderItemParameters.PageNumber, orderItemParameters.PageSize)); }