using System; using System.Collections.Generic; using LCU.API.Collections.RepoApi.Models.Filters; using LCU.Shared.Collections.RepoApiLib.Models.Results; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Http; namespace LCU.API.Collections.RepoApi.Models.Responses { public class PagedResponse where T : class { public PagedResponse() { } public PagedResponse(PagedResult pagedResult, PageFilter filter, IUrlHelper url, HttpRequest request, string uriAction = "Get") { TotalItems = pagedResult.Total; Items = pagedResult.Items; CurrentPage = filter.Page; TotalPages = pagedResult.Total == 0 ? 1 : (int) Math.Ceiling((decimal) pagedResult.Total / filter.Limit); PageFilter newFilter = filter.Clone() as PageFilter; if (pagedResult.Total > (filter.Page * filter.Limit)) { newFilter.Page = filter.Page + 1; NextPage = new Uri(url.Action(uriAction, null, newFilter, request.Scheme)); } if (filter.Page > 1) { newFilter.Page = filter.Page - 1; PreviousPage = new Uri(url.Action(uriAction, null, newFilter, request.Scheme)); } } public IEnumerable Items { get; set; } public Uri NextPage { get; set; } public Uri PreviousPage { get; set; } public int TotalItems { get; set; } public int CurrentPage { get; set; } public int TotalPages { get; set; } } }