async Task <FileIndexViewModel> GetViewModel( FileIndexOptions options, PagerOptions pager) { // Get results var results = await _metricStore.QueryAsync() .Take(pager.Page, pager.Size, pager.CountTotal) .Select <FileQueryParams>(q => { //q.StartDate.GreaterThanOrEqual(options.Start); //q.EndDate.LessThanOrEqual(options.End); }) .OrderBy(options.Sort.ToString(), options.Order) .ToList(); // Set total on pager pager.SetTotal(results?.Total ?? 0); // Return view model return(new FileIndexViewModel { Results = results, Options = options, Pager = pager }); }
async Task <FileIndexViewModel> GetViewModel( FileIndexOptions options, PagerOptions pager) { // Get results var results = await _metricStore.QueryAsync() .Take(pager.Page, pager.Size, pager.CountTotal) .Select <FileQueryParams>(q => { if (!string.IsNullOrEmpty(options.Search)) { q.Keywords.Like(options.Search); } }) .OrderBy(options.Sort.ToString(), options.Order) .ToList(); // Set total on pager pager.SetTotal(results?.Total ?? 0); // Return view model return(new FileIndexViewModel() { SortColumns = _defaultSortColumns, SortOrder = _defaultSortOrder, Filters = _defaultFilters, Results = results, Options = options, Pager = pager }); }
public async Task <IViewComponentResult> InvokeAsync( FileIndexOptions options, PagerOptions pager) { if (options == null) { options = new FileIndexOptions(); } if (pager == null) { pager = new PagerOptions(); } return(View(await GetViewModel(options, pager))); }
// ------------------- async Task <FileIndexViewModel> GetIndexViewModelAsync(FileIndexOptions options, PagerOptions pager) { // Get current feature var feature = await _featureFacade.GetFeatureByIdAsync(RouteData.Values["area"].ToString()); // Restrict results to current feature if (feature != null) { options.FeatureId = feature.Id; } // Set pager call back Url pager.Url = _contextFacade.GetRouteUrl(pager.Route(RouteData)); // Return updated model return(new FileIndexViewModel() { Options = options, Pager = pager }); }
// --------------- // Index // --------------- public async Task <IActionResult> Index(FileIndexOptions opts, PagerOptions pager) { // Ensure we have permission if (!await _authorizationService.AuthorizeAsync(User, Permissions.BrowseFiles)) { return(Unauthorized()); } // Default options if (opts == null) { opts = new FileIndexOptions(); } // Default pager if (pager == null) { pager = new PagerOptions(); } // Get default options var defaultViewOptions = new FileIndexOptions(); var defaultPagerOptions = new PagerOptions(); // Add non default route data for pagination purposes if (opts.Search != defaultViewOptions.Search) { this.RouteData.Values.Add("opts.search", opts.Search); } if (opts.Sort != defaultViewOptions.Sort) { this.RouteData.Values.Add("opts.sort", opts.Sort); } if (opts.Order != defaultViewOptions.Order) { this.RouteData.Values.Add("opts.order", opts.Order); } if (pager.Page != defaultPagerOptions.Page) { this.RouteData.Values.Add("pager.page", pager.Page); } if (pager.Size != defaultPagerOptions.Size) { this.RouteData.Values.Add("pager.size", pager.Size); } // Build view model var viewModel = await GetIndexViewModelAsync(opts, pager); // Add view model to context HttpContext.Items[typeof(FileIndexViewModel)] = viewModel; // If we have a pager.page querystring value return paged view if (int.TryParse(HttpContext.Request.Query["pager.page"], out var page)) { if (page > 0) { return(View("GetFiles", viewModel)); } } _breadCrumbManager.Configure(builder => { builder.Add(S["Home"], home => home .Action("Index", "Admin", "Plato.Admin") .LocalNav() ).Add(S["Files"]); }); // Return view return(View((LayoutViewModel)await _adminViewProvider.ProvideIndexAsync(new File(), this))); }