@namespace Oqtane.Modules.Admin.Site @inherits ModuleBase @inject NavigationManager NavigationManager @inject ISiteService SiteService @inject ITenantService TenantService @inject IAliasService AliasService @inject IThemeService ThemeService @inject ISettingService SettingService @if (themes != null) {

Cancel

} @code { public override SecurityAccessLevel SecurityAccessLevel { get { return SecurityAccessLevel.Admin; } } Dictionary themes; Dictionary panelayouts; Dictionary containers; List Themes; string name = ""; List tenants; string tenant = ""; List aliases; string urls = ""; int logofileid = -1; FileManager filemanager; string themetype; string layouttype; string containertype; string smtphost = ""; string smtpport = ""; string smtpssl = ""; string smtpusername = ""; string smtppassword = ""; string createdby; DateTime createdon; string modifiedby; DateTime modifiedon; string deletedby; DateTime? deletedon; string isdeleted; protected override async Task OnInitializedAsync() { try { Themes = await ThemeService.GetThemesAsync(); aliases = await AliasService.GetAliasesAsync(); Site site = await SiteService.GetSiteAsync(PageState.Site.SiteId, PageState.Alias); if (site != null) { name = site.Name; tenants = await TenantService.GetTenantsAsync(); tenant = tenants.Find(item => item.TenantId == site.TenantId).Name; foreach (Alias alias in aliases.Where(item => item.SiteId == site.SiteId && item.TenantId == site.TenantId).ToList()) { urls += alias.Name + "\n"; } if (site.LogoFileId != null) { logofileid = site.LogoFileId.Value; } themetype = site.DefaultThemeType; panelayouts = ThemeService.GetPaneLayoutTypes(Themes, themetype); layouttype = site.DefaultLayoutType; containertype = site.DefaultContainerType; Dictionary settings = await SettingService.GetSiteSettingsAsync(site.SiteId); smtphost = SettingService.GetSetting(settings, "SMTPHost", ""); smtpport = SettingService.GetSetting(settings, "SMTPPort", ""); smtpssl = SettingService.GetSetting(settings, "SMTPSSL", ""); smtpusername = SettingService.GetSetting(settings, "SMTPUsername", ""); smtppassword = SettingService.GetSetting(settings, "SMTPPassword", ""); createdby = site.CreatedBy; createdon = site.CreatedOn; modifiedby = site.ModifiedBy; modifiedon = site.ModifiedOn; deletedby = site.DeletedBy; deletedon = site.DeletedOn; isdeleted = site.IsDeleted.ToString(); } themes = ThemeService.GetThemeTypes(Themes); containers = ThemeService.GetContainerTypes(Themes); } catch (Exception ex) { await logger.LogError(ex, "Error Loading Site {SiteId} {Error}", PageState.Site.SiteId, ex.Message); AddModuleMessage(ex.Message, MessageType.Error); } } private async void ThemeChanged(ChangeEventArgs e) { try { themetype = (string)e.Value; if (themetype != "") { panelayouts = ThemeService.GetPaneLayoutTypes(Themes, themetype); } else { panelayouts = new Dictionary(); } StateHasChanged(); } catch (Exception ex) { 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 SaveSite() { try { if (name != "" && urls != "" && !string.IsNullOrEmpty(themetype) && (panelayouts.Count == 0 || !string.IsNullOrEmpty(layouttype)) && !string.IsNullOrEmpty(containertype)) { bool unique = true; foreach (string name in urls.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) { if (aliases.Exists(item => item.Name == name && item.SiteId != PageState.Alias.SiteId && item.TenantId != PageState.Alias.TenantId)) { unique = false; } } if (unique) { Site site = await SiteService.GetSiteAsync(PageState.Site.SiteId, PageState.Alias); if (site != null) { site.Name = name; site.LogoFileId = null; int logofileid = filemanager.GetFileId(); if (logofileid != -1) { site.LogoFileId = logofileid; } site.DefaultThemeType = themetype; site.DefaultLayoutType = (layouttype == null ? "" : layouttype); site.DefaultContainerType = containertype; site.IsDeleted = (isdeleted == null ? true : Boolean.Parse(isdeleted)); site = await SiteService.UpdateSiteAsync(site, PageState.Alias); urls = urls.Replace("\n", ","); string[] names = urls.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); foreach (Alias alias in aliases.Where(item => item.SiteId == site.SiteId && item.TenantId == site.TenantId).ToList()) { if (!names.Contains(alias.Name)) { await AliasService.DeleteAliasAsync(alias.AliasId); } } foreach (string name in names) { if (!aliases.Exists(item => item.Name == name)) { Alias alias = new Alias(); alias.Name = name; alias.TenantId = site.TenantId; alias.SiteId = site.SiteId; await AliasService.AddAliasAsync(alias); } } Dictionary settings = await SettingService.GetSiteSettingsAsync(site.SiteId); SettingService.SetSetting(settings, "SMTPHost", smtphost); SettingService.SetSetting(settings, "SMTPPort", smtpport); SettingService.SetSetting(settings, "SMTPSSL", smtpssl); SettingService.SetSetting(settings, "SMTPUsername", smtpusername); SettingService.SetSetting(settings, "SMTPPassword", smtppassword); await SettingService.UpdateSiteSettingsAsync(settings, site.SiteId); await logger.LogInformation("Site Saved {Site}", site); NavigationManager.NavigateTo(NavigateUrl()); } } else { AddModuleMessage("An Alias Specified Has Already Been Used For Another Site", MessageType.Warning); } } else { AddModuleMessage("You Must Provide A Site Name, Alias, And Default Theme/Container", MessageType.Warning); } } catch (Exception ex) { await logger.LogError(ex, "Error Saving Site {SiteId} {Error}", PageState.Site.SiteId, ex.Message); AddModuleMessage("Error Saving Site", MessageType.Error); } } }