示例#1
0
        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);
        }
示例#2
0
        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));
        }
示例#4
0
        public async Task <ActionResult <PagedCollectionResponse <Test> > > GetTests([FromQuery] SampleFilterModel filter)
        {
            var res = await testService.GetPage(filter);

            return(Ok(res));
        }