コード例 #1
0
ファイル: SiteRepository.cs プロジェクト: ym1100/CoolCat
        public SiteSettingsViewModel GetSiteSettings()
        {
            var sql = "SELECT * FROM SiteSettings";

            var keyPairs = _dbConnection.Query <KeyValueViewModel>(sql);

            var result = new SiteSettingsViewModel();

            if (keyPairs.Any(p => p.Key == SiteSettingKeyConst.SiteCSS))
            {
                result.SiteCSS = keyPairs.First(p => p.Key == SiteSettingKeyConst.SiteCSS).Value;
            }

            if (keyPairs.Any(p => p.Key == SiteSettingKeyConst.SiteTemplateId))
            {
                var val = keyPairs.First(p => p.Key == SiteSettingKeyConst.SiteTemplateId).Value;

                Guid guidVal;
                if (!string.IsNullOrWhiteSpace(val) && Guid.TryParse(val, out guidVal))
                {
                    result.SiteTemplateId = guidVal;
                }
            }

            return(result);
        }
コード例 #2
0
        public async Task <ActionResult> IndexPost(SiteSettingsViewModel model)
        {
            var record = model.Set(await _siteSettingsService.Get());

            _siteSettingsService.Update(record);
            return(this.Success());
        }
コード例 #3
0
        public override async Task <IDisplayResult> UpdateAsync(ISite site, UpdateEditorContext context)
        {
            if (context.GroupId == GroupId)
            {
                var model = new SiteSettingsViewModel();

                if (await context.Updater.TryUpdateModelAsync(model, Prefix))
                {
                    site.SiteName          = model.SiteName;
                    site.PageTitleFormat   = model.PageTitleFormat;
                    site.BaseUrl           = model.BaseUrl;
                    site.TimeZoneId        = model.TimeZone;
                    site.PageSize          = model.PageSize;
                    site.UseCdn            = model.UseCdn;
                    site.CdnBaseUrl        = model.CdnBaseUrl;
                    site.ResourceDebugMode = model.ResourceDebugMode;
                    site.AppendVersion     = model.AppendVersion;
                }

                if (!String.IsNullOrEmpty(site.BaseUrl) && !Uri.TryCreate(site.BaseUrl, UriKind.Absolute, out var baseUrl))
                {
                    context.Updater.ModelState.AddModelError(Prefix, nameof(site.BaseUrl), S["The Base url must be a fully qualified URL."]);
                }

                if (context.Updater.ModelState.IsValid)
                {
                    await _shellHost.ReloadShellContextAsync(_shellSettings);
                }
            }

            return(Edit(site));
        }
コード例 #4
0
        public async Task <IViewComponentResult> InvokeAsync(string siteId)
        {
            SiteSettingsViewModel        model = new SiteSettingsViewModel();
            IEnumerable <SelectListItem> pages = new List <SelectListItem>();

            if (!string.IsNullOrEmpty(siteId))
            {
                var settingsResult = await _siteManager.GetSiteSettingsAsync(siteId);

                var pagesResult = await _pageManager.GetPagesAsync(siteId);

                if (settingsResult != null && pagesResult != null)
                {
                    var dictionary = settingsResult.ToDictionary(x => x.FieldName, x => x.Value);
                    model = dictionary.ConvertTo <SiteSettingsViewModel>();

                    pages = pagesResult.Select(x => new SelectListItem
                    {
                        Value = x.Id,
                        Text  = x.Title
                    });
                    pages = DefaultPage.Concat(pages);
                }
                ;
            }
            if (model == null)
            {
                model = new SiteSettingsViewModel();
            }

            ViewData["SiteId"] = siteId;
            ViewData["Pages"]  = pages;

            return(View(model));
        }
