Merge pull request #119 from sbwalker/master

tenant/site installation improvements
This commit is contained in:
Shaun Walker 2019-10-08 18:36:22 -04:00 committed by GitHub
commit 4d7c2eb885
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 161 additions and 81 deletions

View File

@ -95,8 +95,8 @@ else
string name = ""; string name = "";
string urls = ""; string urls = "";
string logo = ""; string logo = "";
string themetype; string themetype = "";
string layouttype; string layouttype = "";
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
@ -108,23 +108,31 @@ else
private async Task SaveSite() private async Task SaveSite()
{ {
Site site = new Site(); if (name != "" && urls != "" && themetype != "")
site.Name = name;
site.Logo = (logo == null ? "" : logo);
site.DefaultThemeType = themetype;
site.DefaultLayoutType = (layouttype == null ? "" : layouttype);
site = await SiteService.AddSiteAsync(site);
urls = urls.Replace("\n", ",");
foreach(string name in urls.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
{ {
Alias alias = new Alias(); Site site = new Site();
alias.Name = name; site.Name = name;
alias.TenantId = int.Parse(tenantid); site.Logo = (logo == null ? "" : logo);
alias.SiteId = site.SiteId; site.DefaultThemeType = themetype;
await AliasService.AddAliasAsync(alias); site.DefaultLayoutType = (layouttype == null ? "" : layouttype);
site = await SiteService.AddSiteAsync(site);
urls = urls.Replace("\n", ",");
foreach(string name in urls.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
{
Alias alias = new Alias();
alias.Name = name;
alias.TenantId = int.Parse(tenantid);
alias.SiteId = site.SiteId;
await AliasService.AddAliasAsync(alias);
}
NavigationManager.NavigateTo("http://" + urls.Split(',')[0], true);
}
else
{
ModuleInstance.AddModuleMessage("You Must Provide A Site Name, Alias, And Default Theme", MessageType.Warning);
} }
NavigationManager.NavigateTo("http://" + urls[0], true);
} }
} }

View File

@ -19,6 +19,14 @@ else
<input class="form-control" @bind="@name" disabled /> <input class="form-control" @bind="@name" disabled />
</td> </td>
</tr> </tr>
<tr>
<td>
<label for="Name" class="control-label">Aliases: </label>
</td>
<td>
<textarea class="form-control" @bind="@urls" rows="3" disabled />
</td>
</tr>
<tr> <tr>
<td> <td>
<label for="Name" class="control-label">Logo: </label> <label for="Name" class="control-label">Logo: </label>
@ -80,7 +88,10 @@ else
Dictionary<string, string> themes = new Dictionary<string, string>(); Dictionary<string, string> themes = new Dictionary<string, string>();
Dictionary<string, string> panelayouts = new Dictionary<string, string>(); Dictionary<string, string> panelayouts = new Dictionary<string, string>();
int siteid;
string name = ""; string name = "";
List<Alias> aliases;
string urls = "";
string logo = ""; string logo = "";
string themetype; string themetype;
string layouttype; string layouttype;
@ -92,27 +103,52 @@ else
DateTime? deletedon; DateTime? deletedon;
string isdeleted; string isdeleted;
protected override void OnInitialized() protected override async Task OnInitializedAsync()
{ {
themes = ThemeService.GetThemeTypes(PageState.Themes); try
panelayouts = ThemeService.GetPaneLayoutTypes(PageState.Themes); {
name = PageState.Site.Name; themes = ThemeService.GetThemeTypes(PageState.Themes);
logo = PageState.Site.Logo; panelayouts = ThemeService.GetPaneLayoutTypes(PageState.Themes);
themetype = PageState.Site.DefaultThemeType;
layouttype = PageState.Site.DefaultLayoutType;
createdby = PageState.Site.CreatedBy; siteid = Int32.Parse(PageState.QueryString["id"]);
createdon = PageState.Site.CreatedOn; Site site = await SiteService.GetSiteAsync(siteid);
modifiedby = PageState.Site.ModifiedBy; if (site != null)
modifiedon = PageState.Site.ModifiedOn; {
deletedby = PageState.Site.DeletedBy; name = site.Name;
deletedon = PageState.Site.DeletedOn; aliases = PageState.Aliases.Where(item => item.SiteId == site.SiteId).ToList();
isdeleted = PageState.Site.IsDeleted.ToString(); foreach (Alias alias in aliases)
{
urls += alias.Name + "\n";
}
logo = site.Logo;
themetype = site.DefaultThemeType;
layouttype = site.DefaultLayoutType;
createdby = site.CreatedBy;
createdon = site.CreatedOn;
modifiedby = site.ModifiedBy;
modifiedon = site.ModifiedOn;
deletedby = site.DeletedBy;
deletedon = site.DeletedOn;
isdeleted = site.IsDeleted.ToString();
}
}
catch (Exception ex)
{
ModuleInstance.AddModuleMessage(ex.Message, MessageType.Error);
}
} }
private async Task DeleteSite() private async Task DeleteSite()
{ {
await SiteService.DeleteSiteAsync(PageState.Site.SiteId); try
NavigationManager.NavigateTo(NavigateUrl()); {
await SiteService.DeleteSiteAsync(PageState.Site.SiteId);
NavigationManager.NavigateTo(NavigateUrl());
}
catch (Exception ex)
{
ModuleInstance.AddModuleMessage(ex.Message, MessageType.Error);
}
} }
} }

