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 <IEnumerable <BookDTO> > GetPageAsync(SampleFilterModel filter) { var search = filter.SearchQuery ?? String.Empty; var entities = await _unitOfWork.BookRepository.GetAllAsync( item => (item.AuthorBooks.Any(a => a.Author.Name.ToUpper().Contains(search.ToUpper())))); var entitiesOnPage = entities.Skip((int)((filter.Page - 1) * filter.PageSize)) .Take((int)filter.PageSize); return(_mapper.Map <IEnumerable <BookDTO> >(entitiesOnPage)); }
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)); }
public async Task <ActionResult <PagedCollectionResponse <Test> > > GetTests([FromQuery] SampleFilterModel filter) { var res = await testService.GetPage(filter); return(Ok(res)); }