using System; using System.Collections.Generic; namespace Sufi.Demo.PeopleDirectory.Shared.Wrapper { public class PaginatedResult : Result where T : notnull { public PaginatedResult(List data) { Data = data; } public List Data { get; set; } internal PaginatedResult(bool succeeded, List data = default!, List? messages = null, int count = 0, int page = 1, int pageSize = 10) { Data = data; CurrentPage = page; Succeeded = succeeded; PageSize = pageSize; TotalPages = (int)Math.Ceiling(count / (double)pageSize); TotalCount = count; Messages = messages ?? []; } public static PaginatedResult Failure(List messages) { return new PaginatedResult(false, default!, messages); } public static PaginatedResult Success(List data, int count, int page, int pageSize) { return new PaginatedResult(true, data, null, count, page, pageSize); } public int CurrentPage { get; set; } public int TotalPages { get; set; } public int TotalCount { get; set; } public int PageSize { get; set; } public bool HasPreviousPage => CurrentPage > 1; public bool HasNextPage => CurrentPage < TotalPages; } }