View File

@ -89,8 +89,9 @@ else
Dictionary<string, string> themes = new Dictionary<string, string>(); Dictionary<string, string> themes = new Dictionary<string, string>();
Dictionary<string, string> panelayouts = new Dictionary<string, string>(); Dictionary<string, string> panelayouts = new Dictionary<string, string>();
List<Alias> aliases; int siteid;
string name = ""; string name = "";
List<Alias> aliases;
string urls = ""; string urls = "";
string logo = ""; string logo = "";
string themetype; string themetype;
@ -104,61 +105,91 @@ else
DateTime? deletedon; DateTime? deletedon;
string isdeleted; string isdeleted;
protected override void OnInitialized() protected override async Task OnInitializedAsync()
{ {
aliases = PageState.Aliases.Where(item => item.TenantId == PageState.Alias.TenantId && item.SiteId == PageState.Site.SiteId).ToList(); try
themes = ThemeService.GetThemeTypes(PageState.Themes);
panelayouts = ThemeService.GetPaneLayoutTypes(PageState.Themes);
name = PageState.Site.Name;
foreach (Alias alias in aliases)
{ {
urls += alias.Name + "\n"; themes = ThemeService.GetThemeTypes(PageState.Themes);
} panelayouts = ThemeService.GetPaneLayoutTypes(PageState.Themes);
logo = PageState.Site.Logo;
themetype = PageState.Site.DefaultThemeType;
layouttype = PageState.Site.DefaultLayoutType;
createdby = PageState.Site.CreatedBy; siteid = Int32.Parse(PageState.QueryString["id"]);
createdon = PageState.Site.CreatedOn; Site site = await SiteService.GetSiteAsync(siteid);
modifiedby = PageState.Site.ModifiedBy; if (site != null)
modifiedon = PageState.Site.ModifiedOn; {
deletedby = PageState.Site.DeletedBy; name = site.Name;
deletedon = PageState.Site.DeletedOn; aliases = PageState.Aliases.Where(item => item.SiteId == site.SiteId).ToList();
isdeleted = PageState.Site.IsDeleted.ToString(); foreach (Alias alias in aliases)
{
urls += alias.Name + "\n";
}
logo = site.Logo;
themetype = site.DefaultThemeType;
layouttype = site.DefaultLayoutType;
createdby = site.CreatedBy;
createdon = site.CreatedOn;
modifiedby = site.ModifiedBy;
modifiedon = site.ModifiedOn;
deletedby = site.DeletedBy;
deletedon = site.DeletedOn;
isdeleted = site.IsDeleted.ToString();
}
}
catch (Exception ex)
{
ModuleInstance.AddModuleMessage(ex.Message, MessageType.Error);
}
} }
private async Task SaveSite() private async Task SaveSite()
{ {
Site site = PageState.Site; try
site.Name = name;
site.Logo = (logo == null ? "" : logo);
site.DefaultThemeType = themetype;
site.DefaultLayoutType = (layouttype == null ? "" : layouttype);
site.IsDeleted = (isdeleted == null ? true : Boolean.Parse(isdeleted));
site = await SiteService.UpdateSiteAsync(site);
urls = urls.Replace("\n", ",");
string[] names = urls.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
foreach (Alias alias in aliases)
{ {
if (!names.Contains(alias.Name)) if (name != "" && urls != "" && themetype != "")
{ {
await AliasService.DeleteAliasAsync(alias.AliasId); Site site = await SiteService.GetSiteAsync(siteid);
if (site != null)
{
site.Name = name;
site.Logo = (logo == null ? "" : logo);
site.DefaultThemeType = themetype;
site.DefaultLayoutType = (layouttype == null ? "" : layouttype);
site.IsDeleted = (isdeleted == null ? true : Boolean.Parse(isdeleted));
site = await SiteService.UpdateSiteAsync(site);
urls = urls.Replace("\n", ",");
string[] names = urls.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
foreach (Alias alias in aliases)
{
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 = PageState.Alias.TenantId;
alias.SiteId = site.SiteId;
await AliasService.AddAliasAsync(alias);
}
}
NavigationManager.NavigateTo(NavigateUrl());
}
}
else
{
ModuleInstance.AddModuleMessage("You Must Provide A Site Name, Alias, And Default Theme", MessageType.Warning);
} }
} }
foreach (string name in names) catch (Exception ex)
{ {
if (!aliases.Exists(item => item.Name == name)) ModuleInstance.AddModuleMessage(ex.Message, MessageType.Error);
{
Alias alias = new Alias();
alias.Name = name;
alias.TenantId = PageState.Alias.TenantId;
alias.SiteId = site.SiteId;
await AliasService.AddAliasAsync(alias);
}
} }
NavigationManager.NavigateTo(NavigateUrl());
} }
} }

