42 lines
1.4 KiB
C#
42 lines
1.4 KiB
C#
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace LCU.Library.Internal.IncentiveApiModels.Common
|
|
{
|
|
public class PagedResponse<T> where T : class
|
|
{
|
|
public PagedResponse() { }
|
|
|
|
public PagedResponse(PagedResult<T> 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<T> 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; }
|
|
}
|
|
}
|