public IEnumerable <CallQueue> GetCallQueueList(CallQueueListModelFilter filter, int pageNumber, int pageSize, out int totalRecords) { using (var adapter = PersistenceLayer.GetDataAccessAdapter()) { var linqMetaData = new LinqMetaData(adapter); if (filter == null) { totalRecords = linqMetaData.CallQueue.Count(cq => cq.IsManual && cq.IsHealthPlan == false); var entities = linqMetaData.CallQueue.Where(cq => cq.IsManual && cq.IsHealthPlan == false).OrderByDescending(p => p.IsActive).ThenBy(p => p.Name).TakePage(pageNumber, pageSize).ToArray(); return(Mapper.Map <IEnumerable <CallQueueEntity>, IEnumerable <CallQueue> >(entities)); } else { var query = from cq in linqMetaData.CallQueue where cq.IsManual && cq.IsHealthPlan == false select cq; if (!string.IsNullOrEmpty(filter.Name)) { query = from cq in query where cq.Name.Contains(filter.Name) select cq; } if (filter.CriteriaId > 0) { var callQueueIds = (from cqc in linqMetaData.CallQueueCriteria where cqc.CriteriaId == filter.CriteriaId select cqc.CallQueueId); query = from cq in query where callQueueIds.Contains(cq.CallQueueId) select cq; } totalRecords = query.Count(); var entities = query.OrderByDescending(p => p.IsActive).ThenBy(p => p.Name).TakePage(pageNumber, pageSize).ToArray(); return(Mapper.Map <IEnumerable <CallQueueEntity>, IEnumerable <CallQueue> >(entities)); } } }
public ActionResult Index(CallQueueListModelFilter filter = null, int pageNumber = 1) { int totalRecords; var model = _callQueueService.GetCallQueueList(pageNumber, _pageSize, filter, out totalRecords) ?? new CallQueueListModel(); model.Filter = filter; var currentAction = ControllerContext.RouteData.Values["action"].ToString(); Func <int, string> urlFunc = pn => Url.Action(currentAction, new { pageNumber = pn, filter.Name, filter.CriteriaId, }); model.PagingModel = new PagingModel(pageNumber, _pageSize, totalRecords, urlFunc); return(View(model)); }