Пример #1
0
        public async Task <IActionResult> Index(BulkActionViewModel model)
        {
            var allSettings = _shellHost.GetAllSettings();

            foreach (var tenantName in model.TenantNames ?? Enumerable.Empty <string>())
            {
                var shellSettings = allSettings
                                    .Where(x => string.Equals(x.Name, tenantName, StringComparison.OrdinalIgnoreCase))
                                    .FirstOrDefault();

                if (shellSettings == null)
                {
                    break;
                }

                switch (model.BulkAction.ToString())
                {
                case "Disable":
                    if (string.Equals(shellSettings.Name, ShellHelper.DefaultShellName, StringComparison.OrdinalIgnoreCase))
                    {
                        _notifier.Warning(H["You cannot disable the default tenant."]);
                    }
                    else if (shellSettings.State != TenantState.Running)
                    {
                        _notifier.Warning(H["The tenant '{0}' is already disabled.", shellSettings.Name]);
                    }
                    else
                    {
                        shellSettings.State = TenantState.Disabled;
                        await _shellHost.UpdateShellSettingsAsync(shellSettings);
                    }

                    break;

                case "Enable":
                    if (shellSettings.State != TenantState.Disabled)
                    {
                        _notifier.Warning(H["The tenant '{0}' is already enabled.", shellSettings.Name]);
                    }
                    else
                    {
                        shellSettings.State = TenantState.Running;
                        await _shellHost.UpdateShellSettingsAsync(shellSettings);
                    }

                    break;

                default:
                    break;
                }
            }

            return(RedirectToAction(nameof(Index)));
        }
Пример #2
0
        public async Task <ActionResult> Features(BulkActionViewModel model, bool?force)
        {
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageFeatures))
            {
                return(Forbid());
            }

            if (model.FeatureIds == null || !model.FeatureIds.Any())
            {
                ModelState.AddModelError("featureIds", H["Please select one or more features."].ToString());
            }

            if (ModelState.IsValid)
            {
                var features         = _extensionManager.GetFeatures().Where(f => FeatureIsAllowed(f)).ToList();
                var selectedFeatures = features.Where(f => model.FeatureIds.Contains(f.Id)).ToList();

                await EnableOrDisableFeaturesAsync(selectedFeatures, model.BulkAction, force);
            }

            return(RedirectToAction(nameof(Features)));
        }
Пример #3
0
        public async Task <ActionResult> Features(BulkActionViewModel model, bool?force)
        {
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageFeatures))
            {
                return(Forbid());
            }

            if (model.FeatureIds == null || !model.FeatureIds.Any())
            {
                ModelState.AddModelError(nameof(BulkActionViewModel.FeatureIds), S["Please select one or more features."]);
            }

            if (ModelState.IsValid)
            {
                var features = (await _shellFeaturesManager.GetAvailableFeaturesAsync())
                               .Where(f => !f.IsTheme() && model.FeatureIds.Contains(f.Id));

                await EnableOrDisableFeaturesAsync(features, model.BulkAction, force);
            }

            return(RedirectToAction(nameof(Features)));
        }
Пример #4
0
        public async Task <ActionResult> FeaturesPOST(BulkActionViewModel model, bool?force)
        {
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageFeatures))
            {
                return(Unauthorized());
            }

            if (model.FeatureIds == null || !model.FeatureIds.Any())
            {
                ModelState.AddModelError("featureIds", T["Please select one or more features."].ToString());
            }

            if (ModelState.IsValid)
            {
                var availableFeatures  = _extensionManager.GetFeatures();
                var features           = availableFeatures.Where(feature => FeatureIsAllowed(feature)).ToList();
                var selectedFeatures   = features.Where(x => model.FeatureIds.Contains(x.Id)).ToList();
                var allEnabledFeatures = await _shellFeaturesManager.GetEnabledFeaturesAsync(); //features.Where(x => x.IsEnabled && featureIds.Contains(x.Id)).Select(x => x.Descriptor.Id).ToList();

                var idFeaturesEnabled   = allEnabledFeatures.Where(x => model.FeatureIds.Contains(x.Id)).ToList();
                var allDisabledFeatures = await _shellFeaturesManager.GetDisabledFeaturesAsync(); // DisabledFeaturesAsync //features.Where(x => !x.IsEnabled && featureIds.Contains(x.Id)).Select(x => x.Descriptor.Id).ToList();

                var idFeaturesDisabled = allDisabledFeatures.Where(x => model.FeatureIds.Contains(x.Id)).ToList();

                switch (model.BulkAction)
                {
                case FeaturesBulkAction.None:
                    break;

                case FeaturesBulkAction.Enable:
                    var enabledFeatures = await _shellFeaturesManager.EnableFeaturesAsync(idFeaturesDisabled, force == true);

                    foreach (var feature in enabledFeatures.ToList())
                    {
                        var featureName = availableFeatures.First(fi => fi.Id == feature.Id).Name;
                        _notifier.Success(T["{0} was enabled", featureName]);
                    }
                    break;

                case FeaturesBulkAction.Disable:
                    var disabledFeatures = await _shellFeaturesManager.DisableFeaturesAsync(idFeaturesEnabled, force == true);

                    foreach (var feature in disabledFeatures.ToList())
                    {
                        var featureName = availableFeatures.First(fi => fi.Id == feature.Id).Name;
                        _notifier.Success(T["{0} was disabled", featureName]);
                    }
                    break;

                case FeaturesBulkAction.Toggle:
                    var enabledFeaturesToggle = await _shellFeaturesManager.EnableFeaturesAsync(idFeaturesDisabled, force == true);

                    foreach (var feature in enabledFeaturesToggle.ToList())
                    {
                        var featureName = availableFeatures.First(fi => fi.Id == feature.Id).Name;
                        _notifier.Success(T["{0} was enabled", featureName]);
                    }

                    var disabledFeaturesToggle = await _shellFeaturesManager.DisableFeaturesAsync(idFeaturesEnabled, force == true);

                    foreach (var feature in disabledFeaturesToggle.ToList())
                    {
                        var featureName = availableFeatures.First(fi => fi.Id == feature.Id).Name;
                        _notifier.Success(T["{0} was disabled", featureName]);
                    }
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }

            return(RedirectToAction("Features"));
        }