コード例 #5
0
        public void Update(SiteSettingsViewModel viewModel)
        {
            var settings = _repository.Get(x => x.Id == viewModel.Id);

            settings.Status       = viewModel.Status;
            settings.DateOfUpdate = DateTime.Now;
            settings.IsItDeleted  = viewModel.IsItDeleted;

            settings.AboutUs   = viewModel.AboutUs;
            settings.OurGoals  = viewModel.OurGoals;
            settings.Principle = viewModel.Principle;
            settings.Logo      = viewModel.Logo;
            settings.Map       = viewModel.Map;
            settings.Phone     = viewModel.Phone;
            settings.Adress    = viewModel.Adress;
            settings.Email     = viewModel.Email;
            settings.Fax       = viewModel.Fax;


            settings.Facebook  = viewModel.Facebook;
            settings.Twitter   = viewModel.Twitter;
            settings.Instagram = viewModel.Instagram;
            settings.Youtube   = viewModel.Youtube;


            settings.Slider1 = viewModel.Slider1;
            settings.Slider2 = viewModel.Slider2;
            settings.Slider3 = viewModel.Slider3;
            settings.Slider4 = viewModel.Slider4;


            _repository.Update(settings);
        }
コード例 #6
0
        public void Add(SiteSettingsViewModel viewModel)
        {
            _repository.Add(new SiteSettings
            {
                CreationDate = DateTime.Now,
                IsItDeleted  = false,
                Status       = true,
                SiteLanguage = viewModel.SiteLanguage,

                AboutUs   = viewModel.AboutUs,
                OurGoals  = viewModel.OurGoals,
                Principle = viewModel.Principle,
                Logo      = "/Areas/Login/Assets/images/" + viewModel.Logo,
                Map       = viewModel.Map,
                Phone     = viewModel.Phone,
                Adress    = viewModel.Adress,
                Email     = viewModel.Email,
                Fax       = viewModel.Fax,


                Facebook  = viewModel.Facebook,
                Twitter   = viewModel.Twitter,
                Instagram = viewModel.Twitter,
                Youtube   = viewModel.Youtube,

                Slider1 = "/Areas/Login/Assets/images/" + viewModel.Slider1,
                Slider2 = "/Areas/Login/Assets/images/" + viewModel.Slider2,
                Slider3 = "/Areas/Login/Assets/images/" + viewModel.Slider3,
                Slider4 = "/Areas/Login/Assets/images/" + viewModel.Slider4,
            });
        }
コード例 #7
0
        public RepositoryResponse <SiteSettingsViewModel> InitSettings()
        {
            SiteSettingsViewModel settings = new SiteSettingsViewModel()
            {
                Lang     = _lang,
                ThemeId  = 1,
                Cultures = new List <Swastika.Domain.Core.Models.SupportedCulture>()
                {
                    new Swastika.Domain.Core.Models.SupportedCulture()
                    {
                        Specificulture = "en-us",
                        FullName       = "United States",
                        Description    = "United States",
                        Icon           = "flag-icon-us",
                        Alias          = "US"
                    },
                    new Swastika.Domain.Core.Models.SupportedCulture()
                    {
                        Specificulture = "vi-vn",
                        FullName       = "Vietnam",
                        Description    = "Việt Nam",
                        Icon           = "flag-icon-vn",
                        Alias          = "VN"
                    }
                },
                PageTypes = Enum.GetNames(typeof(SWCmsConstants.CateType)).ToList()
            };

            return(new RepositoryResponse <SiteSettingsViewModel>()
            {
                IsSucceed = true,
                Data = settings
            });
        }
コード例 #8
0
        public async Task <IActionResult> Settings(int id)
        {
            var site = await _siteLookupService.GetByIdAsync(id);

            PageTitle = $"Site management - {site.Name}";

            var settingGroups = SiteSettingDefinitions.DefinitionDictionary
                                .GroupBy(_ => _.Value.Category)
                                .Select(_ => new SiteSettingGroup()
            {
                Name = _.Key,
                SettingInformations = _.Select(i => new SiteSettingInformation()
                {
                    SiteSetting = site.Settings.SingleOrDefault(s => s.Key == i.Key)
                                  ?? new SiteSetting(),
                    Definition = i.Value,
                    Key        = i.Key
                }).ToList()
            })
                                .ToList();

            var viewModel = new SiteSettingsViewModel()
            {
                Id = site.Id,
                SiteSettingGroups = settingGroups
            };

            return(View(viewModel));
        }
