using System.Linq;
namespace Kit.Helpers.Repository.Paging
{
///
/// Фильтр с полями постраничной фильтрации.
/// Применяется, например в PagingController
///
public class PagingByPage : IPageFilter
{
public int? Start { get; set; }
public int? Lenght { get; set; }
public string SortColumnName { get; set; }
public string SortDirection { get; set; }
public string Tabs { get; set; }
public string pageParameterId { get; set; }
///
/// Номер страницы. Нумерация с 1-цы
///
public int? PageNo { get; set; }
public int? PageSize { get; set; }
public int? TotalRows { get; set; }
public int? CountPages { get; set; }
///
/// Есть значения для разбиения на страницы
///
public bool HasSize
{
get
{
return
this.PageNo.HasValue &&
(this.PageNo > 0) &&
this.PageSize.HasValue &&
(this.PageSize > 0);
}
}
public string FormId
{
get
{
return _formId;
}
set
{
_formId = value;
}
}
public IQueryable ChangePage(IQueryable query)
{
if (query == null) return null;
if (!(this.PageNo.HasValue && this.PageSize.HasValue)) return query;
return query.Skip((this.PageNo.Value - 1) * this.PageSize.Value).Take(this.PageSize.Value);
}
#region Fields ---------------------------------------
///
/// Для передачи в частичное представление Id формы, которая владеет просмотром страниц
///
private string _formId = "";
#endregion
}
}