namespace PowderCoating.Application.DTOs.Common; public class PagedResult { public IEnumerable Items { get; set; } = new List(); /// /// Creates a PagedResult populated from a GridRequest, avoiding repetitive property /// assignments across every Index action. SortColumn, SortDirection, and SearchTerm /// are copied from the grid so the model carries full state for view binding. /// public static PagedResult From(GridRequest grid, IEnumerable items, int totalCount) => new() { Items = items, PageNumber = grid.PageNumber, PageSize = grid.PageSize, TotalCount = totalCount, SortColumn = grid.SortColumn, SortDirection = grid.SortDirection, SearchTerm = grid.SearchTerm }; public int PageNumber { get; set; } public int PageSize { get; set; } public int TotalCount { get; set; } public int TotalPages => (int)Math.Ceiling(TotalCount / (double)PageSize); public bool HasPreviousPage => PageNumber > 1; public bool HasNextPage => PageNumber < TotalPages; public int StartIndex => (PageNumber - 1) * PageSize + 1; public int EndIndex => Math.Min(PageNumber * PageSize, TotalCount); public string? SortColumn { get; set; } public string SortDirection { get; set; } = "asc"; public string? SearchTerm { get; set; } }