コード例 #9
0
        public ActionResult Site(SiteSettingsViewModel settings)
        {
            _settingService.SaveSetting <SiteSettings>(settings.SiteSettings);
            _settingService.SaveSetting <TenantSettings>(settings.TenantSettings);

            return(View(settings));
        }
コード例 #10
0
ファイル: SiteRepository.cs プロジェクト: Eric-xgc/Mystique
        public SiteSettingsViewModel GetSiteSettings()
        {
            var sql = "SELECT * FROM SiteSettings";

            var rows = _dbHelper.ExecuteDataTable(sql).Rows.Cast <DataRow>().ToList();

            var result = new SiteSettingsViewModel();

            if (rows.Any(p => p["Key"].ToString() == SiteSettingKeyConst.SiteCSS))
            {
                result.SiteCSS = rows.FirstOrDefault(p => p["Key"].ToString() == SiteSettingKeyConst.SiteCSS)?.Field <string>("Value");
            }

            if (rows.Any(p => p["Key"].ToString() == SiteSettingKeyConst.SiteTemplateId))
            {
                var val = rows.FirstOrDefault(p => p["Key"].ToString() == SiteSettingKeyConst.SiteTemplateId)?.Field <string>("Value");

                Guid guidVal;
                if (!string.IsNullOrWhiteSpace(val) && Guid.TryParse(val, out guidVal))
                {
                    result.SiteTemplateId = guidVal;
                }
            }

            return(result);
        }
コード例 #11
0
        public JsonResult GetSettings()
        {
            var viewModel = new SiteSettingsViewModel();

            viewModel.GetSettings();

            return(Json(JsonConvert.SerializeObject(viewModel), JsonRequestBehavior.AllowGet));
        }
コード例 #12
0
        // GET: Admin/CallToAction
        public ActionResult Site()
        {
            var settings = new SiteSettingsViewModel();

            settings.SiteSettings   = _settingService.LoadSetting <SiteSettings>();
            settings.TenantSettings = _settingService.LoadSetting <TenantSettings>();

            return(View(settings));
        }
コード例 #13
0
        public override async Task<IViewProviderResult> BuildUpdateAsync(SettingsIndex viewModel,
            IViewProviderContext context)
        {
            var model = new SiteSettingsViewModel();

            // Validate model
            if (!await context.Updater.TryUpdateModelAsync(model))
            {
                return await BuildEditAsync(viewModel, context);
            }

            // Update settings
            if (context.Updater.ModelState.IsValid)
            {

                var homeRoutes = _homeRouteManager.GetDefaultRoutes();

                var settings = await _siteSettingsStore.GetAsync();
                if (settings != null)
                {
                    settings.SiteName = model.SiteName;
                    settings.TimeZone = model.TimeZone;
                    settings.DateTimeFormat = model.DateTimeFormat;
                    settings.Culture = model.Culture;
                    settings.Theme = model.Theme;
                    settings.HomeRoute = homeRoutes?.FirstOrDefault(r => r.Id.Equals(model.HomeRoute, StringComparison.InvariantCultureIgnoreCase));
                }
                else
                {
                    // Create new settings
                    settings = new SiteSettings()
                    {
                        SiteName = model.SiteName,
                        TimeZone = model.TimeZone,
                        DateTimeFormat = model.DateTimeFormat,
                        Culture = model.Culture,
                        Theme = model.Theme,
                        HomeRoute = homeRoutes?.FirstOrDefault(r => r.Id.Equals(model.HomeRoute, StringComparison.InvariantCultureIgnoreCase))
                    };

                }

                // Update settings
                var result = await _siteSettingsStore.SaveAsync(settings);
                if (result != null)
                {
                    // Recycle shell context to ensure changes take effect
                    _platoHost.RecycleShellContext(_shellSettings);

                }
            }

            return await BuildEditAsync(viewModel, context);
            
        }
コード例 #14
0
        public override async Task <IDisplayResult> UpdateAsync(ISite site, IUpdateModel updater, string groupId)
        {
            if (groupId == "general")
            {
                var model = new SiteSettingsViewModel();

                if (await updater.TryUpdateModelAsync(model, Prefix, t => t.SiteName))
                {
                    site.SiteName = model.SiteName;
                }
            }

            return(Edit(site));
        }
