public IEnumerable <Package> Get(PackageListModelFilter filter, int pageNumber, int pageSize, out int totalRecords) { using (var adapter = PersistenceLayer.GetDataAccessAdapter()) { var linqMetaData = new LinqMetaData(adapter); if (filter == null) { totalRecords = linqMetaData.Package.Count(); var entities = linqMetaData.Package.OrderByDescending(p => p.IsActive).OrderBy(p => p.PackageName).TakePage(pageNumber, pageSize).ToArray(); return(Mapper.MapMultiple(entities)); } else { var query = from p in linqMetaData.Package where ((filter.Active ? p.IsActive : true) && (filter.Inactive ? !p.IsActive : true)) select p; if (!string.IsNullOrEmpty(filter.Name)) { query = from p in query where p.PackageName.Contains(filter.Name) select p; } if (filter.PackageType > 0) { query = from p in query where p.PackageTypeId == filter.PackageType select p; } totalRecords = query.Count(); var entities = query.OrderByDescending(p => p.IsActive).OrderBy(p => p.PackageName).TakePage(pageNumber, pageSize).ToArray(); return(Mapper.MapMultiple(entities)); } } }
public ActionResult Index(PackageListModelFilter filter = null, int pageNumber = 1) { int totalRecords; var packages = _packageRepository.Get(filter, pageNumber, _pageSize, out totalRecords); var model = new PackageListModel { Packages = Mapper.Map <IEnumerable <Package>, IEnumerable <PackageViewModel> >(packages) }; if (filter == null) { filter = new PackageListModelFilter(); } model.Filter = filter; var currentAction = ControllerContext.RouteData.Values["action"].ToString(); Func <int, string> urlFunc = pn => Url.Action(currentAction, new { pageNumber = pn, filter.Name, filter.Active, filter.Inactive, filter.PackageType }); model.PagingModel = new PagingModel(pageNumber, _pageSize, totalRecords, urlFunc); return(View(model)); }