public IActionResult PagedResponse <TSummary, TPayload>(List <TPayload> payload, TSummary summary) where TSummary : PayloadSummary { var result = new PagedResponseModel <TPayload, TSummary>(payload, summary); return(JsonResult(result)); }
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); }
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); }
// 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)); }
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); }