コード例 #15
0
        public async Task <IActionResult> Post([FromBody] SiteSettingsViewModel model)
        {
            try
            {
                await _siteSettingsService.Set(model.SiteSettings);

                await _siteSettingsService.SetSiteProfile(model.SiteProfile);

                return(Ok());
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
コード例 #16
0
        public RepositoryResponse <SiteSettingsViewModel> Settings(int id)
        {
            SiteSettingsViewModel settings = new SiteSettingsViewModel()
            {
                Lang     = _lang,
                ThemeId  = GlobalConfigurationService.GetLocalInt(SWCmsConstants.ConfigurationKeyword.ThemeId, _lang),
                Cultures = GlobalLanguageService.ListSupportedCulture
            };

            return(new RepositoryResponse <SiteSettingsViewModel>()
            {
                IsSucceed = true,
                Data = settings
            });
        }
コード例 #17
0
        public override async Task <IDisplayResult> UpdateAsync(ISite site, UpdateEditorContext context)
        {
            if (context.GroupId == GroupId)
            {
                var model = new SiteSettingsViewModel();

                if (await context.Updater.TryUpdateModelAsync(model, Prefix, t => t.SiteName, t => t.TimeZone))
                {
                    site.SiteName = model.SiteName;
                    site.TimeZone = model.TimeZone;
                }
            }

            return(Edit(site));
        }
コード例 #18
0
        public IActionResult Index()
        {
            var viewModel = new SiteSettingsViewModel()
            {
                StatusMessage = StatusMessage
            };

            // Add Titles
            viewModel.Titles = _context.Titles.Where(c => c.Id > 0).OrderBy(x => x.Value).ToList();
            // Add Profiles (= position)
            viewModel.Profiles = _context.Profiles.Where(cw => cw.Id > 0).OrderBy(x => x.Role).ToList();
            // Add role types
            viewModel.RoleTypes = _context.RoleType.Where(cw => cw.Id > 0).OrderBy(x => x.Type).ToList();

            return(View(viewModel));
        }
コード例 #19
0
        public RepositoryResponse <SiteSettingsViewModel> Settings()
        {
            SiteSettingsViewModel settings = new SiteSettingsViewModel()
            {
                Lang      = _lang,
                ThemeId   = GlobalConfigurationService.Instance.GetLocalInt(SWCmsConstants.ConfigurationKeyword.ThemeId, _lang),
                Cultures  = CommonRepository.Instance.LoadCultures(),
                PageTypes = Enum.GetNames(typeof(SWCmsConstants.CateType)).ToList()
            };

            return(new RepositoryResponse <SiteSettingsViewModel>()
            {
                IsSucceed = true,
                Data = settings
            });
        }
コード例 #20
0
        public async Task <ActionResult> SaveSiteSettings(string siteId, SiteSettingsViewModel model)
        {
            if (ModelState.IsValid)
            {
                var dictionary = model.ToDictionary();
                dictionary["GoogleTrackingId"] = dictionary["GoogleTrackingId"] ?? string.Empty;
                var settings = dictionary.ConvertTo <SiteSetting>(x => new SiteSetting {
                    FieldName = x.Key, Value = x.Value.ToString()
                });

                await _siteManager.SaveSiteSettingsAsync(siteId, settings);

                return(Ok(model));
            }

            return(ErrorView(ModelState));
        }
コード例 #21
0
        public async Task <IActionResult> IndexPost(SiteSettingsViewModel viewModel)
        {
            // Ensure we have permission
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageGeneralSettings))
            {
                return(Unauthorized());
            }

            // Execute view providers ProvideUpdateAsync method
            await _viewProvider.ProvideUpdateAsync(new SettingsIndex(), this);

            // Add alert
            _alerter.Success(T["Settings Updated Successfully!"]);

            // Redirect
            return(RedirectToAction(nameof(Index)));
        }
