public SiteSettingInfo GetSiteSetting()
        {
            var settings               = _siteSettingRepository.GetSettingsAsDictionary();
            var allLanguages           = _languageManager.GetAllLanguages();
            var allPages               = GetPages();
            var allAuthenticationTypes = SMTPAuthentication.GetSmtpAuthentications();
            var allThemes              = GetThemes();
            var allLayouts             = _layoutManager.GetPageLayouts();


            var strSiteLanguage              = settings[nameof(SiteSettingInfo.SiteLanguage)];
            var strHomePageId                = settings[nameof(SiteSettingInfo.HomePageId)];
            var strLoginPageId               = settings[nameof(SiteSettingInfo.LoginPageId)];
            var strRegistrationPageId        = settings[nameof(SiteSettingInfo.RegistrationPageId)];
            var strRedirectAfterLoginPageId  = settings[nameof(SiteSettingInfo.RedirectAfterLogin)];
            var strRedirectAfterLogoutPageId = settings[nameof(SiteSettingInfo.RedirectAfterLogout)];

            var strSMTPAuthentication = settings[nameof(SiteSettingInfo.SmtpAuthentication)];
            var strSMTPEnableSSL      = settings[nameof(SiteSettingInfo.SmtpEnableSSL)];

            var strDefaultLayoutId      = settings[nameof(SiteSettingInfo.DefaultLayoutId)];
            var strDefaultTheme         = settings[nameof(SiteSettingInfo.DefaultTheme)];
            var strDefaultAdminLayoutId = settings[nameof(SiteSettingInfo.DefaultAdminLayoutId)];
            var strDefaultAdminTheme    = settings[nameof(SiteSettingInfo.DefaultAdminTheme)];


            var strRegistrationEnabled = settings[nameof(SiteSettingInfo.RegistrationEnabled)];
            var strEnableFacebookAuth  = settings[nameof(SiteSettingInfo.EnableFacebookAuth)];
            var strEnableGoogleAuth    = settings[nameof(SiteSettingInfo.EnableGoogleAuth)];
            var strEnableTwitterAuth   = settings[nameof(SiteSettingInfo.EnableTwitterAuth)];

            var siteSettings = new SiteSettingInfo()
            {
                SiteName        = settings[nameof(SiteSettingInfo.SiteName)],
                SiteDescription = settings[nameof(SiteSettingInfo.SiteDescription)],
                SiteAdminEmail  = settings[nameof(SiteSettingInfo.SiteAdminEmail)],
                SiteRoot        = settings[nameof(SiteSettingInfo.SiteRoot)],
                SiteHeaderTags  = settings[nameof(SiteSettingInfo.SiteHeaderTags)],
                SiteLanguage    = allLanguages.FirstOrDefault(l =>
                                                              string.Equals(l.CultureCode, strSiteLanguage, StringComparison.InvariantCultureIgnoreCase)),

                HomePage            = !string.IsNullOrEmpty(strHomePageId) ? allPages.FirstOrDefault(p => p.Id == Guid.Parse(strHomePageId)) : null,
                LoginPage           = !string.IsNullOrEmpty(strLoginPageId) ? allPages.FirstOrDefault(p => p.Id == Guid.Parse(strLoginPageId)) : null,
                RegistrationPage    = !string.IsNullOrEmpty(strRegistrationPageId) ? allPages.FirstOrDefault(p => p.Id == Guid.Parse(strRegistrationPageId)) : null,
                RedirectAfterLogin  = !string.IsNullOrEmpty(strRedirectAfterLoginPageId) ? allPages.FirstOrDefault(p => p.Id == Guid.Parse(strRedirectAfterLoginPageId)) : null,
                RedirectAfterLogout = !string.IsNullOrEmpty(strRedirectAfterLogoutPageId) ? allPages.FirstOrDefault(p => p.Id == Guid.Parse(strRedirectAfterLogoutPageId)) : null,

                SmtpServerAndPort  = settings[nameof(SiteSettingInfo.SmtpServerAndPort)],
                SmtpAuthentication = allAuthenticationTypes.FirstOrDefault(at => string.Equals(at.Name, strSMTPAuthentication, StringComparison.InvariantCultureIgnoreCase)),
                SmtpEnableSSL      = !string.IsNullOrEmpty(strSMTPEnableSSL) && bool.Parse(strSMTPEnableSSL),
                SmtpUsername       = settings[nameof(SiteSettingInfo.SmtpUsername)],
                SmtpPassword       = settings[nameof(SiteSettingInfo.SmtpPassword)],

                DefaultLayout      = !string.IsNullOrEmpty(strDefaultLayoutId) ? allLayouts.FirstOrDefault(l => l.Id == Guid.Parse(strDefaultLayoutId)) : null,
                DefaultAdminLayout = !string.IsNullOrEmpty(strDefaultAdminLayoutId) ? allLayouts.FirstOrDefault(l => l.Id == Guid.Parse(strDefaultAdminLayoutId)) : null,
                DefaultTheme       = !string.IsNullOrEmpty(strDefaultTheme) ? allThemes.FirstOrDefault(t => t.Id == strDefaultTheme) : null,
                DefaultAdminTheme  = !string.IsNullOrEmpty(strDefaultAdminTheme) ? allThemes.FirstOrDefault(t => t.Id == strDefaultAdminTheme) : null,

                RegistrationEnabled   = !string.IsNullOrEmpty(strRegistrationEnabled) && bool.Parse(strRegistrationEnabled),
                EnableFacebookAuth    = !string.IsNullOrEmpty(strEnableFacebookAuth) && bool.Parse(strEnableFacebookAuth),
                EnableGoogleAuth      = !string.IsNullOrEmpty(strEnableGoogleAuth) && bool.Parse(strEnableGoogleAuth),
                EnableTwitterAuth     = !string.IsNullOrEmpty(strEnableTwitterAuth) && bool.Parse(strEnableTwitterAuth),
                FacebookAppId         = settings[nameof(SiteSettingInfo.FacebookAppId)],
                FacebookAppSecret     = settings[nameof(SiteSettingInfo.FacebookAppSecret)],
                GoogleClientId        = settings[nameof(SiteSettingInfo.GoogleClientId)],
                GoogleClientSecret    = settings[nameof(SiteSettingInfo.GoogleClientSecret)],
                TwitterConsumerKey    = settings[nameof(SiteSettingInfo.TwitterConsumerKey)],
                TwitterConsumerSecret = settings[nameof(SiteSettingInfo.TwitterConsumerSecret)],
            };

            return(siteSettings);
        }
