@namespace Oqtane.Modules.Admin.Tenants
@inherits ModuleBase
@inject NavigationManager NavigationManager
@inject ITenantService TenantService
@inject IInstallationService InstallationService
Cancel
@code {
private string name = string.Empty;
private string type = "LocalDB";
private string server = "(LocalDb)\\MSSQLLocalDB";
private string database = "Oqtane-" + DateTime.UtcNow.ToString("yyyyMMddHHmm");
private string username = string.Empty;
private string password = string.Empty;
private string schema = string.Empty;
private string integratedsecurity = "display: none;";
public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Host;
private void SetIntegratedSecurity(ChangeEventArgs e)
{
if (Convert.ToBoolean((string)e.Value))
{
integratedsecurity = "display: none;";
}
else
{
integratedsecurity = string.Empty;
}
}
private async Task SaveTenant()
{
if (!string.IsNullOrEmpty(name))
{
ShowProgressIndicator();
var connectionString = string.Empty;
if (type == "LocalDB")
{
connectionString = "Data Source=" + server + ";AttachDbFilename=|DataDirectory|\\" + database + ".mdf;Initial Catalog=" + database + ";Integrated Security=SSPI;";
}
else
{
connectionString = "Data Source=" + server + ";Initial Catalog=" + database + ";";
if (integratedsecurity == "display: none;")
{
connectionString += "Integrated Security=SSPI;";
}
else
{
connectionString += "User ID=" + username + ";Password=" + password;
}
}
var config = new InstallConfig
{
IsMaster = false,
ConnectionString = connectionString,
};
var installation = await InstallationService.Install(config);
if (installation.Success)
{
//TODO : Move to Database Manager
var tenant = new Tenant
{
Name = name,
DBConnectionString = connectionString,
IsInitialized = false
};
await TenantService.AddTenantAsync(tenant);
await logger.LogInformation("Tenant Created {Tenant}", tenant);
NavigationManager.NavigateTo(NavigateUrl());
}
else
{
await logger.LogError("Error Creating Tenant {Error}", installation.Message);
AddModuleMessage(installation.Message, MessageType.Error);
}
}
else
{
AddModuleMessage("You Must Provide A Name For The Tenant", MessageType.Warning);
}
}
}