From 65cb295e05a21e753b2edf68e3d21c7268008658 Mon Sep 17 00:00:00 2001 From: Shaun Walker Date: Wed, 4 Sep 2019 12:42:22 -0400 Subject: [PATCH] Refactored Settings to use Dictionary --- .../Modules/Admin/Profile/Index.razor | 13 +-- .../Services/Interfaces/ISettingService.cs | 34 +++--- Oqtane.Client/Services/SettingService.cs | 107 ++++++++++-------- 3 files changed, 78 insertions(+), 76 deletions(-) diff --git a/Oqtane.Client/Modules/Admin/Profile/Index.razor b/Oqtane.Client/Modules/Admin/Profile/Index.razor index cf68fdf6..aa1ca756 100644 --- a/Oqtane.Client/Modules/Admin/Profile/Index.razor +++ b/Oqtane.Client/Modules/Admin/Profile/Index.razor @@ -48,7 +48,7 @@ - + } @@ -65,7 +65,7 @@ string displayname = ""; string email = ""; List profiles; - List settings; + Dictionary settings; string category = ""; protected override async Task OnInitializedAsync() @@ -103,12 +103,7 @@ user.DisplayName = displayname; user.Email = email; await UserService.UpdateUserAsync(user); - - foreach (Profile profile in profiles) - { - string value = SettingService.GetSetting(settings, profile.Name, ""); - await SettingService.UpdateUserSettingsAsync(settings, PageState.User.UserId, profile.Name, value); - } + await SettingService.UpdateUserSettingsAsync(settings, PageState.User.UserId); UriHelper.NavigateTo(""); } @@ -126,6 +121,6 @@ private void ProfileChanged(UIChangeEventArgs e, string SettingName) { string value = (string)e.Value; - settings = SettingService.SetSetting(settings, "User", PageState.User.UserId, SettingName, value); + settings = SettingService.SetSetting(settings, SettingName, value); } } diff --git a/Oqtane.Client/Services/Interfaces/ISettingService.cs b/Oqtane.Client/Services/Interfaces/ISettingService.cs index 56fccb43..66647129 100644 --- a/Oqtane.Client/Services/Interfaces/ISettingService.cs +++ b/Oqtane.Client/Services/Interfaces/ISettingService.cs @@ -6,32 +6,34 @@ namespace Oqtane.Services { public interface ISettingService { - Task> GetHostSettingsAsync(); + Task> GetHostSettingsAsync(); - Task UpdateHostSettingsAsync(List HostSettings, string SettingName, string SettingValue); + Task UpdateHostSettingsAsync(Dictionary HostSettings); - Task> GetSiteSettingsAsync(int SiteId); + Task> GetSiteSettingsAsync(int SiteId); - Task UpdateSiteSettingsAsync(List SiteSettings, int SiteId, string SettingName, string SettingValue); + Task UpdateSiteSettingsAsync(Dictionary SiteSettings, int SiteId); - Task> GetPageSettingsAsync(int PageId); + Task> GetPageSettingsAsync(int PageId); - Task UpdatePageSettingsAsync(List PageSettings, int PageId, string SettingName, string SettingValue); + Task UpdatePageSettingsAsync(Dictionary PageSettings, int PageId); - Task> GetPageModuleSettingsAsync(int PageModuleId); + Task> GetPageModuleSettingsAsync(int PageModuleId); - Task UpdatePageModuleSettingsAsync(List PageModuleSettings, int PageModuleId, string SettingName, string SettingValue); + Task UpdatePageModuleSettingsAsync(Dictionary PageModuleSettings, int PageModuleId); - Task> GetModuleSettingsAsync(int ModuleId); + Task> GetModuleSettingsAsync(int ModuleId); - Task UpdateModuleSettingsAsync(List ModuleSettings, int ModuleId, string SettingName, string SettingValue); + Task UpdateModuleSettingsAsync(Dictionary ModuleSettings, int ModuleId); - Task> GetUserSettingsAsync(int UserId); + Task> GetUserSettingsAsync(int UserId); - Task UpdateUserSettingsAsync(List UserSettings, int UserId, string SettingName, string SettingValue); + Task UpdateUserSettingsAsync(Dictionary UserSettings, int UserId); + Task> GetSettingsAsync(string EntityName, int EntityId); + + Task UpdateSettingsAsync(Dictionary Settings, string EntityName, int EntityId); - Task> GetSettingsAsync(string EntityName, int EntityId); Task GetSettingAsync(int SettingId); @@ -39,13 +41,11 @@ namespace Oqtane.Services Task UpdateSettingAsync(Setting Setting); - Task UpdateSettingsAsync(List Settings, string EntityName, int EntityId, string SettingName, string SettingValue); - Task DeleteSettingAsync(int SettingId); - string GetSetting(List Settings, string SettingName, string DefaultValue); + string GetSetting(Dictionary Settings, string SettingName, string DefaultValue); - List SetSetting(List Settings, string EntityName, int EntityId, string SettingName, string SettingValue); + Dictionary SetSetting(Dictionary Settings, string SettingName, string SettingValue); } } diff --git a/Oqtane.Client/Services/SettingService.cs b/Oqtane.Client/Services/SettingService.cs index 02a53dfe..f36b4d67 100644 --- a/Oqtane.Client/Services/SettingService.cs +++ b/Oqtane.Client/Services/SettingService.cs @@ -26,72 +26,101 @@ namespace Oqtane.Services get { return CreateApiUrl(sitestate.Alias, urihelper.GetAbsoluteUri(), "Setting"); } } - public async Task> GetHostSettingsAsync() + public async Task> GetHostSettingsAsync() { return await GetSettingsAsync("Host", -1); } - public async Task UpdateHostSettingsAsync(List HostSettings, string SettingName, string SettingValue) + public async Task UpdateHostSettingsAsync(Dictionary HostSettings) { - return await UpdateSettingsAsync(HostSettings, "Host", -1, SettingName, SettingValue); + await UpdateSettingsAsync(HostSettings, "Host", -1); } - public async Task> GetSiteSettingsAsync(int SiteId) + public async Task> GetSiteSettingsAsync(int SiteId) { return await GetSettingsAsync("Site", SiteId); } - public async Task UpdateSiteSettingsAsync(List SiteSettings, int SiteId, string SettingName, string SettingValue) + public async Task UpdateSiteSettingsAsync(Dictionary SiteSettings, int SiteId) { - return await UpdateSettingsAsync(SiteSettings, "Site", SiteId, SettingName, SettingValue); + await UpdateSettingsAsync(SiteSettings, "Site", SiteId); } - public async Task> GetPageSettingsAsync(int PageId) + public async Task> GetPageSettingsAsync(int PageId) { return await GetSettingsAsync("Page", PageId); } - public async Task UpdatePageSettingsAsync(List PageSettings, int PageId, string SettingName, string SettingValue) + public async Task UpdatePageSettingsAsync(Dictionary PageSettings, int PageId) { - return await UpdateSettingsAsync(PageSettings, "Page", PageId, SettingName, SettingValue); + await UpdateSettingsAsync(PageSettings, "Page", PageId); } - public async Task> GetPageModuleSettingsAsync(int PageModuleId) + public async Task> GetPageModuleSettingsAsync(int PageModuleId) { return await GetSettingsAsync("PageModule", PageModuleId); } - public async Task UpdatePageModuleSettingsAsync(List PageModuleSettings, int PageModuleId, string SettingName, string SettingValue) + public async Task UpdatePageModuleSettingsAsync(Dictionary PageModuleSettings, int PageModuleId) { - return await UpdateSettingsAsync(PageModuleSettings, "PageModule", PageModuleId, SettingName, SettingValue); + await UpdateSettingsAsync(PageModuleSettings, "PageModule", PageModuleId); } - public async Task> GetModuleSettingsAsync(int ModuleId) + public async Task> GetModuleSettingsAsync(int ModuleId) { return await GetSettingsAsync("Module", ModuleId); } - public async Task UpdateModuleSettingsAsync(List ModuleSettings, int ModuleId, string SettingName, string SettingValue) + public async Task UpdateModuleSettingsAsync(Dictionary ModuleSettings, int ModuleId) { - return await UpdateSettingsAsync(ModuleSettings, "Module", ModuleId, SettingName, SettingValue); + await UpdateSettingsAsync(ModuleSettings, "Module", ModuleId); } - public async Task> GetUserSettingsAsync(int UserId) + public async Task> GetUserSettingsAsync(int UserId) { return await GetSettingsAsync("User", UserId); } - public async Task UpdateUserSettingsAsync(List UserSettings, int UserId, string SettingName, string SettingValue) + public async Task UpdateUserSettingsAsync(Dictionary UserSettings, int UserId) { - return await UpdateSettingsAsync(UserSettings, "User", UserId, SettingName, SettingValue); + await UpdateSettingsAsync(UserSettings, "User", UserId); } - public async Task> GetSettingsAsync(string EntityName, int EntityId) + public async Task> GetSettingsAsync(string EntityName, int EntityId) { + Dictionary dictionary = new Dictionary(); List Settings = await http.GetJsonAsync>(apiurl + "?entityname=" + EntityName + "&entityid=" + EntityId.ToString()); - return Settings.OrderBy(item => item.SettingName).ToList(); + foreach(Setting setting in Settings.OrderBy(item => item.SettingName).ToList()) + { + dictionary.Add(setting.SettingName, setting.SettingValue); + } + return dictionary; } + public async Task UpdateSettingsAsync(Dictionary Settings, string EntityName, int EntityId) + { + List settings = await http.GetJsonAsync>(apiurl + "?entityname=" + EntityName + "&entityid=" + EntityId.ToString()); + foreach (KeyValuePair kvp in Settings) + { + Setting setting = settings.Where(item => item.SettingName == kvp.Key).FirstOrDefault(); + if (setting == null) + { + setting = new Setting(); + setting.EntityName = EntityName; + setting.EntityId = EntityId; + setting.SettingName = kvp.Key; + setting.SettingValue = kvp.Value; + setting = await AddSettingAsync(setting); + } + else + { + setting.SettingValue = kvp.Value; + setting = await UpdateSettingAsync(setting); + } + } + } + + public async Task GetSettingAsync(int SettingId) { return await http.GetJsonAsync(apiurl + "/" + SettingId.ToString()); @@ -107,53 +136,31 @@ namespace Oqtane.Services return await http.PutJsonAsync(apiurl + "/" + Setting.SettingId.ToString(), Setting); } - public async Task UpdateSettingsAsync(List Settings, string EntityName, int EntityId, string SettingName, string SettingValue) - { - Setting setting = Settings.Where(item => item.SettingName == SettingName).FirstOrDefault(); - if (setting == null || setting.SettingId == -1) - { - setting = new Setting(); - setting.EntityName = EntityName; - setting.EntityId = EntityId; - setting.SettingName = SettingName; - setting.SettingValue = SettingValue; - setting = await AddSettingAsync(setting); - } - else - { - setting.SettingValue = SettingValue; - setting = await UpdateSettingAsync(setting); - } - return setting; - } - public async Task DeleteSettingAsync(int SettingId) { await http.DeleteAsync(apiurl + "/" + SettingId.ToString()); } - public string GetSetting(List Settings, string SettingName, string DefaultValue) + public string GetSetting(Dictionary Settings, string SettingName, string DefaultValue) { string value = DefaultValue; - Setting setting = Settings.Where(item => item.SettingName == SettingName).FirstOrDefault(); - if (setting != null) + if (Settings.ContainsKey(SettingName)) { - value = setting.SettingValue; + value = Settings[SettingName]; } return value; } - public List SetSetting(List Settings, string EntityName, int EntityId, string SettingName, string SettingValue) + public Dictionary SetSetting(Dictionary Settings, string SettingName, string SettingValue) { - int index = Settings.FindIndex(item => item.EntityName == EntityName && item.EntityId == EntityId && item.SettingName == SettingName); - if (index != -1) - { - Settings[index].SettingValue = SettingValue; + if (Settings.ContainsKey(SettingName)) + { + Settings[SettingName] = SettingValue; } else { - Settings.Add(new Setting { SettingId = -1, EntityName = EntityName, EntityId = EntityId, SettingName = SettingName, SettingValue = SettingValue }); + Settings.Add(SettingName, SettingValue); } return Settings; }