public async Task <IActionResult> Captcha(
            Guid?siteGuid,
            int slp = 1)
        {
            ISiteSettings selectedSite;

            // only server admin site can edit other sites settings
            if ((siteGuid.HasValue) && (siteGuid.Value != Guid.Empty) && (siteGuid.Value != siteManager.CurrentSite.SiteGuid) && (siteManager.CurrentSite.IsServerAdminSite))
            {
                selectedSite = await siteManager.Fetch(siteGuid.Value);

                ViewData["Title"] = string.Format(CultureInfo.CurrentUICulture, "{0} - Captcha Settings", selectedSite.SiteName);
            }
            else
            {
                selectedSite      = siteManager.CurrentSite;
                ViewData["Title"] = "Captcha Settings";
            }

            CaptchaSettingsViewModel model = new CaptchaSettingsViewModel();

            model.SiteGuid                     = selectedSite.SiteGuid;
            model.SiteId                       = selectedSite.SiteId;
            model.RecaptchaPrivateKey          = selectedSite.RecaptchaPrivateKey;
            model.RecaptchaPublicKey           = selectedSite.RecaptchaPublicKey;
            model.RequireCaptchaOnLogin        = selectedSite.CaptchaOnLogin;
            model.RequireCaptchaOnRegistration = selectedSite.CaptchaOnRegistration;

            return(View("CaptchaSettings", model));
        }
        public async Task <ActionResult> Captcha(CaptchaSettingsViewModel model)
        {
            ISiteSettings selectedSite = null;

            if (model.SiteGuid == siteManager.CurrentSite.SiteGuid)
            {
                selectedSite      = siteManager.CurrentSite;
                ViewData["Title"] = "Captcha Settings";
            }
            else if (siteManager.CurrentSite.IsServerAdminSite)
            {
                selectedSite = await siteManager.Fetch(model.SiteGuid);

                ViewData["Title"] = string.Format(CultureInfo.CurrentUICulture, "{0} - Captcha Settings", selectedSite.SiteName);
            }

            if (selectedSite == null)
            {
                this.AlertDanger("oops something went wrong.", true);

                return(RedirectToAction("Index"));
            }

            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            if (model.SiteGuid == Guid.Empty)
            {
                this.AlertDanger("oops something went wrong, site was not found.", true);

                return(RedirectToAction("Index"));
            }

            //model.SiteId = Site.SiteSettings.SiteId;
            //model.SiteGuid = Site.SiteSettings.SiteGuid;


            selectedSite.RecaptchaPublicKey    = model.RecaptchaPublicKey;
            selectedSite.RecaptchaPrivateKey   = model.RecaptchaPrivateKey;
            selectedSite.CaptchaOnRegistration = model.RequireCaptchaOnRegistration;
            selectedSite.CaptchaOnLogin        = model.RequireCaptchaOnLogin;

            bool result = await siteManager.Save(selectedSite);

            if (result)
            {
                this.AlertSuccess(string.Format("Captcha Settings for <b>{0}</b> wwas successfully updated.",
                                                selectedSite.SiteName), true);
            }


            if ((siteManager.CurrentSite.IsServerAdminSite) &&
                (siteManager.CurrentSite.SiteGuid != selectedSite.SiteGuid)
                )
            {
                return(RedirectToAction("Captcha", new { siteGuid = model.SiteGuid }));
            }

            return(RedirectToAction("Captcha"));
        }