public static async Task<ListModel<Attendance>> GetFilterBy(Dictionary<string, object> filters, int pagenum = 1, int pagesize = Pager.DEFAULT_PAGE_SIZE, Sort sort = null) { ListModel<Attendance> l = new ListModel<Attendance>(); if (sort == null) sort = new Sort(DEFAULT_SORT_COLUMN, DEFAULT_SORT_DIR); ISession se = NHibernateHelper.CurrentSession; ICriteria cr = se.CreateCriteria<Attendance>("attendance"); GetFilterCriteria(cr, filters, sort); ICriteria crCount = se.CreateCriteria<Attendance>("attendance"); GetFilterCriteria(crCount, filters, sort); int total = crCount.SetProjection(Projections.Count(Projections.Id())).UniqueResult<int>(); Pager pager = new Pager(total, pagenum, pagesize); int has_next = pager.HasNext ? 1 : 0; int has_prev = pager.HasPrev ? 1 : 0; GetOrder(sort, cr); cr.SetFirstResult(pager.LowerBound); cr.SetMaxResults(pager.PageSize); IList<Attendance> list = await Task.Run(() => { return cr.List<Attendance>(); }); l.ItemMsg = pager.GetItemMessage(); l.HasNext = has_next; l.HasPrev = has_prev; l.NextPage = pager.PageNum + 1; l.PrevPage = pager.PageNum - 1; l.List = list; l.SortColumn = sort.Column; l.SortDir = sort.Direction; l.Page = pager.PageNum; l.TotalPage = pager.TotalPages; return l; }
public static async Task<ListModel<Attendance>> GetAll(int pagenum = 1, int pagesize = Pager.DEFAULT_PAGE_SIZE, Sort sort = null) { ListModel<Attendance> l = new ListModel<Attendance>(); if (sort == null) sort = new Sort(DEFAULT_SORT_COLUMN, DEFAULT_SORT_DIR); ISession se = NHibernateHelper.CurrentSession; int total = se.QueryOver<Attendance>().Future().Count(); Pager pager = new Pager(total, pagenum, pagesize); int has_next = pager.HasNext ? 1 : 0; int has_prev = pager.HasPrev ? 1 : 0; ICriteria cr = se.CreateCriteria<Attendance>("attendance"); if (sort.Column == "e.Firstname") SetJoinCriteria(cr, sort); GetOrder(sort, cr); cr.SetFirstResult(pager.LowerBound); cr.SetMaxResults(pager.PageSize); IList<Attendance> list = await Task.Run(() => { return cr.List<Attendance>(); }); l.ItemMsg = pager.GetItemMessage(); l.HasNext = has_next; l.HasPrev = has_prev; l.NextPage = pager.PageNum + 1; l.PrevPage = pager.PageNum - 1; l.List = list; l.SortColumn = sort.Column; l.SortDir = sort.Direction; l.Page = pager.PageNum; l.TotalPage = pager.TotalPages; return l; }