Ejemplo n.º 1
0
        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
            });
        }
Ejemplo n.º 2
0
        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
            });
        }
Ejemplo n.º 3
0
        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)));
        }
Ejemplo n.º 4
0
        // -------------------

        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
            });
        }
Ejemplo n.º 5
0
        // ---------------
        // 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)));
        }