示例#1
0
        // ---------------

        async Task <LabelIndexViewModel <Label> > GetIndexViewModelAsync(LabelIndexOptions options, PagerOptions pager)
        {
            // Get feature
            options.FeatureId = await GetFeatureIdAsync();

            if (options.Sort == LabelSortBy.Auto)
            {
                options.Sort  = LabelSortBy.Entities;
                options.Order = OrderBy.Desc;
            }

            // Set pager call back Url
            pager.Url = _contextFacade.GetRouteUrl(pager.Route(RouteData));

            return(new LabelIndexViewModel <Label>()
            {
                Options = options,
                Pager = pager
            });
        }
示例#2
0
        // ------------

        async Task <LabelIndexViewModel <Label> > GetIndexViewModelAsync(LabelIndexOptions options, PagerOptions pager)
        {
            // Get articles feature
            options.FeatureId = await GetFeatureIdAsync();

            if (options.Sort == LabelSortBy.Auto)
            {
                options.Sort  = LabelSortBy.Modified;
                options.Order = OrderBy.Desc;
            }

            // Indicate administrator view
            options.EnableEdit = true;

            // Set pager call back Url
            pager.Url = _contextFacade.GetRouteUrl(pager.Route(RouteData));

            return(new LabelIndexViewModel <Label>()
            {
                Options = options,
                Pager = pager
            });
        }
示例#3
0
        public async Task <IActionResult> Index(LabelIndexOptions opts, PagerOptions pager)
        {
            if (opts == null)
            {
                opts = new LabelIndexOptions();
            }

            if (pager == null)
            {
                pager = new PagerOptions();
            }

            // Get default options
            var defaultViewOptions  = new LabelIndexOptions();
            var defaultPagerOptions = new PagerOptions();

            // Add non default route data for pagination purposes
            if (opts.Search != defaultViewOptions.Search && !this.RouteData.Values.ContainsKey("opts.search"))
            {
                this.RouteData.Values.Add("opts.search", opts.Search);
            }
            if (opts.Sort != defaultViewOptions.Sort && !this.RouteData.Values.ContainsKey("opts.sort"))
            {
                this.RouteData.Values.Add("opts.sort", opts.Sort);
            }
            if (opts.Order != defaultViewOptions.Order && !this.RouteData.Values.ContainsKey("opts.order"))
            {
                this.RouteData.Values.Add("opts.order", opts.Order);
            }
            if (pager.Page != defaultPagerOptions.Page && !this.RouteData.Values.ContainsKey("pager.page"))
            {
                this.RouteData.Values.Add("pager.page", pager.Page);
            }
            if (pager.Size != defaultPagerOptions.Size && !this.RouteData.Values.ContainsKey("pager.size"))
            {
                this.RouteData.Values.Add("pager.size", pager.Size);
            }

            // Build view model
            var viewModel = await GetIndexViewModelAsync(opts, pager);

            // Add view options to context
            HttpContext.Items[typeof(LabelIndexViewModel <Label>)] = viewModel;

            // If we have a pager.page querystring value return paged results
            if (int.TryParse(HttpContext.Request.Query["pager.page"], out var page))
            {
                if (page > 0)
                {
                    return(View("GetLabels", viewModel));
                }
            }

            // Return Url for authentication purposes
            ViewData["ReturnUrl"] = _contextFacade.GetRouteUrl(new RouteValueDictionary()
            {
                ["area"]       = "Plato.Issues.Labels",
                ["controller"] = "Home",
                ["action"]     = "Index"
            });

            // Breadcrumb
            _breadCrumbManager.Configure(builder =>
            {
                builder.Add(S["Home"], home => home
                            .Action("Index", "Home", "Plato.Core")
                            .LocalNav()
                            ).Add(S["Issues"], discuss => discuss
                                  .Action("Index", "Home", "Plato.Issues")
                                  .LocalNav()
                                  ).Add(S["Labels"]);
            });

            // Return view
            return(View((LayoutViewModel)await _labelViewProvider.ProvideIndexAsync(new Label(), this)));
        }
示例#4
0
        // ------------
        // Index
        // ------------

        public async Task <IActionResult> Index(LabelIndexOptions opts, PagerOptions pager)
        {
            //if (!await _authorizationService.AuthorizeAsync(User, PermissionsProvider.ManageRoles))
            //{
            //    return Unauthorized();
            //}

            if (opts == null)
            {
                opts = new LabelIndexOptions();
            }

            if (pager == null)
            {
                pager = new PagerOptions();
            }

            // Get default options
            var defaultViewOptions  = new LabelIndexOptions();
            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(LabelIndexViewModel <Label>)] = viewModel;

            // If we have a pager.page querystring value return paged results
            if (int.TryParse(HttpContext.Request.Query["pager.page"], out var page))
            {
                if (page > 0)
                {
                    return(View("GetLabels", viewModel));
                }
            }

            // Breadcrumb
            _breadCrumbManager.Configure(builder =>
            {
                builder
                .Add(S["Home"], home => home
                     .Action("Index", "Admin", "Plato.Admin")
                     .LocalNav())
                .Add(S["Articles"], articles => articles
                     .Action("Index", "Admin", "Plato.Articles")
                     .LocalNav())
                .Add(S["Labels"]);
            });

            // Return view
            return(View((LayoutViewModel)await _viewProvider.ProvideIndexAsync(new Label(), this)));
        }
示例#5
0
        public async Task <IActionResult> Get(LabelIndexOptions opts, PagerOptions pager)
        {
            if (opts == null)
            {
                opts = new LabelIndexOptions();;
            }

            if (pager == null)
            {
                pager = new PagerOptions();
            }

            if (opts.Sort == LabelSortBy.Auto)
            {
                opts.Sort  = LabelSortBy.Entities;
                opts.Order = OrderBy.Desc;
            }

            var labels = await _labelService.GetResultsAsync(opts, pager);

            PagedResults <LabelApiResult> results = null;

            if (labels != null)
            {
                results = new PagedResults <LabelApiResult>
                {
                    Total = labels.Total
                };

                var baseUrl = await _contextFacade.GetBaseUrlAsync();

                foreach (var label in labels.Data)
                {
                    var url = baseUrl + _contextFacade.GetRouteUrl(new RouteValueDictionary()
                    {
                        ["opts.labelId"] = label.Id,
                        ["opts.alias"]   = label.Alias
                    });

                    results.Data.Add(new LabelApiResult()
                    {
                        Id            = label.Id,
                        Name          = label.Name,
                        Description   = label.Description,
                        ForeColor     = label.ForeColor,
                        BackColor     = label.BackColor,
                        Alias         = label.Alias,
                        TotalEntities = new FriendlyNumber()
                        {
                            Text  = label.TotalEntities.ToPrettyInt(),
                            Value = label.TotalEntities
                        },
                        Rank = 0
                    });
                }
            }

            LabelApiResults output = null;

            if (results != null)
            {
                output = new LabelApiResults()
                {
                    Page       = pager.Page,
                    Size       = pager.Size,
                    Total      = results.Total,
                    TotalPages = results.Total.ToSafeCeilingDivision(pager.Size),
                    Data       = results.Data
                };
            }

            return(output != null
                ? base.Result(output)
                : base.NoResults());
        }