@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 _themeList; string _name = ""; List _tenantList; string _tenant = ""; List _aliasList; 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 { _themeList = await ThemeService.GetThemesAsync(); _aliasList = await AliasService.GetAliasesAsync(); Site site = await SiteService.GetSiteAsync(PageState.Site.SiteId, PageState.Alias); if (site != null) { _name = site.Name; _tenantList = await TenantService.GetTenantsAsync(); _tenant = _tenantList.Find(item => item.TenantId == site.TenantId).Name; foreach (Alias alias in _aliasList.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(_themeList, _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(_themeList); _containers = ThemeService.GetContainerTypes(_themeList); } 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(_themeList, _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 (_aliasList.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 _aliasList.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 (!_aliasList.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); } } }