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));
        }
Beispiel #2
0
        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));
        }