public async Task <PagedList <AcStaff> > GetAcStaffPaged(AcStaffParams acStaffParams) { IQueryable <AcStaff> acStaffs = _acstaffrepository.GetEntitys(); if (!string.IsNullOrWhiteSpace(acStaffParams.Name)) { acStaffs = acStaffs.Where(a => a.Name.Contains(acStaffParams.Name)); } return(await PagedList <AcStaff> .CreatePagedList(acStaffs, acStaffParams.PageSize, acStaffParams.PageNum)); }
private string CreateLink(PagedType pagedType, AcStaffParams acStaffParams) { switch (pagedType) { case PagedType.Previous: return(Url.Link(nameof(GetAcStaffPaged), new { PageNum = acStaffParams.PageNum - 1, PageSize = acStaffParams.PageSize })); case PagedType.Next: return(Url.Link(nameof(GetAcStaffPaged), new { PageNum = acStaffParams.PageNum + 1, PageSize = acStaffParams.PageSize })); } return(string.Empty); }
public async Task <ActionResult <ActionResult <IEnumerable <AcStaffDto> > > > GetAcStaffPaged( [FromQuery] AcStaffParams acStaffParams) { var res = new MessageModel <IEnumerable <AcStaffDto> >(); PagedList <AcStaff> list = await _acStaffServices.GetAcStaffPaged(acStaffParams); string previousLink = list.HasPrevious ? CreateLink(PagedType.Previous, acStaffParams) : null; string nextLink = list.HasNext ? CreateLink(PagedType.Next, acStaffParams) : null; var pagination = new { currentPage = list.PageNum, totalPage = list.TotalPage, totalCount = list.TotalCount, previousLink, nextLink }; HttpContext.Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(pagination)); res.Data = _mapper.Map <IEnumerable <AcStaffDto> >(list); return(Ok(res)); }