Пример #1
0
        public IActionResult PagedResponse <TSummary, TPayload>(List <TPayload> payload, TSummary summary)
            where TSummary : PayloadSummary
        {
            var result = new PagedResponseModel <TPayload, TSummary>(payload, summary);

            return(JsonResult(result));
        }
Пример #2
0
        public static PagedMetaModel <TRequest, TResponse> GetPagedMeta <TRequest, TResponse>(
            this IUrlHelper urlHelper,
            TRequest pagedRequestModel,
            PagedResponseModel <TResponse> pagedResponseModel,
            HttpMethod method = HttpMethod.GET)
            where TRequest : PagedRequestModel
            where TResponse : class, new()
        {
            PagedMetaModel <TRequest, TResponse> pagedMetaModel = new PagedMetaModel <TRequest, TResponse>(urlHelper, pagedRequestModel, pagedResponseModel, method);

            return(pagedMetaModel);
        }
Пример #3
0
        public void ConstructorTest3()
        {
            var list = new string[] { "test", "test2" };
            var p    = new PagedResponseModel <string>("tmp", list, list.LongLength, 0, 10);

            Assert.Equal(200, p.Status);
            Assert.Equal("tmp", p.Title);
            Assert.Equal(list, p.Data);
            Assert.Equal(list.LongLength, p.TotalCount);
            Assert.Equal(0, p.Page);
            Assert.Equal(10, p.PageSize);
        }
Пример #4
0
        // Get

        public Task <PagedResponseModel <UserModel> > GetPagedAsync(PagedRequestModel model, CancellationToken cancellationToken = default)
        {
            var query = _userRepo.Get();

            var total = query.Count();

            var items = query.QueryTo <UserModel>().OrderByDescending(x => x.CreatedTime).Skip(model.Skip).Take(model.Take).ToList();

            var pagedResponse = new PagedResponseModel <UserModel> {
                Total = total, Items = items
            };

            return(Task.FromResult(pagedResponse));
        }
        public IActionResult Index([FromQuery] PagedRequestModel model)
        {
            model.Skip = model.Take <= 0 ? 0 : model.Skip;

            model.Take = model.Take <= 0 ? 10 : model.Take;

            // Sample Data

            var users = new List <UserModel>();

            for (int i = 0; i < 100; i++)
            {
                users.Add(new UserModel
                {
                    Id       = i + 1,
                    FullName = $"User {i + 1}"
                });
            }

            // Queryable Data

            var query = users.AsQueryable();

            // Paged Result

            var total = query.Count();

            var data = query.OrderBy(x => x.Id).Skip(model.Skip).Take(model.Take).ToList();

            var pagedResult = new PagedResponseModel <UserModel>
            {
                Total          = total,
                Items          = data,
                AdditionalData = new Dictionary <string, object>
                {
                    { "Sum of Id", data.Select(x => x.Id).DefaultIfEmpty(0).Sum() }
                    // More additional Data if need
                }
            };

            // Generate Paged Meta

            var pagedMeta = Url.GetPagedMeta(model, pagedResult);

            return(Ok(pagedMeta));
        }
Пример #6
0
        public void ConstructorTest4()
        {
            var list = new string[] { "test", "test2", "test3" };
            var pr   = new MockPagedResults()
            {
                Data       = list,
                Page       = 2,
                PageSize   = 20,
                TotalCount = list.LongLength
            };

            Assert.Throws <ArgumentNullException>("pagedResults", () => new PagedResponseModel <string>("title", (IPagedResponse <string>)null));

            var p = new PagedResponseModel <string>("tmp2", pr);

            Assert.Equal(200, p.Status);
            Assert.Equal("tmp2", p.Title);
            Assert.Equal(list, p.Data);
            Assert.Equal(pr.Page, p.Page);
            Assert.Equal(pr.PageSize, p.PageSize);
            Assert.Equal(pr.TotalCount, p.TotalCount);
        }