public async Task <PagedCollectionResponse <Test> > GetPage(SampleFilterModel filter) { var tests = await _context.Tests.GetAll(); Func <SampleFilterModel, IEnumerable <Test> > filterData = (filterModel) => { return(tests.Skip((filterModel.Page - 1) * filter.Limit) .Take(filterModel.Limit)); }; var result = new PagedCollectionResponse <Test>(); result.Items = filterData(filter); result.AllCount = tests.Count(); SampleFilterModel nextFilter = filter.Clone() as SampleFilterModel; nextFilter.Page += 1; //String nextUrl = filterData(nextFilter).Count() <= 0 ? null : this.Url.Action("Get", null, nextFilter, Request.Scheme); //Get previous page URL string SampleFilterModel previousFilter = filter.Clone() as SampleFilterModel; previousFilter.Page -= 1; //String previousUrl = previousFilter.Page <= 0 ? null : this.Url.Action("Get", null, previousFilter, Request.Scheme); //result.NextPage = !String.IsNullOrWhiteSpace(nextUrl) ? new Uri(nextUrl) : null; //result.PreviousPage = !String.IsNullOrWhiteSpace(previousUrl) ? new Uri(previousUrl) : null; return(result); }
public async Task <IActionResult> Get([FromQuery] SampleFilterModel sampleFilterModel) { var result = new PagedCollectionResponse <AuthorDTO>(); result.Items = await _authorService.GetPageAsync(sampleFilterModel); SampleFilterModel nextFilter = sampleFilterModel.Clone() as SampleFilterModel; nextFilter.Page += 1; String nextUrl = !_authorService.GetPageAsync(nextFilter).Result.Any() ? null : this.Url.Action("Get", null, nextFilter, Request.Scheme); SampleFilterModel previousFilter = sampleFilterModel.Clone() as SampleFilterModel; previousFilter.Page -= 1; String previousUrl = previousFilter.Page <= 0 ? null : this.Url.Action("Get", null, previousFilter, Request.Scheme); result.NextPage = !String.IsNullOrWhiteSpace(nextUrl) ? new Uri(nextUrl) : null; result.PreviousPage = !String.IsNullOrWhiteSpace(previousUrl) ? new Uri(previousUrl) : null; return(Json(result)); }