Files
2026-04-20 14:47:24 -05:00

44 lines
1.5 KiB
C#

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<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; }
}
}