Files
mixtape/zero.Core/Models/Results/Paged.cs
T

64 lines
1.4 KiB
C#
Raw Normal View History

2021-11-23 15:43:21 +01:00
namespace zero.Models;
2021-11-23 11:35:01 +01:00
2021-11-23 15:43:21 +01:00
public class Paged<T> : Paged
2021-11-23 11:35:01 +01:00
{
2021-11-23 15:43:21 +01:00
public IList<T> Items { get; set; } = new List<T>();
2021-11-26 12:31:33 +01:00
public Paged(IList<T> items, long totalItems, long pageNumber, long pageSize) : base(totalItems, pageNumber, pageSize)
2021-11-23 15:43:21 +01:00
{
Items = items;
}
2021-12-29 01:25:35 +01:00
public Paged(long totalItems, long pageNumber, long pageSize) : base(totalItems, pageNumber, pageSize) { }
2021-11-23 15:43:21 +01:00
public Paged<TTarget> MapTo<TTarget>(Func<T, TTarget> convertItem)
{
return new Paged<TTarget>(Items.Select(x => convertItem(x)).Where(x => x != null).ToList(), TotalItems, Page, PageSize);
}
2021-11-30 14:32:10 +01:00
2021-12-14 01:23:03 +01:00
public override IEnumerable GetItems() => Items;
2021-11-23 15:43:21 +01:00
}
2021-11-30 14:32:10 +01:00
public abstract class Paged
2021-11-23 15:43:21 +01:00
{
public long Page { get; protected set; }
public long PageSize { get; protected set; }
public long TotalPages { get; protected set; }
public long TotalItems { get; protected set; }
public bool HasMore { get; protected set; }
public Paged(long totalItems, long page, long pageSize)
2021-11-23 11:35:01 +01:00
{
TotalItems = totalItems;
Page = page;
PageSize = pageSize;
if (pageSize > 0)
{
TotalPages = (long)Math.Ceiling(totalItems / (decimal)pageSize);
}
else
{
TotalPages = 1;
}
HasMore = TotalPages > Page;
}
public int GetSkipSize()
{
if (Page > 0 && PageSize > 0)
{
return Convert.ToInt32((Page - 1) * PageSize);
}
return 0;
}
2021-11-30 14:32:10 +01:00
2021-12-14 01:23:03 +01:00
public virtual IEnumerable GetItems() => Array.Empty<object>();
2021-11-23 11:35:01 +01:00
}