Newer
Older
Warehouse / src / Infrastructure / ApplicationDependencies / DataAccess / Repositories / Common / ListResponseModel.cs
@Derek Comartin Derek Comartin on 22 Aug 2023 1 KB Init
using MyWarehouse.Application.Common.Dependencies.DataAccess.Repositories.Common;

namespace MyWarehouse.Infrastructure.ApplicationDependencies.DataAccess.Repositories.Common;

public class ListResponseModel<TDto> : IListResponseModel<TDto>
{
    public int PageIndex { get; private set; }
    public int PageSize { get; private set; }

    public int PageCount { get; private set; }
    public int RowCount { get; private set; }

    public string? ActiveFilter { get; private set; }
    public string? ActiveOrderBy { get; private set; }

    public int FirstRowOnPage => RowCount <= 0 ? 0 : ((PageIndex - 1) * PageSize) + 1;
    public int LastRowOnPage => Math.Min(PageIndex * PageSize, RowCount);

    public IEnumerable<TDto> Results { get; set; } = new List<TDto>();

    public ListResponseModel(ListQueryModel<TDto> queryModel, int rowCount, IEnumerable<TDto> results)
    {
        Results = results;

        PageIndex = queryModel.PageIndex;
        PageSize = queryModel.PageSize;
        ActiveOrderBy = queryModel.OrderBy;
        ActiveFilter = queryModel.Filter;
        RowCount = rowCount;
        PageCount = (int)Math.Ceiling((double)rowCount / PageSize);
    }
}