55 lines
1.6 KiB
C#
55 lines
1.6 KiB
C#
using System;
|
|
|
|
namespace Hcs.ClientNet.Api.Request
|
|
{
|
|
internal class PaginationData
|
|
{
|
|
/// <summary>
|
|
/// Состояние, указывающее на то, что это последняя страница
|
|
/// </summary>
|
|
internal bool IsLastPage { get; private set; }
|
|
|
|
/// <summary>
|
|
/// Идентификатор следующей страницы
|
|
/// </summary>
|
|
internal Guid NextGuid { get; private set; }
|
|
|
|
public PaginationData(object item)
|
|
{
|
|
if (item == null)
|
|
{
|
|
throw new System.Exception($"[{nameof(PaginationData)}] item is null");
|
|
}
|
|
else if (item is bool boolItem)
|
|
{
|
|
if (boolItem == false)
|
|
{
|
|
throw new System.Exception($"[{nameof(PaginationData)}] item is false");
|
|
}
|
|
|
|
IsLastPage = true;
|
|
}
|
|
else if (item is string stringItem)
|
|
{
|
|
IsLastPage = false;
|
|
NextGuid = Guid.Parse(stringItem);
|
|
}
|
|
else
|
|
{
|
|
throw new System.Exception($"[{nameof(PaginationData)}] failed to handle item of {item.GetType().FullName} type");
|
|
}
|
|
}
|
|
|
|
internal static PaginationData CreateLastPageData()
|
|
{
|
|
return new PaginationData(true);
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return $"[{nameof(PaginationData)}] {nameof(IsLastPage)} = {IsLastPage}" +
|
|
(IsLastPage ? "" : $", {nameof(NextGuid)} = {NextGuid}");
|
|
}
|
|
}
|
|
}
|