public static DynamicListRenderPageModel FromPagedList <T>(PagedListContainer <T> Objects) { if (Objects is null) { throw new System.ArgumentNullException(nameof(Objects)); } DynamicListRenderPageModel model = new DynamicListRenderPageModel() { PagedList = new PagedListContainer <IMetaObject>() { Count = Objects.Count, Page = Objects.Page, TotalCount = Objects.TotalCount }, Type = nameof(T) }; model.PagedList.HiddenColumns.AddRange(Objects.HiddenColumns); foreach (object?thisItem in Objects.Items) { if (thisItem is IMetaObject m) { model.PagedList.Items.Add(m); } else { model.PagedList.Items.Add(new MetaObjectHolder(thisItem)); } } return(model); }
public ActionResult ListEntries(string TypeName = "", Guid?Target = null, int count = 20, int page = 0) { bool typeSelected = !string.IsNullOrWhiteSpace(TypeName); IQueryable <AuditEntry> FilterQuery(IQueryable <AuditEntry> toQuery) { return(toQuery.Where(a => (!typeSelected || a.TypeName == TypeName) && (Target == null || a.Target == Target))); } MetaConstructor c = Constructor; PagedListContainer <IMetaObject> model = new PagedListContainer <IMetaObject> { TotalCount = FilterQuery(AuditEntryRepository.All).Count(), Page = page, Count = count }; model.Items.AddRange(FilterQuery(AuditEntryRepository.All).OrderByDescending(a => a.Logged).Skip(page * count).Take(count).ToList().Select(o => { MetaObject me = new MetaObject(o, c); me.Hydrate(); return(me); })); if (Target.HasValue) { model.HiddenColumns.Add(nameof(Target)); model.HiddenColumns.Add(nameof(TypeName)); } else if (!string.IsNullOrWhiteSpace(TypeName)) { model.HiddenColumns.Add(nameof(TypeName)); } return(this.View(model)); }
public HttpResponseMessage GetVakifListByPagedList(int pageNumber = 1, int pageSize = 10, string cityFilter = "", string foundationFilter = "") { //sdfsdf try { using (CONTOSOEntities db = new CONTOSOEntities()) { IQueryable <Foundation> query = db.Foundation.AsQueryable(); if (!string.IsNullOrEmpty(cityFilter)) { query = query.Where(vakif => vakif.Province.ProvinceName.Contains(cityFilter)).AsQueryable(); } if (!string.IsNullOrEmpty(foundationFilter)) { query = query.Where(vakif => vakif.County.CountyName.Contains(foundationFilter)).AsQueryable(); } query = query.OrderBy(a => a.Province.ProvinceName).ThenBy(a => a.County.CountyName); PagedList <Foundation> returnList = new PagedList <Foundation>(query, pageNumber, pageSize); IEnumerable <FoundationViewModel> fvm = new List <FoundationViewModel>(); fvm = returnList.Select(f => new FoundationViewModel { ID = f.ID, FName = f.FName, CountyName = f.County.CountyName, ProvinceName = f.Province.ProvinceName, Address = f.Address, Phone = f.Phone, Fax = f.Fax, EMail = f.EMail }); PagedList <FoundationViewModel> list = new PagedList <FoundationViewModel>(fvm, returnList.PagingMetaData); PagedListContainer <FoundationViewModel> pgList = new PagedListContainer <FoundationViewModel>(list); return(Request.CreateResponse(HttpStatusCode.OK, pgList)); } } catch (Exception e) { return(Request.CreateResponse(HttpStatusCode.InternalServerError)); } }
public PagedListContainer <T> GenerateList <T>(Type t, int count = 20, int page = 0, string text = "", Func <object, T>?Converter = null) where T : class { Converter ??= new Func <object, T>((o) => (T)o); PropertyInfo?Key = ContextHelper.GetKeyForType(t); if (Key is null) { throw new Exception($"Unable to find Key for type {t}"); } PagedListContainer <T> pagedList = new PagedListContainer <T>(); QueryResults DBResult; if (this.ServiceProvider.GetRepositoryForType <IKeyedObjectRepository>(t) is IKeyedObjectRepository TypedRepository) { DBResult = this.GetType().GetMethod(nameof(AdminController.QueryDatabase)).MakeGenericMethod(t).Invoke(this, new object[] { count, page, text }) as QueryResults; DBResult.Results = DBResult.Results.Select(Converter); } else { throw new Exception("Can not access data source for objects that dont derive from KeyedObjectType in this version"); } pagedList.Page = page; pagedList.Items.AddRange(DBResult.Results.Cast <T>()); pagedList.Count = count; pagedList.TotalCount = DBResult.TotalCount; return(pagedList); }