コード例 #22
0
        public async Task <RepositoryResponse <JObject> > AllSettingsAsync()
        {
            var cultures = CommonRepository.Instance.LoadCultures();
            var culture  = cultures.FirstOrDefault(c => c.Specificulture == _lang);

            // Get Settings
            SiteSettingsViewModel settings = new SiteSettingsViewModel()
            {
                Lang      = _lang,
                ThemeId   = GlobalConfigurationService.Instance.GetLocalInt(SWCmsConstants.ConfigurationKeyword.ThemeId, _lang),
                Themes    = InfoThemeViewModel.Repository.GetModelList().Data,
                Cultures  = cultures,
                PageTypes = Enum.GetNames(typeof(SWCmsConstants.CateType)).ToList(),
                Statuses  = Enum.GetNames(typeof(SWStatus)).ToList()
            };

            settings.LangIcon = culture?.Icon ?? GlobalConfigurationService.Instance.CmsConfigurations.Language;

            // Get translator
            var translator = GlobalConfigurationService.Instance.CmsCulture.Translator[_lang]?.ToObject <JObject>();

            // Get Configurations
            var configurations = await ApiConfigurationViewModel.Repository.GetModelListByAsync(a => a.Category == "Site" && a.Specificulture == _lang);

            JObject objConfigurations = new JObject();

            foreach (var cnf in configurations.Data)
            {
                JProperty l = new JProperty(cnf.Keyword, cnf.Value);
                objConfigurations.Add(l);
            }

            JObject result = new JObject()
            {
                new JProperty("settings", JObject.FromObject(settings)),
                new JProperty("translator", translator),
                new JProperty("configurations", JObject.FromObject(configurations))
            };

            return(new RepositoryResponse <JObject>()
            {
                IsSucceed = true,
                Data = result
            });
        }
コード例 #23
0
        public async Task <IActionResult> Edit(SiteSettingsViewModel model)
        {
            if (!ModelState.IsValid)
            {
                _notification.AddErrorToastMessage("لطفا مقادیر را به درستی وارد کنید");
                return(RedirectToAction(nameof(Index)));
            }
            if (model.DollarPrice.Value != (await _db.DollarPriceRepository.GetLastPrice())?.Value)
            {
                await _db.DollarPriceRepository.InsertAsync(new DollarPrice
                {
                    Value = model.DollarPrice.Value
                });
            }
            await _db.SaveChangeAsync();

            _notification.AddSuccessToastMessage("مقادیر ویرایش شد");
            return(RedirectToAction(nameof(Index)));
        }
コード例 #24
0
        public RepositoryResponse <SiteSettingsViewModel> Settings()
        {
            var cultures = CommonRepository.Instance.LoadCultures();
            var culture  = cultures.FirstOrDefault(c => c.Specificulture == _lang);
            SiteSettingsViewModel settings = new SiteSettingsViewModel()
            {
                Lang      = _lang,
                ThemeId   = GlobalConfigurationService.Instance.GetLocalInt(SWCmsConstants.ConfigurationKeyword.ThemeId, _lang),
                Cultures  = cultures,
                PageTypes = Enum.GetNames(typeof(SWCmsConstants.CateType)).ToList()
            };

            settings.LangIcon = culture?.Icon ?? GlobalConfigurationService.Instance.CmsConfigurations.Language;
            return(new RepositoryResponse <SiteSettingsViewModel>()
            {
                IsSucceed = true,
                Data = settings
            });
        }
コード例 #25
0
        public override async Task <IDisplayResult> UpdateAsync(ISite site, UpdateEditorContext context)
        {
            if (context.GroupId == GroupId)
            {
                var model = new SiteSettingsViewModel();

                if (await context.Updater.TryUpdateModelAsync(model, Prefix))
                {
                    site.SiteName          = model.SiteName;
                    site.BaseUrl           = model.BaseUrl;
                    site.TimeZoneId        = model.TimeZone;
                    site.UseCdn            = model.UseCdn;
                    site.CdnBaseUrl        = model.CdnBaseUrl;
                    site.ResourceDebugMode = model.ResourceDebugMode;
                    site.AppendVersion     = model.AppendVersion;

                    await _shellHost.ReloadShellContextAsync(_shellSettings);
                }
            }

            return(Edit(site));
        }
