コード例 #1
0
        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));
        }
コード例 #2
0
        //[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
                }));
            }
        }
コード例 #3
0
        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));
        }