refactored site management to include better support for multi-tenancy
This commit is contained in:
		| @ -11,5 +11,6 @@ namespace Oqtane.Services | ||||
|         Task<List<Log>> GetLogsAsync(int SiteId, string Level, string Function, int Rows); | ||||
|         Task<Log> GetLogAsync(int LogId); | ||||
|         Task Log(int? PageId, int? ModuleId, int? UserId, string category, string feature, LogFunction function, LogLevel level, Exception exception, string message, params object[] args); | ||||
|         Task Log(Alias Alias, int? PageId, int? ModuleId, int? UserId, string category, string feature, LogFunction function, LogLevel level, Exception exception, string message, params object[] args); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -6,14 +6,14 @@ namespace Oqtane.Services | ||||
| { | ||||
|     public interface ISiteService | ||||
|     { | ||||
|         Task<List<Site>> GetSitesAsync(); | ||||
|         Task<List<Site>> GetSitesAsync(Alias Alias); | ||||
|  | ||||
|         Task<Site> GetSiteAsync(int SiteId); | ||||
|         Task<Site> GetSiteAsync(int SiteId, Alias Alias); | ||||
|  | ||||
|         Task<Site> AddSiteAsync(Site Site, Alias Alias); | ||||
|  | ||||
|         Task<Site> UpdateSiteAsync(Site Site); | ||||
|         Task<Site> UpdateSiteAsync(Site Site, Alias Alias); | ||||
|  | ||||
|         Task DeleteSiteAsync(int SiteId); | ||||
|         Task DeleteSiteAsync(int SiteId, Alias Alias); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -1,5 +1,6 @@ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Net; | ||||
| using System.Net.Http; | ||||
| using System.Text.Json; | ||||
| using System.Threading.Tasks; | ||||
| @ -38,9 +39,21 @@ namespace Oqtane.Services | ||||
|         } | ||||
|  | ||||
|         public async Task Log(int? PageId, int? ModuleId, int? UserId, string category, string feature, LogFunction function, LogLevel level, Exception exception, string message, params object[] args) | ||||
|         { | ||||
|             await Log(null, PageId, ModuleId, UserId, category, feature, function, level, exception, message, args); | ||||
|         } | ||||
|  | ||||
|         public async Task Log(Alias Alias, int? PageId, int? ModuleId, int? UserId, string category, string feature, LogFunction function, LogLevel level, Exception exception, string message, params object[] args) | ||||
|         { | ||||
|             Log log = new Log(); | ||||
|             log.SiteId = sitestate.Alias.SiteId; | ||||
|             if (Alias == null) | ||||
|             { | ||||
|                 log.SiteId = sitestate.Alias.SiteId; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 log.SiteId = Alias.SiteId; | ||||
|             } | ||||
|             log.PageId = PageId; | ||||
|             log.ModuleId = ModuleId; | ||||
|             log.UserId = UserId; | ||||
| @ -56,7 +69,14 @@ namespace Oqtane.Services | ||||
|             log.Message = message; | ||||
|             log.MessageTemplate = ""; | ||||
|             log.Properties = JsonSerializer.Serialize(args); | ||||
|             await http.PostJsonAsync(apiurl, log); | ||||
|             if (Alias == null) | ||||
|             { | ||||
|                 await http.PostJsonAsync(apiurl, log); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 await http.PostJsonAsync(apiurl + "?alias=" + WebUtility.UrlEncode(Alias.Name), log); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -124,8 +124,11 @@ namespace Oqtane.Services | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     setting.SettingValue = kvp.Value; | ||||
|                     setting = await UpdateSettingAsync(setting); | ||||
|                     if (setting.SettingValue != kvp.Value) | ||||
|                     { | ||||
|                         setting.SettingValue = kvp.Value; | ||||
|                         setting = await UpdateSettingAsync(setting); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|  | ||||
| @ -27,37 +27,40 @@ namespace Oqtane.Services | ||||
|             get { return CreateApiUrl(sitestate.Alias, NavigationManager.Uri, "Site"); } | ||||
|         } | ||||
|  | ||||
|         public async Task<List<Site>> GetSitesAsync() | ||||
|         private string urlsuffix(Alias Alias) | ||||
|         { | ||||
|             List<Site> sites = await http.GetJsonAsync<List<Site>>(apiurl); | ||||
|             string querystring = ""; | ||||
|             if (Alias != null) | ||||
|             { | ||||
|                 querystring = "?alias=" + WebUtility.UrlEncode(Alias.Name); | ||||
|             } | ||||
|             return querystring; | ||||
|         } | ||||
|  | ||||
|         public async Task<List<Site>> GetSitesAsync(Alias Alias) | ||||
|         { | ||||
|             List<Site> sites = await http.GetJsonAsync<List<Site>>(apiurl + urlsuffix(Alias)); | ||||
|             return sites.OrderBy(item => item.Name).ToList(); | ||||
|         } | ||||
|  | ||||
|         public async Task<Site> GetSiteAsync(int SiteId) | ||||
|         public async Task<Site> GetSiteAsync(int SiteId, Alias Alias) | ||||
|         { | ||||
|             return await http.GetJsonAsync<Site>(apiurl + "/" + SiteId.ToString()); | ||||
|             return await http.GetJsonAsync<Site>(apiurl + "/" + SiteId.ToString() + urlsuffix(Alias)); | ||||
|         } | ||||
|  | ||||
|         public async Task<Site> AddSiteAsync(Site Site, Alias Alias) | ||||
|         { | ||||
|             if (Alias == null) | ||||
|             { | ||||
|                 return await http.PostJsonAsync<Site>(apiurl, Site); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 return await http.PostJsonAsync<Site>(apiurl + "?alias=" + WebUtility.UrlEncode(Alias.Name), Site); | ||||
|             } | ||||
|             return await http.PostJsonAsync<Site>(apiurl + urlsuffix(Alias), Site); | ||||
|         } | ||||
|  | ||||
|         public async Task<Site> UpdateSiteAsync(Site Site) | ||||
|         public async Task<Site> UpdateSiteAsync(Site Site, Alias Alias) | ||||
|         { | ||||
|             return await http.PutJsonAsync<Site>(apiurl + "/" + Site.SiteId.ToString(), Site); | ||||
|             return await http.PutJsonAsync<Site>(apiurl + "/" + Site.SiteId.ToString() + urlsuffix(Alias), Site); | ||||
|         } | ||||
|  | ||||
|         public async Task DeleteSiteAsync(int SiteId) | ||||
|         public async Task DeleteSiteAsync(int SiteId, Alias Alias) | ||||
|         { | ||||
|             await http.DeleteAsync(apiurl + "/" + SiteId.ToString()); | ||||
|             await http.DeleteAsync(apiurl + "/" + SiteId.ToString() + urlsuffix(Alias)); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Shaun Walker
					Shaun Walker