コード例 #26
0
        public override async Task <IDisplayResult> UpdateAsync(ISite site, UpdateEditorContext context)
        {
            if (context.GroupId == GroupId)
            {
                var model = new SiteSettingsViewModel();

                if (await context.Updater.TryUpdateModelAsync(model, Prefix))
                {
                    site.SiteName          = model.SiteName;
                    site.BaseUrl           = model.BaseUrl;
                    site.TimeZoneId        = model.TimeZone;
                    site.Culture           = model.Culture;
                    site.UseCdn            = model.UseCdn;
                    site.ResourceDebugMode = model.ResourceDebugMode;
                }

                // We always reset the tenant for the default culture and also supported cultures to take effect
                await _shellHost.ReloadShellContextAsync(_shellSettings);

                _notifier.Warning(H["The site has been restarted for the settings to take effect"]);
            }

            return(Edit(site));
        }
コード例 #27
0
        public async Task <IActionResult> Settings(SiteSettingsViewModel model)
        {
            var site = await _siteLookupService.GetByIdAsync(model.Id);

            var siteSettings = model.SiteSettingGroups
                               .SelectMany(_ => _.SettingInformations.Select(s => s.SiteSetting))
                               .Where(_ => !string.IsNullOrWhiteSpace(_.Value))
                               .GroupBy(_ => _.Key)
                               .Select(_ => _.First());

            var settingKeys = SiteSettingDefinitions.DefinitionDictionary.Keys.ToList();
            var invalidKeys = siteSettings
                              .Where(_ => !settingKeys.Contains(_.Key))
                              .Select(_ => _.Key);

            if (invalidKeys.Any())
            {
                var keysString = string.Join(", ", invalidKeys);
                _logger.LogError($"Invalid site setting key(s): {keysString}");
                ShowAlertDanger("Invalid site setting.");
                return(RedirectToAction(nameof(Settings), new { id = site.Id }));
            }

            foreach (var siteSetting in siteSettings)
            {
                siteSetting.SiteId = site.Id;

                if (!string.IsNullOrWhiteSpace(siteSetting.Value))
                {
                    var definition = SiteSettingDefinitions.DefinitionDictionary[siteSetting.Key];
                    if (definition.Format == SiteSettingFormat.Boolean)
                    {
                        siteSetting.Value = "True";
                    }
                    else if (definition.Format == SiteSettingFormat.Integer &&
                             !int.TryParse(siteSetting.Value, out int value))
                    {
                        ModelState.AddModelError("", $"Please enter a whole number for {definition.Name}.");
                    }
                }
            }

            if (ModelState.IsValid)
            {
                await _siteService.UpdateSiteSettingsAsync(site.Id, siteSettings);

                ShowAlertSuccess($"Site '{site.Name}' settings successfully updated!");
                return(RedirectToAction(nameof(Settings), new { id = site.Id }));
            }

            var settingGroups = SiteSettingDefinitions.DefinitionDictionary
                                .GroupBy(_ => _.Value.Category)
                                .Select(_ => new SiteSettingGroup()
            {
                Name = _.Key,
                SettingInformations = _.Select(i => new SiteSettingInformation()
                {
                    SiteSetting = siteSettings.SingleOrDefault(s => s.Key == i.Key)
                                  ?? new SiteSetting(),
                    Definition = i.Value,
                    Key        = i.Key
                }).ToList()
            })
                                .ToList();

            var viewModel = new SiteSettingsViewModel()
            {
                Id = site.Id,
                SiteSettingGroups = settingGroups
            };

            PageTitle = $"Site management - {site.Name}";

            return(View(viewModel));
        }
コード例 #28
0
        public ActionResult SiteSettings()
        {
            var model = new SiteSettingsViewModel();

            return(View(model));
        }
コード例 #29
0
 public SiteSettingsView(SiteSettingsViewModel viewModel)
 {
     this.DataContext = viewModel;
     InitializeComponent();
 }
