private string CreateUrl(PagedType pagedType, SlOrderParams slOrderParams) { string url = string.Empty; switch (pagedType) { case PagedType.Previous: url = Url.Link(nameof(GetOrders), new { PageSize = slOrderParams.PageSize, PageNum = slOrderParams.PageNum - 1, CustomerName = slOrderParams.CustomerName }); break; case PagedType.Next: url = Url.Link(nameof(GetOrders), new { PageSize = slOrderParams.PageSize, PageNum = slOrderParams.PageNum + 1, CustomerName = slOrderParams.CustomerName }); break; default: throw new ArgumentOutOfRangeException(nameof(pagedType), pagedType, null); } return(url); }
public async Task <PagedList <SlOrder> > GetOrderPaged(SlOrderParams slOrderParams) { IQueryable <SlOrder> itemsOrders = _slorderrepository.GetEntitys(); if (!string.IsNullOrWhiteSpace(slOrderParams.CustomerName)) { itemsOrders = itemsOrders.Where(o => o.Customer.Name.Contains(slOrderParams.CustomerName)); } if (slOrderParams.Status >= 0) { itemsOrders = itemsOrders.Where(a => a.Status == slOrderParams.Status); } return(await PagedList <SlOrder> .CreatePagedList(itemsOrders, slOrderParams.PageSize, slOrderParams.PageNum)); }
public async Task <ActionResult <MessageModel <IEnumerable <SlOrderDto> > > > GetOrders( [FromQuery] SlOrderParams slOrderParams) { MessageModel <IEnumerable <SlOrderDto> > res = new MessageModel <IEnumerable <SlOrderDto> >(); PagedList <SlOrder> orderPaged = await _slOrderServices.GetOrderPaged(slOrderParams); string previousLink = orderPaged.HasPrevious ? CreateUrl(PagedType.Previous, slOrderParams) : null; string nextLink = orderPaged.HasNext ? CreateUrl(PagedType.Next, slOrderParams) : null; var pagination = new { currentPage = orderPaged.PageNum, totalPage = orderPaged.TotalPage, totalCount = orderPaged.TotalCount, previousLink, nextLink }; HttpContext.Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(pagination)); res.Data = _mapper.Map <IEnumerable <SlOrderDto> >(orderPaged); return(Ok(res)); }