public async Task <IActionResult> NewResource(IdentityItemViewModel resourceModel)
        {
            if (!ModelState.IsValid)
            {
                return(RedirectToAction("EditResource", new { siteId = resourceModel.SiteId, resourceName = resourceModel.Name }));
            }

            Guid siteId = siteManager.CurrentSite.Id;

            if (!string.IsNullOrEmpty(resourceModel.SiteId) && resourceModel.SiteId.Length == 36)
            {
                siteId = new Guid(resourceModel.SiteId);
            }
            var selectedSite = await siteManager.GetSiteForDataOperations(siteId);

            ViewData["Title"] = string.Format(CultureInfo.CurrentUICulture, sr["{0} - New Identity Resource"], selectedSite.SiteName);

            var exists = await idManager.IdentityResourceExists(selectedSite.Id.ToString(), resourceModel.Name);

            if (exists)
            {
                var model = new IdentityEditViewModel();
                model.SiteId             = selectedSite.Id.ToString();
                model.NewResource        = resourceModel;
                model.NewResource.SiteId = model.SiteId;

                if (exists)
                {
                    ModelState.AddModelError("resourcenameinuseerror", sr["Identity Resource name is already in use"]);
                }


                return(View("EditResource", model));
            }

            var identityResource = new IdentityResource
            {
                Name                    = resourceModel.Name,
                DisplayName             = resourceModel.DisplayName,
                Description             = resourceModel.Description,
                Enabled                 = resourceModel.Enabled,
                Required                = resourceModel.Required,
                ShowInDiscoveryDocument = resourceModel.ShowInDiscoveryDocument
            };

            await idManager.CreateIdentityResource(selectedSite.Id.ToString(), identityResource);

            var successFormat = sr["The Identity Resource <b>{0}</b> was successfully Created."];

            this.AlertSuccess(string.Format(successFormat, identityResource.Name), true);

            return(RedirectToAction("EditResource", new { siteId = selectedSite.Id.ToString(), resourceName = identityResource.Name }));
        }
        public async Task <IActionResult> EditResource(IdentityItemViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(RedirectToAction("EditResource", new { siteId = model.SiteId, resourceName = model.Name }));
            }

            Guid siteId = siteManager.CurrentSite.Id;

            if (!string.IsNullOrEmpty(model.SiteId) && model.SiteId.Length == 36)
            {
                siteId = new Guid(model.SiteId);
            }
            var selectedSite = await siteManager.GetSiteForDataOperations(siteId);

            var resource = await idManager.FetchIdentityResource(selectedSite.Id.ToString(), model.Name);

            if (resource == null)
            {
                this.AlertDanger(sr["API Resource not found"], true);
                return(RedirectToAction("Index", new { siteId = selectedSite.Id.ToString() }));
            }

            resource.Description             = model.Description;
            resource.DisplayName             = model.DisplayName;
            resource.Emphasize               = model.Emphasize;
            resource.Enabled                 = model.Enabled;
            resource.Required                = model.Required;
            resource.ShowInDiscoveryDocument = model.ShowInDiscoveryDocument;
            await idManager.UpdateIdentityResource(selectedSite.Id.ToString(), resource);

            var successFormat = sr["The Identity Resource <b>{0}</b> was successfully updated."];

            this.AlertSuccess(string.Format(successFormat, resource.Name), true);

            return(RedirectToAction("EditResource", new { siteId = selectedSite.Id.ToString(), resourceName = resource.Name }));
        }