コード例 #30
0
        public IActionResult Index(SiteSettingsViewModel model)
        {
            bool isValueDuplicate = false;

            try
            {
                switch (model.UpdateType)
                {
                case "Profile":
                    var newProfile = new Profile {
                        Role = model.UpdateValue
                    };
                    if (model.UpdateId == 0)
                    {
                        List <Profile> profileList = _context.Profiles.ToList();

                        foreach (var profile in profileList)
                        {
                            if (profile.Role == model.UpdateValue)
                            {
                                isValueDuplicate = true;
                                break;
                            }
                        }
                        if (!isValueDuplicate)
                        {
                            _context.Add(newProfile);
                        }
                        else
                        {
                            throw new ApplicationException(string.Format("{0} already exists", model.UpdateValue));
                        }
                    }
                    else
                    {
                        var profileInDb = _context.Profiles.SingleOrDefault(c => c.Id == model.UpdateId);
                        if (profileInDb == null)
                        {
                            throw new ApplicationException($"Unable to locate Profile id '{model.UpdateId}'");
                        }

                        profileInDb.Role = model.UpdateValue;
                        _context.Update(profileInDb);
                    }
                    break;

                case "Title":
                    var newTitle = new Title {
                        Value = model.UpdateValue
                    };
                    if (model.UpdateId == 0)
                    {
                        List <Title> titleList = _context.Titles.ToList();
                        foreach (var title in titleList)
                        {
                            if (title.Value == model.UpdateValue)
                            {
                                isValueDuplicate = true;
                                break;
                            }
                        }
                        if (!isValueDuplicate)
                        {
                            _context.Add(newTitle);
                        }
                        else
                        {
                            throw new ApplicationException(string.Format("{0} already exists", model.UpdateValue));
                        }
                    }
                    else
                    {
                        var titleInDb = _context.Titles.SingleOrDefault(c => c.Id == model.UpdateId);
                        if (titleInDb == null)
                        {
                            throw new ApplicationException($"Unable to locate Title id '{model.UpdateId}'");
                        }

                        titleInDb.Value = model.UpdateValue;
                        _context.Update(titleInDb);
                    }
                    break;

                case "RoleType":
                    var newRoleType = new RoleType {
                        Type = model.UpdateValue
                    };
                    if (model.UpdateId == 0)
                    {
                        List <RoleType> roleTypelist = _context.RoleType.ToList();
                        foreach (var role in roleTypelist)
                        {
                            if (role.Type == model.UpdateValue)
                            {
                                isValueDuplicate = true;
                                break;
                            }
                        }
                        if (!isValueDuplicate)
                        {
                            _context.Add(newRoleType);
                        }
                        else
                        {
                            throw new ApplicationException(string.Format("{0} already exists", model.UpdateValue));
                        }
                    }
                    else
                    {
                        var roleTypeInDb = _context.RoleType.SingleOrDefault(c => c.Id == model.UpdateId);
                        if (roleTypeInDb == null)
                        {
                            throw new ApplicationException($"Unable to locate Role Type id '{model.UpdateId}'");
                        }

                        roleTypeInDb.Type = model.UpdateValue;
                        _context.Update(roleTypeInDb);
                    }
                    break;

                default:
                    break;
                }
                _context.SaveChanges();
                StatusMessage = string.Format("New {0} added - {1}", model.UpdateType, model.UpdateValue);
            }
            catch (Exception ex)
            {
                StatusMessage = string.Format("New {0} could not be added - error details '{1}'", model.UpdateType, ex.Message);
            }

            var viewModel = new SiteSettingsViewModel()
            {
                StatusMessage = StatusMessage
            };

            // Add Titles
            viewModel.Titles = _context.Titles.Where(c => c.Id > 0).OrderBy(x => x.Value).ToList();
            // Add Profiles (= position)
            viewModel.Profiles = _context.Profiles.Where(cw => cw.Id > 0).OrderBy(x => x.Role).ToList();
            // Add role types
            viewModel.RoleTypes = _context.RoleType.Where(cw => cw.Id > 0).OrderBy(x => x.Type).ToList();

            return(View(viewModel));
        }