public async Task <DataPage <D> > ExecuteQuery <D, Dext>(IWebQueryProvider query) where Dext : D { if (SourceRepository is IWebQueryable) { return(await(SourceRepository as IWebQueryable).ExecuteQuery <D, Dext>(query)); } else { QueryDescription <D> qd = null; if (query != null) { qd = query.Parse <D>(); } if (qd == null) { return(await SourceRepository.GetPage <D>(null, null, 1, int.MaxValue, null)); } else { var grouping = qd.GetGrouping <Dext>(); if (grouping == null) { return(await SourceRepository.GetPage <D>(qd.GetFilterExpression(), qd.GetSorting(), (int)qd.Page, (int)qd.Take)); } else { return(await SourceRepository.GetPageExtended <D, Dext>(qd.GetFilterExpression(), qd.GetSorting <Dext>(), (int)qd.Page, (int)qd.Take, grouping)); } } } }
public FoodController(FoodRepository repository, IStringLocalizerFactory factory, IHttpContextAccessor accessor, IWebQueryProvider queryProvider) : base(factory, accessor) { Repository = repository; this.queryProvider = queryProvider; }
public GridTestController( Data.ApplicationDbContext db, IStringLocalizerFactory factory, IHttpContextAccessor accessor, IWebQueryProvider queryProvider) : base(factory, accessor) { //in actual 3 layers applications repository inherit //from DefaultCRUDRepository //and then it is DI injected Repository = DefaultCRUDRepository.Create(db, db.Products); oDataRepository = new DefaultWebQueryRepository(Repository); TypesRepository = DefaultCRUDRepository.Create(db, db.ProductTypes); this.queryProvider = queryProvider; }