View File

@ -42,6 +42,7 @@
private async Task SaveTenant() private async Task SaveTenant()
{ {
connectionstring = connectionstring.Replace("\\\\", "\\");
GenericResponse response = await InstallationService.Install(connectionstring); GenericResponse response = await InstallationService.Install(connectionstring);
if (response.Success) if (response.Success)
{ {

View File

@ -60,6 +60,7 @@
} }
private async Task SaveTenant() private async Task SaveTenant()
{ {
connectionstring = connectionstring.Replace("\\\\", "\\");
Tenant tenant = await TenantService.GetTenantAsync(tenantid); Tenant tenant = await TenantService.GetTenantAsync(tenantid);
if (tenant != null) if (tenant != null)
{ {

View File

@ -38,7 +38,7 @@ namespace Oqtane.Controllers
{ {
bool master = false; bool master = false;
string defaultconnectionstring = Config.GetConnectionString("DefaultConnection"); string defaultconnectionstring = Config.GetConnectionString("DefaultConnection");
if (string.IsNullOrEmpty(defaultconnectionstring) || connectionstring != defaultconnectionstring) if (string.IsNullOrEmpty(defaultconnectionstring) || connectionstring == defaultconnectionstring)
{ {
master = true; master = true;
} }
@ -126,7 +126,7 @@ namespace Oqtane.Controllers
{ {
initializationScript = reader.ReadToEnd(); initializationScript = reader.ReadToEnd();
} }
initializationScript = initializationScript.Replace("{ConnectionString}", connectionstring); initializationScript = initializationScript.Replace("{ConnectionString}", connectionstring.Replace(datadirectory, "|DataDirectory|"));
initializationScript = initializationScript.Replace("{Alias}", HttpContext.Request.Host.Value); initializationScript = initializationScript.Replace("{Alias}", HttpContext.Request.Host.Value);
} }
@ -218,8 +218,11 @@ namespace Oqtane.Controllers
{ {
foreach (Tenant tenant in db.Tenant.ToList()) foreach (Tenant tenant in db.Tenant.ToList())
{ {
connectionString = tenant.DBConnectionString;
connectionString = connectionString.Replace("|DataDirectory|", datadirectory);
// upgrade framework // upgrade framework
dbUpgradeConfig = DeployChanges.To.SqlDatabase(tenant.DBConnectionString) dbUpgradeConfig = DeployChanges.To.SqlDatabase(connectionString)
.WithScriptsEmbeddedInAssembly(Assembly.GetExecutingAssembly()); .WithScriptsEmbeddedInAssembly(Assembly.GetExecutingAssembly());
dbUpgrade = dbUpgradeConfig.Build(); dbUpgrade = dbUpgradeConfig.Build();
if (dbUpgrade.IsUpgradeRequired()) if (dbUpgrade.IsUpgradeRequired())
@ -233,7 +236,7 @@ namespace Oqtane.Controllers
// iterate through Oqtane module assemblies and execute any database scripts // iterate through Oqtane module assemblies and execute any database scripts
foreach (Assembly assembly in assemblies) foreach (Assembly assembly in assemblies)
{ {
InstallModule(assembly, tenant.DBConnectionString); InstallModule(assembly, connectionString);
} }
} }
} }