structured logging
This commit is contained in:
		| @ -33,15 +33,18 @@ | ||||
|                 string result = await FileService.UploadFilesAsync(PageState.Site.SiteRootPath, files, ""); | ||||
|                 if (result == "") | ||||
|                 { | ||||
|                     await logger.LogInformation("Files Uploaded Successfully"); | ||||
|                     AddModuleMessage("Files Uploaded Successfully", MessageType.Success); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     await logger.LogError("Upload Failed For {Files}", result.Replace(",",", ")); | ||||
|                     AddModuleMessage("Upload Failed For " + result.Replace(",",", ") + ". This Could Be Due To A Network Error Or Because A File Type Is Restricted.", MessageType.Error); | ||||
|                 } | ||||
|             } | ||||
|             catch (Exception ex) | ||||
|             { | ||||
|                 await logger.LogError(ex, "Upload Failed {Error}", ex.Message); | ||||
|                 AddModuleMessage("Upload Failed. " + ex.Message, MessageType.Error); | ||||
|             } | ||||
|         } | ||||
|  | ||||
| @ -33,14 +33,31 @@ else | ||||
|  | ||||
|     protected override async Task OnParametersSetAsync() | ||||
|     { | ||||
|         Files = await FileService.GetFilesAsync(PageState.Site.SiteRootPath); | ||||
|         uri = new Uri(NavigationManager.Uri); | ||||
|         try | ||||
|         { | ||||
|             Files = await FileService.GetFilesAsync(PageState.Site.SiteRootPath); | ||||
|             uri = new Uri(NavigationManager.Uri); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             await logger.LogError("Error Loading Files {Error}", ex.Message); | ||||
|             AddModuleMessage("Error Loading Files", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private async Task DeleteFile(string filename) | ||||
|     { | ||||
|         await FileService.DeleteFileAsync(PageState.Site.SiteRootPath, filename); | ||||
|         Files = await FileService.GetFilesAsync(PageState.Site.SiteRootPath); | ||||
|         AddModuleMessage("File Deleted", MessageType.Success); | ||||
|         try | ||||
|         { | ||||
|             await FileService.DeleteFileAsync(PageState.Site.SiteRootPath, filename); | ||||
|             Files = await FileService.GetFilesAsync(PageState.Site.SiteRootPath); | ||||
|             await logger.LogInformation("File Deleted"); | ||||
|             AddModuleMessage("File Deleted", MessageType.Success); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             await logger.LogError("Error Deleting File {Error}", ex.Message); | ||||
|             AddModuleMessage("Error Deleting File", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -64,6 +64,7 @@ | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 await logger.LogInformation("Login Failed For Username {Username}", Username); | ||||
|                 AddModuleMessage("Login Failed. Please Remember That Passwords Are Case Sensitive.", MessageType.Error); | ||||
|             } | ||||
|         } | ||||
| @ -82,6 +83,7 @@ | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 await logger.LogInformation("Login Failed For Username {Username}", Username); | ||||
|                 AddModuleMessage("Login Failed. Please Remember That Passwords Are Case Sensitive.", MessageType.Error); | ||||
|             } | ||||
|         } | ||||
|  | ||||
							
								
								
									
										38
									
								
								Oqtane.Client/Modules/Admin/Logs/Index.razor
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								Oqtane.Client/Modules/Admin/Logs/Index.razor
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,38 @@ | ||||
| @namespace Oqtane.Modules.Admin.Logs | ||||
| @inherits ModuleBase | ||||
| @inject ILogService LogService | ||||
|  | ||||
| @if (Logs == null) | ||||
| { | ||||
|     <p><em>Loading...</em></p> | ||||
| } | ||||
| else | ||||
| { | ||||
|     <Pager Items="@Logs"> | ||||
|         <Header> | ||||
|             <th>Date</th> | ||||
|             <th>Level</th> | ||||
|             <th>Url</th> | ||||
|             <th>Category</th> | ||||
|             <th>Message</th> | ||||
|         </Header> | ||||
|         <Row> | ||||
|             <td>@context.LogDate</td> | ||||
|             <td>@context.Level</td> | ||||
|             <td>@context.Url</td> | ||||
|             <td>@context.Category</td> | ||||
|             <td>@context.Message</td> | ||||
|         </Row> | ||||
|     </Pager> | ||||
| } | ||||
|  | ||||
| @code { | ||||
|     public override SecurityAccessLevel SecurityAccessLevel { get { return SecurityAccessLevel.Admin; } } | ||||
|  | ||||
|     List<Log> Logs; | ||||
|  | ||||
|     protected override async Task OnInitializedAsync() | ||||
|     { | ||||
|         Logs = await LogService.GetLogsAsync(PageState.Site.SiteId); | ||||
|     } | ||||
| } | ||||
| @ -54,15 +54,23 @@ | ||||
|  | ||||
|     protected override async Task OnInitializedAsync() | ||||
|     { | ||||
|         List<ModuleDefinition> moduledefinitions = await ModuleDefinitionService.GetModuleDefinitionsAsync(PageState.Site.SiteId); | ||||
|         packages = await PackageService.GetPackagesAsync("module"); | ||||
|         foreach(Package package in packages.ToArray()) | ||||
|         try | ||||
|         { | ||||
|             if (moduledefinitions.Exists(item => Utilities.GetTypeName(item.ModuleDefinitionName) == package.PackageId)) | ||||
|             List<ModuleDefinition> moduledefinitions = await ModuleDefinitionService.GetModuleDefinitionsAsync(PageState.Site.SiteId); | ||||
|             packages = await PackageService.GetPackagesAsync("module"); | ||||
|             foreach(Package package in packages.ToArray()) | ||||
|             { | ||||
|                 packages.Remove(package); | ||||
|                 if (moduledefinitions.Exists(item => Utilities.GetTypeName(item.ModuleDefinitionName) == package.PackageId)) | ||||
|                 { | ||||
|                     packages.Remove(package); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             await logger.LogError(ex, "Error Loading Packages {Error}", ex.Message); | ||||
|             AddModuleMessage("Error Loading Packages", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private async Task UploadFile() | ||||
| @ -77,22 +85,26 @@ | ||||
|                     string result = await FileService.UploadFilesAsync("Modules", files, ""); | ||||
|                     if (result == "") | ||||
|                     { | ||||
|                         await logger.LogInformation("Module Uploaded Successfully {Package}", files[0]); | ||||
|                         AddModuleMessage("Module Uploaded Successfully. Click Install To Complete Installation.", MessageType.Success); | ||||
|                         uploaded = true; | ||||
|                         StateHasChanged(); | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         AddModuleMessage("Upload Failed For " + result.Replace(",",", ") + ". This Could Be Due To A Network Error Or Because A File Type Is Restricted.", MessageType.Error); | ||||
|                         await logger.LogError("Module Upload Failed For {Package}", files[0]); | ||||
|                         AddModuleMessage("Module Upload Failed For " + result.Replace(",",", ") + ". This Could Be Due To A Network Error Or Because A File Type Is Restricted.", MessageType.Error); | ||||
|                     } | ||||
|                 } | ||||
|                 catch (Exception ex) | ||||
|                 { | ||||
|                     AddModuleMessage("Module Upload Failed. " + ex.Message, MessageType.Error); | ||||
|                     await logger.LogError(ex, "Module Upload Failed For {Package} {Error}", files[0], ex.Message); | ||||
|                     AddModuleMessage("Module Upload Failed.", MessageType.Error); | ||||
|                 } | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 await logger.LogError("Invalid Module Package {Package}", files[0]); | ||||
|                 AddModuleMessage("Invalid Module Package", MessageType.Error); | ||||
|             } | ||||
|         } | ||||
| @ -104,15 +116,31 @@ | ||||
|  | ||||
|     private async Task InstallModules() | ||||
|     { | ||||
|         await ModuleDefinitionService.InstallModuleDefinitionsAsync(); | ||||
|         NavigationManager.NavigateTo(NavigateUrl(Reload.Application)); | ||||
|         try | ||||
|         { | ||||
|             await ModuleDefinitionService.InstallModuleDefinitionsAsync(); | ||||
|             NavigationManager.NavigateTo(NavigateUrl(Reload.Application)); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             await logger.LogError(ex, "Error Installating Module"); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private async Task DownloadModule(string moduledefinitionname, string version) | ||||
|     { | ||||
|         await PackageService.DownloadPackageAsync(moduledefinitionname, version, "Modules"); | ||||
|         AddModuleMessage("Module Downloaded Successfully. Click Install To Complete Installation.", MessageType.Success); | ||||
|         uploaded = true; | ||||
|         StateHasChanged(); | ||||
|         try | ||||
|         { | ||||
|             await PackageService.DownloadPackageAsync(moduledefinitionname, version, "Modules"); | ||||
|             await logger.LogInformation("Module {ModuleDefinitionName} {Version} Downloaded Successfully", moduledefinitionname, version); | ||||
|             AddModuleMessage("Module Downloaded Successfully. Click Install To Complete Installation.", MessageType.Success); | ||||
|             uploaded = true; | ||||
|             StateHasChanged(); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             await logger.LogError(ex, "Error Downloading Module {ModuleDefinitionName} {Version}", moduledefinitionname, version); | ||||
|             AddModuleMessage("Error Downloading Module", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -40,7 +40,7 @@ | ||||
|  | ||||
|     PermissionGrid permissiongrid; | ||||
|  | ||||
|     protected override void OnInitialized() | ||||
|     protected override async Task OnInitializedAsync() | ||||
|     { | ||||
|         try | ||||
|         { | ||||
| @ -58,7 +58,8 @@ | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Loading ModuleDefinition {ModuleDefinitionId} {Error}", ModuleDefinitionId, ex.Message); | ||||
|             AddModuleMessage("Error Loading Module", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -69,11 +70,13 @@ | ||||
|             ModuleDefinition moduledefinition = PageState.ModuleDefinitions.Where(item => item.ModuleDefinitionId == ModuleDefinitionId).FirstOrDefault(); | ||||
|             moduledefinition.Permissions = permissiongrid.GetPermissions(); | ||||
|             await ModuleDefinitionService.UpdateModuleDefinitionAsync(moduledefinition); | ||||
|             await logger.LogInformation("ModuleDefinition Saved {ModuleDefinition}", moduledefinition); | ||||
|             NavigationManager.NavigateTo(NavigateUrl(Reload.Site)); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Saving ModuleDefinition {ModuleDefinitionId} {Error}", ModuleDefinitionId, ex.Message); | ||||
|             AddModuleMessage("Error Saving Module", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -30,8 +30,16 @@ | ||||
|     { | ||||
|         if (content != "") | ||||
|         { | ||||
|             await ModuleService.ImportModuleAsync(ModuleState.ModuleId, content); | ||||
|             NavigationManager.NavigateTo(NavigateUrl(Reload.Page)); | ||||
|             try | ||||
|             { | ||||
|                 await ModuleService.ImportModuleAsync(ModuleState.ModuleId, content); | ||||
|                 NavigationManager.NavigateTo(NavigateUrl(Reload.Page)); | ||||
|             } | ||||
|             catch (Exception ex) | ||||
|             { | ||||
|                 await logger.LogError(ex, "Error Importing Module {ModuleId} {Error}", ModuleState.ModuleId, ex.Message); | ||||
|                 AddModuleMessage("Error Importing Module", MessageType.Error); | ||||
|             } | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|  | ||||
| @ -153,7 +153,7 @@ | ||||
|  | ||||
|     PermissionGrid permissiongrid; | ||||
|  | ||||
|     protected override void OnInitialized() | ||||
|     protected override async Task OnInitializedAsync() | ||||
|     { | ||||
|         try | ||||
|         { | ||||
| @ -173,11 +173,12 @@ | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Initializing Page {Error}", ex.Message); | ||||
|             AddModuleMessage("Error Initializing Page", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private void ParentChanged(ChangeEventArgs e) | ||||
|     private async void ParentChanged(ChangeEventArgs e) | ||||
|     { | ||||
|         try | ||||
|         { | ||||
| @ -194,11 +195,12 @@ | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Loading Child Pages For Parent {PageId} {Error}", parentid, ex.Message); | ||||
|             AddModuleMessage("Error Loading Child Pages For Parent", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private void ThemeChanged(ChangeEventArgs e) | ||||
|     private async void ThemeChanged(ChangeEventArgs e) | ||||
|     { | ||||
|         try | ||||
|         { | ||||
| @ -215,17 +217,19 @@ | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Loading Pane Layouts For Theme {ThemeType} {Error}", themetype, ex.Message); | ||||
|             AddModuleMessage("Error Loading Pane Layouts For Theme", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private async Task SavePage() | ||||
|     { | ||||
|         Page page = null; | ||||
|         try | ||||
|         { | ||||
|             if (name != "" && !string.IsNullOrEmpty(themetype) && (panelayouts.Count == 0 || !string.IsNullOrEmpty(layouttype))) | ||||
|             { | ||||
|                 Page page = new Page(); | ||||
|                 page = new Page(); | ||||
|                 page.SiteId = PageState.Page.SiteId; | ||||
|                 page.Name = name; | ||||
|                 if (path == "") | ||||
| @ -291,6 +295,7 @@ | ||||
|                 await PageService.AddPageAsync(page); | ||||
|                 await PageService.UpdatePageOrderAsync(page.SiteId, page.ParentId); | ||||
|  | ||||
|                 await logger.LogInformation("Page Added {Page}", page); | ||||
|                 NavigationManager.NavigateTo(NavigateUrl(page.Path, Reload.Site)); | ||||
|             } | ||||
|             else | ||||
| @ -301,7 +306,8 @@ | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Saving Page {Page} {Error}", page, ex.Message); | ||||
|             AddModuleMessage("Error Saving Page", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|  | ||||
| @ -130,7 +130,7 @@ | ||||
|     string deletedby; | ||||
|     DateTime? deletedon; | ||||
|  | ||||
|     protected override void OnInitialized() | ||||
|     protected override async Task OnInitializedAsync() | ||||
|     { | ||||
|         try | ||||
|         { | ||||
| @ -159,7 +159,8 @@ | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Loading Page {PageId} {Error}", PageId, ex.Message); | ||||
|             AddModuleMessage("Error Loading Page", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -167,12 +168,14 @@ | ||||
|     { | ||||
|         try | ||||
|         { | ||||
|             await PageService.DeletePageAsync(Int32.Parse(PageState.QueryString["id"])); | ||||
|             NavigationManager.NavigateTo(NavigateUrl("", Reload.Site)); | ||||
|             await PageService.DeletePageAsync(PageId); | ||||
|             await logger.LogInformation("Page Deleted {PageId}", PageId); | ||||
|             NavigationManager.NavigateTo(NavigateUrl("", Reload.Site)); // redirect to home page | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Deleting Page {PageId} {Error}", PageId, ex.Message); | ||||
|             AddModuleMessage("Error Deleting Page", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -182,7 +182,7 @@ | ||||
|  | ||||
|     PermissionGrid permissiongrid; | ||||
|  | ||||
|     protected override void OnInitialized() | ||||
|     protected override async Task OnInitializedAsync() | ||||
|     { | ||||
|         try | ||||
|         { | ||||
| @ -227,11 +227,12 @@ | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Loading Page {PageId} {Error}", PageId, ex.Message); | ||||
|             AddModuleMessage("Error Loading Page", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private void ParentChanged(ChangeEventArgs e) | ||||
|     private async void ParentChanged(ChangeEventArgs e) | ||||
|     { | ||||
|         try | ||||
|         { | ||||
| @ -256,11 +257,12 @@ | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Loading Child Pages For Parent {PageId} {Error}", parentid, ex.Message); | ||||
|             AddModuleMessage("Error Loading Child Pages For Parent", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private void ThemeChanged(ChangeEventArgs e) | ||||
|     private async void ThemeChanged(ChangeEventArgs e) | ||||
|     { | ||||
|         try | ||||
|         { | ||||
| @ -277,17 +279,19 @@ | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Loading Pane Layouts For Theme {ThemeType} {Error}", themetype, ex.Message); | ||||
|             AddModuleMessage("Error Loading Pane Layouts For Theme", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private async Task SavePage() | ||||
|     { | ||||
|         Page page = null; | ||||
|         try | ||||
|         { | ||||
|             if (name != "" && !string.IsNullOrEmpty(themetype) && (panelayouts.Count == 0 || !string.IsNullOrEmpty(layouttype))) | ||||
|             { | ||||
|                 Page page = PageState.Pages.Where(item => item.PageId == PageId).FirstOrDefault(); | ||||
|                 page = PageState.Pages.Where(item => item.PageId == PageId).FirstOrDefault(); | ||||
|                 string currentpath = page.Path; | ||||
|  | ||||
|                 page.Name = name; | ||||
| @ -375,6 +379,7 @@ | ||||
|                     } | ||||
|                 } | ||||
|  | ||||
|                 await logger.LogInformation("Page Saved {Page}", page); | ||||
|                 NavigationManager.NavigateTo(NavigateUrl(page.Path, Reload.Site)); | ||||
|             } | ||||
|             else | ||||
| @ -384,7 +389,8 @@ | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Saving Page {Page} {Error}", page, ex.Message); | ||||
|             AddModuleMessage("Error Saving Page", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -34,7 +34,8 @@ | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Loading Pages {Error}", ex.Message); | ||||
|             AddModuleMessage("Error Loading Pages", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -99,7 +99,8 @@ | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Loading User Profile {Error}", ex.Message); | ||||
|             AddModuleMessage("Error Loading User Profile", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -119,12 +120,14 @@ | ||||
|             user.DisplayName = displayname; | ||||
|             await UserService.UpdateUserAsync(user); | ||||
|             await SettingService.UpdateUserSettingsAsync(settings, PageState.User.UserId); | ||||
|             await logger.LogInformation("User Profile Saved"); | ||||
|  | ||||
|             NavigationManager.NavigateTo(NavigateUrl("")); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Saving User Profile {Error}", ex.Message); | ||||
|             AddModuleMessage("Error Saving User Profile", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|  | ||||
| @ -43,10 +43,12 @@ | ||||
|  | ||||
|                 if (user != null) | ||||
|                 { | ||||
|                     await logger.LogInformation("User Created {Username} {Email}", Username, Email); | ||||
|                     NavigationManager.NavigateTo(NavigateUrl("")); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     await logger.LogError("Error Adding User {Username} {Email}", Username, Email); | ||||
|                     AddModuleMessage("Error Adding User. Please Ensure Password Meets Complexity Requirements And Username Is Not Already In Use.", MessageType.Error); | ||||
|                 } | ||||
|             } | ||||
| @ -57,7 +59,8 @@ | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Adding User {Username} {Email} {Error}", Username, Email, ex.Message); | ||||
|             AddModuleMessage("Error Adding User", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|  | ||||
| @ -64,12 +64,14 @@ | ||||
|             role.Description = description; | ||||
|             role.IsAutoAssigned = (isautoassigned == null ? false : Boolean.Parse(isautoassigned)); | ||||
|             role.IsSystem = (issystem == null ? false : Boolean.Parse(issystem)); | ||||
|             await RoleService.AddRoleAsync(role); | ||||
|             role = await RoleService.AddRoleAsync(role); | ||||
|             await logger.LogInformation("Role Added {Role}", role); | ||||
|  | ||||
|             NavigationManager.NavigateTo(NavigateUrl()); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             await logger.LogError(ex, "Error Adding Role", ex.Message); | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -71,7 +71,8 @@ | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Loading Role {RoleId} {Error}", roleid, ex.Message); | ||||
|             AddModuleMessage("Error Loading Role", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -80,11 +81,13 @@ | ||||
|         try | ||||
|         { | ||||
|             await RoleService.DeleteRoleAsync(roleid); | ||||
|             await logger.LogInformation("Role Deleted {RoleId}", roleid); | ||||
|             NavigationManager.NavigateTo(NavigateUrl()); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Deleting Role {RoleId} {Error}", roleid, ex.Message); | ||||
|             AddModuleMessage("Error Deleting Role", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|  | ||||
| @ -71,7 +71,8 @@ | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Loading Role {RoleId} {Error}", roleid, ex.Message); | ||||
|             AddModuleMessage("Error Loading Role", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -80,20 +81,18 @@ | ||||
|         try | ||||
|         { | ||||
|             Role role = await RoleService.GetRoleAsync(roleid); | ||||
|             if (role != null) | ||||
|             { | ||||
|                 role.Name = name; | ||||
|                 role.Description = description; | ||||
|                 role.IsAutoAssigned = (isautoassigned == null ? false : Boolean.Parse(isautoassigned)); | ||||
|                 role.IsSystem = (issystem == null ? false : Boolean.Parse(issystem)); | ||||
|                 await RoleService.UpdateRoleAsync(role); | ||||
|             } | ||||
|             role.Name = name; | ||||
|             role.Description = description; | ||||
|             role.IsAutoAssigned = (isautoassigned == null ? false : Boolean.Parse(isautoassigned)); | ||||
|             role.IsSystem = (issystem == null ? false : Boolean.Parse(issystem)); | ||||
|             role = await RoleService.UpdateRoleAsync(role); | ||||
|             await logger.LogInformation("Role Saved {Role}", role); | ||||
|             NavigationManager.NavigateTo(NavigateUrl()); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Saving Role {RoleId} {Error}", roleid, ex.Message); | ||||
|             AddModuleMessage("Error Saving Role", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| } | ||||
|  | ||||
| @ -146,7 +146,7 @@ else | ||||
|         username = PageState.User.Username; | ||||
|     } | ||||
|  | ||||
|     private void TenantChanged(ChangeEventArgs e) | ||||
|     private async void TenantChanged(ChangeEventArgs e) | ||||
|     { | ||||
|         try | ||||
|         { | ||||
| @ -163,11 +163,12 @@ else | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Loading Tenant {TenantId} {Error}", tenantid, ex.Message); | ||||
|             AddModuleMessage("Error Loading Tenant", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private void ThemeChanged(ChangeEventArgs e) | ||||
|     private async void ThemeChanged(ChangeEventArgs e) | ||||
|     { | ||||
|         try | ||||
|         { | ||||
| @ -184,7 +185,8 @@ else | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Loading Pane Layouts For Theme {ThemeType} {Error}", themetype, ex.Message); | ||||
|             AddModuleMessage("Error Loading Pane Layouts For Theme", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -250,12 +252,14 @@ else | ||||
|                         await TenantService.UpdateTenantAsync(tenant); | ||||
|                     } | ||||
|                 } | ||||
|                 await logger.LogInformation("Site Created {Site}", site); | ||||
|  | ||||
|                 Uri uri = new Uri(NavigationManager.Uri); | ||||
|                 NavigationManager.NavigateTo(uri.Scheme + "://" + aliases[0].Name, true); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 await logger.LogError("Invalid Password Entered For Host {Username}", username); | ||||
|                 AddModuleMessage("Invalid Host Password", MessageType.Error); | ||||
|             } | ||||
|         } | ||||
|  | ||||
| @ -163,7 +163,8 @@ else | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Loading Site {SiteId} {Error}", siteid, ex.Message); | ||||
|             AddModuleMessage("Error Loading Site", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -172,10 +173,12 @@ else | ||||
|         try | ||||
|         { | ||||
|             await SiteService.DeleteSiteAsync(siteid, Alias); | ||||
|             await logger.LogInformation("Sited Deleted {SiteId}", siteid); | ||||
|             NavigationManager.NavigateTo(NavigateUrl()); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             await logger.LogError(ex, "Error Deleting Site {Error}", ex.Message); | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -164,11 +164,12 @@ else | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             await logger.LogError(ex, "Error Loading Site {SiteId} {Error}", siteid, ex.Message); | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private void ThemeChanged(ChangeEventArgs e) | ||||
|     private async void ThemeChanged(ChangeEventArgs e) | ||||
|     { | ||||
|         try | ||||
|         { | ||||
| @ -185,7 +186,8 @@ else | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Loading Pane Layouts For Theme {ThemeType} {Error}", themetype, ex.Message); | ||||
|             AddModuleMessage("Error Loading Pane Layouts For Theme", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -227,6 +229,7 @@ else | ||||
|                             await AliasService.AddAliasAsync(alias); | ||||
|                         } | ||||
|                     } | ||||
|                     await logger.LogInformation("Site Saved {Site}", site); | ||||
|  | ||||
|                     NavigationManager.NavigateTo(NavigateUrl(Reload.Site)); | ||||
|                 } | ||||
| @ -238,7 +241,8 @@ else | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Saving Site {SiteId} {Error}", siteid, ex.Message); | ||||
|             AddModuleMessage("Error Saving Site", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -50,7 +50,8 @@ | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Loading Tenants {Error}", ex.Message); | ||||
|             AddModuleMessage("Error Loading Tenants", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -68,11 +69,13 @@ | ||||
|             tenant.DBSchema = schema; | ||||
|             tenant.IsInitialized = false; | ||||
|             await TenantService.AddTenantAsync(tenant); | ||||
|             await logger.LogInformation("Tenant Created {Tenant}", tenant); | ||||
|  | ||||
|             NavigationManager.NavigateTo(NavigateUrl()); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             await logger.LogError("Error Creating Tenant {Error}", response.Message); | ||||
|             AddModuleMessage(response.Message, MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -55,16 +55,26 @@ | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             await logger.LogError(ex, "Error Loading Tenant {TenantId} {Error}", tenantid, ex.Message); | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|     private async Task DeleteTenant() | ||||
|     { | ||||
|         Tenant tenant = await TenantService.GetTenantAsync(tenantid); | ||||
|         if (tenant != null) | ||||
|         try | ||||
|         { | ||||
|             await TenantService.DeleteTenantAsync(tenantid); | ||||
|             Tenant tenant = await TenantService.GetTenantAsync(tenantid); | ||||
|             if (tenant != null) | ||||
|             { | ||||
|                 await TenantService.DeleteTenantAsync(tenantid); | ||||
|                 await logger.LogInformation("Tenant Deleted {TenantId}", tenantid); | ||||
|                 NavigationManager.NavigateTo(NavigateUrl()); | ||||
|             } | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             await logger.LogError(ex, "Error Deleting Tenant {TenantId} {Error}", tenantid, ex.Message); | ||||
|             AddModuleMessage("Error Deleting Tenant", MessageType.Error); | ||||
|         } | ||||
|         NavigationManager.NavigateTo(NavigateUrl()); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -55,21 +55,32 @@ | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Loading Tenant {TenantId} {Error}", tenantid, ex.Message); | ||||
|             AddModuleMessage("Error Loading Tenant", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private async Task SaveTenant() | ||||
|     { | ||||
|         connectionstring = connectionstring.Replace("\\\\", "\\"); | ||||
|         Tenant tenant = await TenantService.GetTenantAsync(tenantid); | ||||
|         if (tenant != null) | ||||
|         try | ||||
|         { | ||||
|             tenant.Name = name; | ||||
|             tenant.DBConnectionString = connectionstring; | ||||
|             tenant.DBSchema = schema; | ||||
|             await TenantService.UpdateTenantAsync(tenant); | ||||
|             connectionstring = connectionstring.Replace("\\\\", "\\"); | ||||
|             Tenant tenant = await TenantService.GetTenantAsync(tenantid); | ||||
|             if (tenant != null) | ||||
|             { | ||||
|                 tenant.Name = name; | ||||
|                 tenant.DBConnectionString = connectionstring; | ||||
|                 tenant.DBSchema = schema; | ||||
|                 await TenantService.UpdateTenantAsync(tenant); | ||||
|                 await logger.LogInformation("Tenant Saved {TenantId}", tenantid); | ||||
|  | ||||
|                 NavigationManager.NavigateTo(NavigateUrl()); | ||||
|             } | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             await logger.LogError(ex, "Error Saving Tenant {TenantId} {Error}", tenantid, ex.Message); | ||||
|             AddModuleMessage("Error Saving Tenant", MessageType.Error); | ||||
|         } | ||||
|         NavigationManager.NavigateTo(NavigateUrl()); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -76,22 +76,26 @@ | ||||
|                     string result = await FileService.UploadFilesAsync("Themes", files, ""); | ||||
|                     if (result == "") | ||||
|                     { | ||||
|                         await logger.LogInformation("Theme Uploaded {Package}", files[0]); | ||||
|                         AddModuleMessage("Theme Uploaded Successfully. Click Install To Complete Installation.", MessageType.Success); | ||||
|                         uploaded = true; | ||||
|                         StateHasChanged(); | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         await logger.LogInformation("Theme Upload Failed For {Package}", result.Replace(",",", ")); | ||||
|                         AddModuleMessage("Upload Failed For " + result.Replace(",",", ") + ". This Could Be Due To A Network Error Or Because A File Type Is Restricted.", MessageType.Error); | ||||
|                     } | ||||
|                 } | ||||
|                 catch (Exception ex) | ||||
|                 { | ||||
|                     AddModuleMessage("Theme Upload Failed. " + ex.Message, MessageType.Error); | ||||
|                     await logger.LogError(ex, "Theme Upload Failed {Package} {Error}", files[0], ex.Message); | ||||
|                     AddModuleMessage("Theme Upload Failed", MessageType.Error); | ||||
|                 } | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 await logger.LogError("Invalid Theme Package {Package}", files[0]); | ||||
|                 AddModuleMessage("Invalid Theme Package", MessageType.Error); | ||||
|             } | ||||
|         } | ||||
|  | ||||
| @ -65,22 +65,26 @@ else | ||||
|                     string result = await FileService.UploadFilesAsync("Framework", files, ""); | ||||
|                     if (result == "") | ||||
|                     { | ||||
|                         await logger.LogInformation("Framework Uploaded {Package}", files[0]); | ||||
|                         AddModuleMessage("Framework Uploaded Successfully. Click Upgrade To Complete Installation.", MessageType.Success); | ||||
|                         uploaded = true; | ||||
|                         StateHasChanged(); | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         await logger.LogInformation("Framework Upload Failed For {Package}", result.Replace(",",", ")); | ||||
|                         AddModuleMessage("Upload Failed For " + result.Replace(",",", ") + ". This Could Be Due To A Network Error Or Because A File Type Is Restricted.", MessageType.Error); | ||||
|                     } | ||||
|                 } | ||||
|                 catch (Exception ex) | ||||
|                 { | ||||
|                     await logger.LogError(ex, "Framework Upload Failed {Package} {Error}", files[0], ex.Message); | ||||
|                     AddModuleMessage("Framework Upload Failed. " + ex.Message, MessageType.Error); | ||||
|                 } | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 await logger.LogError("Invalid Framework Package {Package}", files[0]); | ||||
|                 AddModuleMessage("Invalid Framework Package", MessageType.Error); | ||||
|             } | ||||
|         } | ||||
|  | ||||
| @ -87,7 +87,8 @@ | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Loading User Profile {Error}", ex.Message); | ||||
|             AddModuleMessage("Error Loading User Profile", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -107,16 +108,19 @@ | ||||
|             if (user != null) | ||||
|             { | ||||
|                 await SettingService.UpdateUserSettingsAsync(settings, user.UserId); | ||||
|                 await logger.LogInformation("User Created {User}", user); | ||||
|                 NavigationManager.NavigateTo(NavigateUrl()); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 await logger.LogError("Error Adding User {Username} {Email}", username, email); | ||||
|                 AddModuleMessage("Error Adding User. Please Ensure Password Meets Complexity Requirements And Username Is Not Already In Use.", MessageType.Error); | ||||
|             } | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Adding User {Username} {Email} {Error}", username, email, ex.Message); | ||||
|             AddModuleMessage("Error Adding User", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -126,4 +130,4 @@ | ||||
|         settings = SettingService.SetSetting(settings, SettingName, value); | ||||
|     } | ||||
|  | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -88,7 +88,8 @@ | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Loading User {UserId} {Error}", userid, ex.Message); | ||||
|             AddModuleMessage("Error Loading User", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -100,14 +101,15 @@ | ||||
|             if (user != null) | ||||
|             { | ||||
|                 await UserService.DeleteUserAsync(userid); | ||||
|                 await logger.LogInformation("User Deleted {UserId}", userid); | ||||
|                 NavigationManager.NavigateTo(NavigateUrl()); | ||||
|             } | ||||
|  | ||||
|             NavigationManager.NavigateTo(NavigateUrl()); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             await logger.LogError(ex, "Error Loading User {UserId} {Error}", userid, ex.Message); | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| } | ||||
|  | ||||
| @ -125,7 +125,8 @@ | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Loading User {UserId} {Error}", userid, ex.Message); | ||||
|             AddModuleMessage("Error Loading User", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -148,12 +149,14 @@ | ||||
|  | ||||
|             user = await UserService.UpdateUserAsync(user); | ||||
|             await SettingService.UpdateUserSettingsAsync(settings, user.UserId); | ||||
|             await logger.LogInformation("User Saved {User}", user); | ||||
|  | ||||
|             NavigationManager.NavigateTo(NavigateUrl()); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Saving User {Username} {Email} {Error}", username, email, ex.Message); | ||||
|             AddModuleMessage("Error Saving User", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|  | ||||
| @ -84,14 +84,23 @@ else | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Loading Roles {Error}", ex.Message); | ||||
|             AddModuleMessage("Error Loading Roles", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private async Task GetUserRoles() | ||||
|     { | ||||
|         userroles = await UserRoleService.GetUserRolesAsync(PageState.Site.SiteId); | ||||
|         userroles = userroles.Where(item => item.UserId == userid).ToList(); | ||||
|         try | ||||
|         { | ||||
|             userroles = await UserRoleService.GetUserRolesAsync(PageState.Site.SiteId); | ||||
|             userroles = userroles.Where(item => item.UserId == userid).ToList(); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             await logger.LogError(ex, "Error Loading User Roles {UserId} {Error}", userid, ex.Message); | ||||
|             AddModuleMessage("Error Loading User Roles", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private async Task SaveUserRole() | ||||
| @ -145,6 +154,7 @@ else | ||||
|                     await UserRoleService.AddUserRoleAsync(userrole); | ||||
|                 } | ||||
|                 await GetUserRoles(); | ||||
|                 await logger.LogInformation("User Assigned To Role {UserRole}", userrole); | ||||
|                 AddModuleMessage("User Assigned To Role", MessageType.Success); | ||||
|             } | ||||
|             else | ||||
| @ -154,15 +164,24 @@ else | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Saving User Roles {UserId} {Error}", userid, ex.Message); | ||||
|             AddModuleMessage("Error Saving User Roles", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private async Task DeleteUserRole(int UserRoleId) | ||||
|     { | ||||
|         await UserRoleService.DeleteUserRoleAsync(UserRoleId); | ||||
|         await GetUserRoles(); | ||||
|         AddModuleMessage("User Removed From Role", MessageType.Success); | ||||
|         try | ||||
|         { | ||||
|             await UserRoleService.DeleteUserRoleAsync(UserRoleId); | ||||
|             await GetUserRoles(); | ||||
|             await logger.LogInformation("User Removed From Role {UserRoleId}", UserRoleId); | ||||
|             AddModuleMessage("User Removed From Role", MessageType.Success); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             await logger.LogError(ex, "Error Removing User From Role {UserRoleId} {Error}", UserRoleId, ex.Message); | ||||
|             AddModuleMessage("Error Removing User From Role", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| } | ||||
| @ -49,6 +49,7 @@ | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             await logger.LogError(ex, "An Error Occurred Loading Html/Text Content. " + ex.Message); | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|         } | ||||
|     } | ||||
| @ -71,11 +72,13 @@ | ||||
|                 htmltext.Content = content; | ||||
|                 await htmltextservice.AddHtmlTextAsync(htmltext); | ||||
|             } | ||||
|             await logger.LogInformation("Html/Text Content Saved {HtmlText}", htmltext); | ||||
|             NavigationManager.NavigateTo(NavigateUrl(Reload.Page)); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|             await logger.LogError(ex, "Error Saving Content {Error}", ex.Message); | ||||
|             AddModuleMessage("Error Saving Content", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -1,4 +1,6 @@ | ||||
| namespace Oqtane.Modules | ||||
| using Oqtane.Shared; | ||||
|  | ||||
| namespace Oqtane.Modules | ||||
| { | ||||
|     public interface IModuleControl | ||||
|     { | ||||
|  | ||||
| @ -1,16 +1,24 @@ | ||||
| using Microsoft.AspNetCore.Components; | ||||
| using Microsoft.JSInterop; | ||||
| using Oqtane.Shared; | ||||
| using Oqtane.Models; | ||||
| using System.Threading.Tasks; | ||||
| using System.Linq; | ||||
| using Oqtane.Services; | ||||
| using System; | ||||
|  | ||||
| namespace Oqtane.Modules | ||||
| { | ||||
|     public class ModuleBase : ComponentBase, IModuleControl | ||||
|     { | ||||
|         public Logger logger { get; set; } | ||||
|  | ||||
|         public ModuleBase() | ||||
|         { | ||||
|             this.logger = new Logger(this); | ||||
|         } | ||||
|  | ||||
|         [Inject] | ||||
|         protected IJSRuntime JSRuntime { get; set; } | ||||
|         protected ILogService LoggingService { get; set; } | ||||
|  | ||||
|         [CascadingParameter] | ||||
|         protected PageState PageState { get; set; } | ||||
| @ -29,6 +37,7 @@ namespace Oqtane.Modules | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         // optional interface properties | ||||
|         public virtual SecurityAccessLevel SecurityAccessLevel { get { return SecurityAccessLevel.View; } set { } } // default security | ||||
|  | ||||
|         public virtual string Title { get { return ""; } } | ||||
| @ -37,11 +46,14 @@ namespace Oqtane.Modules | ||||
|  | ||||
|         public virtual bool UseAdminContainer { get { return true; } } | ||||
|  | ||||
|         // path method | ||||
|  | ||||
|         public string ModulePath() | ||||
|         { | ||||
|             return "Modules/" + this.GetType().Namespace + "/"; | ||||
|         } | ||||
|  | ||||
|         // url methods | ||||
|         public string NavigateUrl() | ||||
|         { | ||||
|             return NavigateUrl(PageState.Page.Path); | ||||
| @ -97,6 +109,7 @@ namespace Oqtane.Modules | ||||
|             return Utilities.EditUrl(PageState.Alias.Path, path, moduleid, action, parameters); | ||||
|         } | ||||
|  | ||||
|         // user feedback methods | ||||
|         public void AddModuleMessage(string message, MessageType type) | ||||
|         { | ||||
|             ModuleInstance.AddModuleMessage(message, type); | ||||
| @ -111,5 +124,88 @@ namespace Oqtane.Modules | ||||
|         { | ||||
|             ModuleInstance.HideProgressIndicator(); | ||||
|         } | ||||
|  | ||||
|         // logging method | ||||
|         public async Task Log(LogLevel level, Exception exception, string message, params object[] args) | ||||
|         { | ||||
|             int PageId = PageState.Page.PageId; | ||||
|             int ModuleId = ModuleState.ModuleId; | ||||
|             int? UserId = null; | ||||
|             if (PageState.User != null) | ||||
|             { | ||||
|                 UserId = PageState.User.UserId; | ||||
|             } | ||||
|             await LoggingService.Log(PageId, ModuleId, UserId, this.GetType().ToString(), level, exception, message, args); | ||||
|         } | ||||
|  | ||||
|         public class Logger | ||||
|         { | ||||
|             private ModuleBase modulebase; | ||||
|  | ||||
|             public Logger(ModuleBase modulebase) | ||||
|             { | ||||
|                 this.modulebase = modulebase; | ||||
|             } | ||||
|  | ||||
|             public async Task LogTrace(string message, params object[] args) | ||||
|             { | ||||
|                 await modulebase.Log(LogLevel.Trace, null, message, args); | ||||
|             } | ||||
|  | ||||
|             public async Task LogTrace(Exception exception, string message, params object[] args) | ||||
|             { | ||||
|                 await modulebase.Log(LogLevel.Trace, exception, message, args); | ||||
|             } | ||||
|  | ||||
|             public async Task LogDebug(string message, params object[] args) | ||||
|             { | ||||
|                 await modulebase.Log(LogLevel.Debug, null, message, args); | ||||
|             } | ||||
|  | ||||
|             public async Task LogDebug(Exception exception, string message, params object[] args) | ||||
|             { | ||||
|                 await modulebase.Log(LogLevel.Debug, exception, message, args); | ||||
|             } | ||||
|  | ||||
|             public async Task LogInformation(string message, params object[] args) | ||||
|             { | ||||
|                 await modulebase.Log(LogLevel.Information, null, message, args); | ||||
|             } | ||||
|  | ||||
|             public async Task LogInformation(Exception exception, string message, params object[] args) | ||||
|             { | ||||
|                 await modulebase.Log(LogLevel.Information, exception, message, args); | ||||
|             } | ||||
|  | ||||
|             public async Task LogWarning(string message, params object[] args) | ||||
|             { | ||||
|                 await modulebase.Log(LogLevel.Warning, null, message, args); | ||||
|             } | ||||
|  | ||||
|             public async Task LogWarning(Exception exception, string message, params object[] args) | ||||
|             { | ||||
|                 await modulebase.Log(LogLevel.Warning, exception, message, args); | ||||
|             } | ||||
|  | ||||
|             public async Task LogError(string message, params object[] args) | ||||
|             { | ||||
|                 await modulebase.Log(LogLevel.Error, null, message, args); | ||||
|             } | ||||
|  | ||||
|             public async Task LogError(Exception exception, string message, params object[] args) | ||||
|             { | ||||
|                 await modulebase.Log(LogLevel.Error, exception, message, args); | ||||
|             } | ||||
|  | ||||
|             public async Task LogCritical(string message, params object[] args) | ||||
|             { | ||||
|                 await modulebase.Log(LogLevel.Critical, null, message, args); | ||||
|             } | ||||
|  | ||||
|             public async Task LogCritical(Exception exception, string message, params object[] args) | ||||
|             { | ||||
|                 await modulebase.Log(LogLevel.Critical, exception, message, args); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Shaun Walker
					Shaun Walker