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))); }
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))); }
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))); }
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")); }