예제 #1
0
파일: TestService.cs 프로젝트: a-kelen/Akel
        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));
        }