@namespace Oqtane.Modules.Admin.Users @inherits ModuleBase @inject NavigationManager NavigationManager @inject IUserService UserService @inject IProfileService ProfileService @inject ISettingService SettingService @if (PageState.User != null && photofileid != -1) { } else { } @if (profiles != null) { Username: Password: Confirm Password: Email: Full Name: Photo: Is Deleted? Yes No } @if (profiles != null) { @foreach (Profile profile in profiles) { var p = profile; if (p.Category != category) { @p.Category category = p.Category; } @p.Title: ProfileChanged(e, p.Name))" /> } } Save Cancel @code { private int userid; private string username = string.Empty; private string password = string.Empty; private string confirm = string.Empty; private string email = string.Empty; private string displayname = string.Empty; private FileManager filemanager; private int photofileid = -1; private List profiles; private Dictionary settings; private string category = string.Empty; private string createdby; private DateTime createdon; private string modifiedby; private DateTime modifiedon; private string deletedby; private DateTime? deletedon; private string isdeleted; public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; protected override async Task OnInitializedAsync() { try { profiles = await ProfileService.GetProfilesAsync(PageState.Site.SiteId); userid = Int32.Parse(PageState.QueryString["id"]); var user = await UserService.GetUserAsync(userid, PageState.Site.SiteId); if (user != null) { username = user.Username; email = user.Email; displayname = user.DisplayName; if (user.PhotoFileId != null) { photofileid = user.PhotoFileId.Value; } settings = await SettingService.GetUserSettingsAsync(user.UserId); createdby = user.CreatedBy; createdon = user.CreatedOn; modifiedby = user.ModifiedBy; modifiedon = user.ModifiedOn; deletedby = user.DeletedBy; deletedon = user.DeletedOn; isdeleted = user.IsDeleted.ToString(); } } catch (Exception ex) { await logger.LogError(ex, "Error Loading User {UserId} {Error}", userid, ex.Message); AddModuleMessage("Error Loading User", MessageType.Error); } } private string GetProfileValue(string SettingName, string DefaultValue) => SettingService.GetSetting(settings, SettingName, DefaultValue); private async Task SaveUser() { try { if (username != string.Empty && email != string.Empty) { if (password == confirm) { var user = await UserService.GetUserAsync(userid, PageState.Site.SiteId); user.SiteId = PageState.Site.SiteId; user.Username = username; user.Password = password; user.Email = email; user.DisplayName = string.IsNullOrWhiteSpace(displayname) ? username : displayname; user.PhotoFileId = null; photofileid = filemanager.GetFileId(); if (photofileid != -1) { user.PhotoFileId = photofileid; } user.IsDeleted = (isdeleted == null ? true : Boolean.Parse(isdeleted)); user = await UserService.UpdateUserAsync(user); await SettingService.UpdateUserSettingsAsync(settings, user.UserId); await logger.LogInformation("User Saved {User}", user); NavigationManager.NavigateTo(NavigateUrl()); } else { AddModuleMessage("Passwords Entered Do Not Match", MessageType.Warning); } } else { AddModuleMessage("You Must Provide A Username, Password, and Email Address", MessageType.Warning); } } catch (Exception ex) { await logger.LogError(ex, "Error Saving User {Username} {Email} {Error}", username, email, ex.Message); AddModuleMessage("Error Saving User", MessageType.Error); } } private void ProfileChanged(ChangeEventArgs e, string SettingName) { var value = (string)e.Value; settings = SettingService.SetSetting(settings, SettingName, value); } }