public async Task <IActionResult> GetPagedOutboundLists([FromQuery] OutboundListDtoParameters parameters) { var outboundLists = await _outboundListRepository.GetPagedOutboundListsAsync(parameters); var previousPageLink = outboundLists.HasPrevious ? CreateOutboundListResourceUri(parameters, ResourceUnType.PreviousPage) : null; var nextPageLink = outboundLists.HasNext ? CreateOutboundListResourceUri(parameters, ResourceUnType.NextPage) : null; var paginationMetdata = new { totalCount = outboundLists.TotalCount, pageSize = outboundLists.PageSize, currentPage = outboundLists.CurrentPage, totalPage = outboundLists.TotalPages, previousPageLink, nextPageLink }; Response.Headers.Add("X-Pagination", JsonSerializer.Serialize( paginationMetdata, new JsonSerializerOptions { Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping })); var outboundListDto = _mapper.Map <IEnumerable <OutboundListDto> >(outboundLists); return(Ok(outboundListDto)); }
//[HttpDelete("outboundListId",Name = nameof(DeleteOutboundList))] //public async Task<IActionResult> DeleteOutboundList(Guid outboundListId) //{ // var entity = await _outboundListRepository.GetOutboundListAsync(outboundListId); // if(entity == null) // { // return NotFound(); // } // _outboundListRepository.DeleteOutboundList(entity); // _outboundListRepository.SaveAsync(); // return NoContent(); //} //[HttpOptions] //public IActionResult GetOutboundListOptions() //{ // Response.Headers.Add("Allow", "DELETE,GET,PATCH,PUT,OPTIONS"); // return Ok(); //} //前后页码的uri也需要查询条件,因为是根据原本的查询条件做的分页 private string CreateOutboundListResourceUri(OutboundListDtoParameters parameters, ResourceUnType type) { switch (type) { case ResourceUnType.PreviousPage: //上一页 return(Url.Link( nameof(GetPagedOutboundLists), new { pageNumber = parameters.PageNumber - 1, pageSize = parameters.PageSize, outboundListNum = parameters.OutboundListNum, searchTerm = parameters.SearchTerm })); case ResourceUnType.NextPage: //下一页 return(Url.Link( nameof(GetPagedOutboundLists), new { pageNumber = parameters.PageNumber + 1, pageSize = parameters.PageSize, outboundListNum = parameters.OutboundListNum, searchTerm = parameters.SearchTerm })); default: //当前页 return(Url.Link( nameof(GetPagedOutboundLists), new { pageNumber = parameters.PageNumber, pageSize = parameters.PageSize, outboundListNum = parameters.OutboundListNum, searchTerm = parameters.SearchTerm })); } }
public async Task <PagedList <OutboundList> > GetPagedOutboundListsAsync(OutboundListDtoParameters parameters) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } var querryExpression = _context.OutboundLists as IQueryable <OutboundList>; //OutboundListDtoParameters中的OutboundListNum查询参数 if (!String.IsNullOrWhiteSpace(parameters.OutboundListNum)) { parameters.OutboundListNum = parameters.OutboundListNum.Trim(); querryExpression = querryExpression.Where(x => x.OutboundNumber.Contains(parameters.OutboundListNum)); } //OutboundListDtoParameters中的SearchTerm查询参数 if (!String.IsNullOrWhiteSpace(parameters.SearchTerm)) { parameters.SearchTerm = parameters.SearchTerm.Trim(); querryExpression = querryExpression.Where(x => x.OutboundNumber.Contains(parameters.SearchTerm)); } return(await PagedList <OutboundList> .CreateAsync(querryExpression, parameters.PageNumber, parameters.PageSize)); }