Esempio n. 2
0
        public void ConfigureAdmin(IAdminBuilder adminBuilder)
        {
            adminBuilder.RegisterForm <SiteSettingInfo, SiteSettingAdminService>(formBuilder =>
            {
                formBuilder.Title = "Site Settings";
                formBuilder
                .AddFieldSet("General", fieldBuilder =>
                {
                    fieldBuilder
                    .AddField(f => f.SiteName)
                    .AddField(f => f.SiteDescription, option => option.FieldType = FieldType.TextArea)
                    .AddField(f => f.SiteAdminEmail, option => option.FieldType  = FieldType.EmailAddress)
                    .AddField(f => f.SiteRoot)
                    .AddField(f => f.SiteHeaderTags)
                    .AddSelectField(f => f.SiteLanguage);
                })
                .AddFieldSet("Page Configuration", fieldBuilder =>
                {
                    fieldBuilder
                    .AddSelectField(f => f.HomePage)
                    .AddSelectField(f => f.LoginPage)
                    .AddSelectField(f => f.RegistrationPage)
                    .AddSelectField(f => f.RedirectAfterLogin)
                    .AddSelectField(f => f.RedirectAfterLogout);
                })
                .AddFieldSet("SMTP", fieldBuilder =>
                {
                    fieldBuilder
                    .AddField(f => f.SmtpServerAndPort)
                    .AddSelectField(f => f.SmtpAuthentication, de => de.Name, option => option.FieldType = FieldType.RadioButton)
                    .AddField(f => f.SmtpEnableSSL)
                    .AddField(f => f.SmtpUsername)
                    .AddField(f => f.SmtpPassword, option => option.FieldType = FieldType.Password);
                })
                .AddFieldSet("Appearance", fieldBuilder =>
                {
                    fieldBuilder
                    .AddSelectField(f => f.DefaultLayout)
                    .AddSelectField(f => f.DefaultTheme)
                    .AddSelectField(f => f.DefaultAdminLayout)
                    .AddSelectField(f => f.DefaultAdminTheme);
                })
                .AddFieldSet("Security", fieldBuilder =>
                {
                    fieldBuilder
                    .AddField(f => f.RegistrationEnabled)
                    .AddField(f => f.EnableGoogleAuth)
                    .AddField(f => f.GoogleClientId)
                    .AddField(f => f.GoogleClientSecret)
                    .AddField(f => f.EnableFacebookAuth)
                    .AddField(f => f.FacebookAppId)
                    .AddField(f => f.FacebookAppSecret)
                    .AddField(f => f.EnableTwitterAuth)
                    .AddField(f => f.TwitterConsumerKey)
                    .AddField(f => f.TwitterConsumerSecret);
                });

                formBuilder.Property(f => f.EnableGoogleAuth)
                .ShowOn(f => f.RegistrationEnabled)
                .ValidateOn(f => f.RegistrationEnabled);

                formBuilder.Property(f => f.EnableFacebookAuth)
                .ShowOn(f => f.RegistrationEnabled)
                .ValidateOn(f => f.RegistrationEnabled);

                formBuilder.Property(f => f.EnableTwitterAuth)
                .ShowOn(f => f.RegistrationEnabled)
                .ValidateOn(f => f.RegistrationEnabled);

                formBuilder.Property(f => f.GoogleClientId)
                .ShowOn(f => f.EnableGoogleAuth)
                .ValidateOn(f => f.EnableGoogleAuth);

                formBuilder.Property(f => f.GoogleClientSecret)
                .ShowOn(f => f.EnableGoogleAuth)
                .ValidateOn(f => f.EnableGoogleAuth);

                formBuilder.Property(f => f.FacebookAppId)
                .ShowOn(f => f.EnableFacebookAuth)
                .ValidateOn(f => f.EnableFacebookAuth);

                formBuilder.Property(f => f.FacebookAppSecret)
                .ShowOn(f => f.EnableFacebookAuth)
                .ValidateOn(f => f.EnableFacebookAuth);

                formBuilder.Property(f => f.TwitterConsumerKey)
                .ShowOn(f => f.EnableTwitterAuth)
                .ValidateOn(f => f.EnableTwitterAuth);

                formBuilder.Property(f => f.TwitterConsumerSecret)
                .ShowOn(f => f.EnableTwitterAuth)
                .ValidateOn(f => f.EnableTwitterAuth);


                formBuilder.Property(f => f.SiteLanguage).HasLookup(
                    sp => sp.GetService <ILanguageManager>().GetAllLanguages(false),
                    ke => ke.CultureCode,
                    de => $"{de.EnglishName}");

                formBuilder.Property(f => f.HomePage).HasLookup(
                    sp => sp.GetService <SiteSettingAdminService>().GetPages(),
                    ke => ke.Id,
                    de => de.PageTranslation.Count > 0 ? de.PageTranslation.FirstOrDefault().Name : string.Empty);

                formBuilder.Property(f => f.LoginPage).HasLookup(
                    sp => sp.GetService <SiteSettingAdminService>().GetPages(),
                    ke => ke.Id,
                    de => de.PageTranslation.Count > 0 ? de.PageTranslation.FirstOrDefault().Name : string.Empty);

                formBuilder.Property(f => f.RegistrationPage).HasLookup(
                    sp => sp.GetService <SiteSettingAdminService>().GetPages(),
                    ke => ke.Id,
                    de => de.PageTranslation.Count > 0 ? de.PageTranslation.FirstOrDefault().Name : string.Empty);

                formBuilder.Property(f => f.RedirectAfterLogin).HasLookup(
                    sp => sp.GetService <SiteSettingAdminService>().GetPages(),
                    ke => ke.Id,
                    de => de.PageTranslation.Count > 0 ? de.PageTranslation.FirstOrDefault().Name : string.Empty);

                formBuilder.Property(f => f.RedirectAfterLogout).HasLookup(
                    sp => sp.GetService <SiteSettingAdminService>().GetPages(),
                    ke => ke.Id,
                    de => de.PageTranslation.Count > 0 ? de.PageTranslation.FirstOrDefault().Name : string.Empty);

                formBuilder.Property(f => f.SmtpAuthentication).HasLookup(
                    sp => SMTPAuthentication.GetSmtpAuthentications(),
                    ke => ke.Id,
                    de => de.Name);

                formBuilder.Property(f => f.DefaultLayout).HasLookup(
                    sp => sp.GetService <ILayoutManager>().GetPageLayouts(),
                    ke => ke.Id,
                    de => de.Name);

                formBuilder.Property(f => f.DefaultAdminLayout).HasLookup(
                    sp => sp.GetService <ILayoutManager>().GetPageLayouts(),
                    ke => ke.Id,
                    de => de.Name);

                formBuilder.Property(f => f.DefaultTheme).HasLookup(
                    sp => sp.GetService <SiteSettingAdminService>().GetThemes(),
                    ke => ke.Id,
                    de => de.Value);

                formBuilder.Property(f => f.DefaultAdminTheme).HasLookup(
                    sp => sp.GetService <SiteSettingAdminService>().GetThemes(),
                    ke => ke.Id,
                    de => de.Value);
            });
        }
        public SiteSettingInfo UpdateSettingInfo(SiteSettingInfo settingInfo)
        {
            var settings = _siteSettingRepository.GetSettings();
            var allAuthenticationTypes = SMTPAuthentication.GetSmtpAuthentications();

            settings.First(s => s.SettingName == nameof(SiteSettingInfo.SiteName)).SettingValue        = settingInfo.SiteName;
            settings.First(s => s.SettingName == nameof(SiteSettingInfo.SiteDescription)).SettingValue = settingInfo.SiteDescription;
            settings.First(s => s.SettingName == nameof(SiteSettingInfo.SiteAdminEmail)).SettingValue  = settingInfo.SiteAdminEmail;
            settings.First(s => s.SettingName == nameof(SiteSettingInfo.SiteRoot)).SettingValue        = settingInfo.SiteRoot;
            settings.First(s => s.SettingName == nameof(SiteSettingInfo.SiteHeaderTags)).SettingValue  = settingInfo.SiteHeaderTags;

            if (settingInfo.SiteLanguage != null)
            {
                settings.First(s => s.SettingName == nameof(SiteSettingInfo.SiteLanguage)).SettingValue = settingInfo.SiteLanguage.CultureCode;
            }

            if (settingInfo.HomePage != null)
            {
                settings.First(s => s.SettingName == nameof(SiteSettingInfo.HomePageId)).SettingValue = settingInfo.HomePage.Id.ToString();
            }
            if (settingInfo.LoginPage != null)
            {
                settings.First(s => s.SettingName == nameof(SiteSettingInfo.LoginPageId)).SettingValue = settingInfo.LoginPage.Id.ToString();
            }
            if (settingInfo.RegistrationPage != null)
            {
                settings.First(s => s.SettingName == nameof(SiteSettingInfo.RegistrationPageId)).SettingValue = settingInfo.RegistrationPage.Id.ToString();
            }
            if (settingInfo.RedirectAfterLogin != null)
            {
                settings.First(s => s.SettingName == nameof(SiteSettingInfo.RedirectAfterLogin)).SettingValue = settingInfo.RedirectAfterLogin.Id.ToString();
            }
            if (settingInfo.RedirectAfterLogout != null)
            {
                settings.First(s => s.SettingName == nameof(SiteSettingInfo.RedirectAfterLogout)).SettingValue = settingInfo.RedirectAfterLogout.Id.ToString();
            }

            settings.First(s => s.SettingName == nameof(SiteSettingInfo.SmtpServerAndPort)).SettingValue = settingInfo.SmtpServerAndPort;
            if (settingInfo.SmtpAuthentication != null)
            {
                settings.First(s => s.SettingName == nameof(SiteSettingInfo.SmtpAuthentication)).SettingValue = allAuthenticationTypes.First(at => at.Id == settingInfo.SmtpAuthentication.Id).Name;
            }
            settings.First(s => s.SettingName == nameof(SiteSettingInfo.SmtpEnableSSL)).SettingValue = settingInfo.SmtpEnableSSL.ToString().ToLower();
            settings.First(s => s.SettingName == nameof(SiteSettingInfo.SmtpUsername)).SettingValue  = settingInfo.SmtpUsername;
            settings.First(s => s.SettingName == nameof(SiteSettingInfo.SmtpPassword)).SettingValue  = settingInfo.SmtpPassword;

            if (settingInfo.DefaultLayout != null)
            {
                settings.First(s => s.SettingName == nameof(SiteSettingInfo.DefaultLayoutId)).SettingValue = settingInfo.DefaultLayout.Id.ToString();
            }
            if (settingInfo.DefaultAdminLayout != null)
            {
                settings.First(s => s.SettingName == nameof(SiteSettingInfo.DefaultAdminLayoutId)).SettingValue = settingInfo.DefaultAdminLayout.Id.ToString();
            }
            if (settingInfo.DefaultTheme != null)
            {
                settings.First(s => s.SettingName == nameof(SiteSettingInfo.DefaultTheme)).SettingValue = settingInfo.DefaultTheme.Id;
            }
            if (settingInfo.DefaultAdminTheme != null)
            {
                settings.First(s => s.SettingName == nameof(SiteSettingInfo.DefaultAdminTheme)).SettingValue = settingInfo.DefaultAdminTheme.Id;
            }

            settings.First(s => s.SettingName == nameof(SiteSettingInfo.RegistrationEnabled)).SettingValue   = settingInfo.RegistrationEnabled.ToString().ToLower();
            settings.First(s => s.SettingName == nameof(SiteSettingInfo.EnableFacebookAuth)).SettingValue    = settingInfo.EnableFacebookAuth.ToString().ToLower();
            settings.First(s => s.SettingName == nameof(SiteSettingInfo.EnableGoogleAuth)).SettingValue      = settingInfo.EnableGoogleAuth.ToString().ToLower();
            settings.First(s => s.SettingName == nameof(SiteSettingInfo.EnableTwitterAuth)).SettingValue     = settingInfo.EnableTwitterAuth.ToString().ToLower();
            settings.First(s => s.SettingName == nameof(SiteSettingInfo.FacebookAppId)).SettingValue         = settingInfo.FacebookAppId;
            settings.First(s => s.SettingName == nameof(SiteSettingInfo.FacebookAppSecret)).SettingValue     = settingInfo.FacebookAppSecret;
            settings.First(s => s.SettingName == nameof(SiteSettingInfo.GoogleClientId)).SettingValue        = settingInfo.GoogleClientId;
            settings.First(s => s.SettingName == nameof(SiteSettingInfo.GoogleClientSecret)).SettingValue    = settingInfo.GoogleClientSecret;
            settings.First(s => s.SettingName == nameof(SiteSettingInfo.TwitterConsumerKey)).SettingValue    = settingInfo.TwitterConsumerKey;
            settings.First(s => s.SettingName == nameof(SiteSettingInfo.TwitterConsumerSecret)).SettingValue = settingInfo.TwitterConsumerSecret;

            _siteSettingRepository.UpdateSetting(settings);

            return(GetSiteSetting());
        }