public PagedList <Staff> GetStaffs(StaffQueryFilter filters) { filters.PageNumber = filters.PageNumber == 0 ? _paginationOptions.DefaultPageNumber : filters.PageNumber; filters.PageSize = filters.PageSize == 0 ? _paginationOptions.DefaultPageSize : filters.PageSize; var staffs = _unitOfWork.StaffRepository.GetAll(); if (filters.Name != null) { staffs = staffs.Where(x => x.Name.ToLower().Contains(filters.Name.ToLower())); } var pagedStaffs = PagedList <Staff> .Create(staffs, filters.PageNumber, filters.PageSize); return(pagedStaffs); }
public IActionResult GetStaffs([FromQuery] StaffQueryFilter filters) { var staffs = _staffService.GetStaffs(filters); var staffsDto = _mapper.Map <IEnumerable <StaffDto> >(staffs); var metadata = new Metadata { TotalCount = staffs.TotalCount, PageSize = staffs.PageSize, CurrentPage = staffs.CurrentPage, TotalPages = staffs.TotalPages, HasNextPage = staffs.HasNextPage, HasPreviousPage = staffs.HasPreviousPage }; var response = new ApiResponse <IEnumerable <StaffDto> >(staffsDto) { Meta = metadata }; Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata)); return(Ok(response)); }
public Uri GetStaffPaginationUri(StaffQueryFilter filter, string actionUrl) { string baseUrl = $"{_baseUri}{actionUrl}"; return(new Uri(baseUrl)); }