tenant/site installation improvements
This commit is contained in:
		@ -95,8 +95,8 @@ else
 | 
			
		||||
    string name = "";
 | 
			
		||||
    string urls = "";
 | 
			
		||||
    string logo = "";
 | 
			
		||||
    string themetype;
 | 
			
		||||
    string layouttype;
 | 
			
		||||
    string themetype = "";
 | 
			
		||||
    string layouttype = "";
 | 
			
		||||
 | 
			
		||||
    protected override async Task OnInitializedAsync()
 | 
			
		||||
    {
 | 
			
		||||
@ -108,23 +108,31 @@ else
 | 
			
		||||
 | 
			
		||||
    private async Task SaveSite()
 | 
			
		||||
    {
 | 
			
		||||
        Site site = new Site();
 | 
			
		||||
        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))
 | 
			
		||||
        if (name != "" && urls != "" && themetype != "")
 | 
			
		||||
        {
 | 
			
		||||
            Alias alias = new Alias();
 | 
			
		||||
            alias.Name = name;
 | 
			
		||||
            alias.TenantId = int.Parse(tenantid);
 | 
			
		||||
            alias.SiteId = site.SiteId;
 | 
			
		||||
            await AliasService.AddAliasAsync(alias);
 | 
			
		||||
            Site site = new Site();
 | 
			
		||||
            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();
 | 
			
		||||
                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);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -19,6 +19,14 @@ else
 | 
			
		||||
                <input class="form-control" @bind="@name" disabled />
 | 
			
		||||
            </td>
 | 
			
		||||
        </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>
 | 
			
		||||
            <td>
 | 
			
		||||
                <label for="Name" class="control-label">Logo: </label>
 | 
			
		||||
@ -80,7 +88,10 @@ else
 | 
			
		||||
    Dictionary<string, string> themes = new Dictionary<string, string>();
 | 
			
		||||
    Dictionary<string, string> panelayouts = new Dictionary<string, string>();
 | 
			
		||||
 | 
			
		||||
    int siteid;
 | 
			
		||||
    string name = "";
 | 
			
		||||
    List<Alias> aliases;
 | 
			
		||||
    string urls = "";
 | 
			
		||||
    string logo = "";
 | 
			
		||||
    string themetype;
 | 
			
		||||
    string layouttype;
 | 
			
		||||
@ -92,27 +103,52 @@ else
 | 
			
		||||
    DateTime? deletedon;
 | 
			
		||||
    string isdeleted;
 | 
			
		||||
 | 
			
		||||
    protected override void OnInitialized()
 | 
			
		||||
    protected override async Task OnInitializedAsync()
 | 
			
		||||
    {
 | 
			
		||||
        themes = ThemeService.GetThemeTypes(PageState.Themes);
 | 
			
		||||
        panelayouts = ThemeService.GetPaneLayoutTypes(PageState.Themes);
 | 
			
		||||
        name = PageState.Site.Name;
 | 
			
		||||
        logo = PageState.Site.Logo;
 | 
			
		||||
        themetype = PageState.Site.DefaultThemeType;
 | 
			
		||||
        layouttype = PageState.Site.DefaultLayoutType;
 | 
			
		||||
        try
 | 
			
		||||
        {
 | 
			
		||||
            themes = ThemeService.GetThemeTypes(PageState.Themes);
 | 
			
		||||
            panelayouts = ThemeService.GetPaneLayoutTypes(PageState.Themes);
 | 
			
		||||
 | 
			
		||||
        createdby = PageState.Site.CreatedBy;
 | 
			
		||||
        createdon = PageState.Site.CreatedOn;
 | 
			
		||||
        modifiedby = PageState.Site.ModifiedBy;
 | 
			
		||||
        modifiedon = PageState.Site.ModifiedOn;
 | 
			
		||||
        deletedby = PageState.Site.DeletedBy;
 | 
			
		||||
        deletedon = PageState.Site.DeletedOn;
 | 
			
		||||
        isdeleted = PageState.Site.IsDeleted.ToString();
 | 
			
		||||
            siteid = Int32.Parse(PageState.QueryString["id"]);
 | 
			
		||||
            Site site = await SiteService.GetSiteAsync(siteid);
 | 
			
		||||
            if (site != null)
 | 
			
		||||
            {
 | 
			
		||||
                name = site.Name;
 | 
			
		||||
                aliases = PageState.Aliases.Where(item => item.SiteId == site.SiteId).ToList();
 | 
			
		||||
                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()
 | 
			
		||||
    {
 | 
			
		||||
        await SiteService.DeleteSiteAsync(PageState.Site.SiteId);
 | 
			
		||||
        NavigationManager.NavigateTo(NavigateUrl());
 | 
			
		||||
        try
 | 
			
		||||
        {
 | 
			
		||||
            await SiteService.DeleteSiteAsync(PageState.Site.SiteId);
 | 
			
		||||
            NavigationManager.NavigateTo(NavigateUrl());
 | 
			
		||||
        }
 | 
			
		||||
        catch (Exception ex)
 | 
			
		||||
        {
 | 
			
		||||
            ModuleInstance.AddModuleMessage(ex.Message, MessageType.Error);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -89,8 +89,9 @@ else
 | 
			
		||||
    Dictionary<string, string> themes = new Dictionary<string, string>();
 | 
			
		||||
    Dictionary<string, string> panelayouts = new Dictionary<string, string>();
 | 
			
		||||
 | 
			
		||||
    List<Alias> aliases;
 | 
			
		||||
    int siteid;
 | 
			
		||||
    string name = "";
 | 
			
		||||
    List<Alias> aliases;
 | 
			
		||||
    string urls = "";
 | 
			
		||||
    string logo = "";
 | 
			
		||||
    string themetype;
 | 
			
		||||
@ -104,61 +105,91 @@ else
 | 
			
		||||
    DateTime? deletedon;
 | 
			
		||||
    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();
 | 
			
		||||
        themes = ThemeService.GetThemeTypes(PageState.Themes);
 | 
			
		||||
        panelayouts = ThemeService.GetPaneLayoutTypes(PageState.Themes);
 | 
			
		||||
        name = PageState.Site.Name;
 | 
			
		||||
        foreach (Alias alias in aliases)
 | 
			
		||||
        try
 | 
			
		||||
        {
 | 
			
		||||
            urls += alias.Name + "\n";
 | 
			
		||||
        }
 | 
			
		||||
        logo = PageState.Site.Logo;
 | 
			
		||||
        themetype = PageState.Site.DefaultThemeType;
 | 
			
		||||
        layouttype = PageState.Site.DefaultLayoutType;
 | 
			
		||||
            themes = ThemeService.GetThemeTypes(PageState.Themes);
 | 
			
		||||
            panelayouts = ThemeService.GetPaneLayoutTypes(PageState.Themes);
 | 
			
		||||
 | 
			
		||||
        createdby = PageState.Site.CreatedBy;
 | 
			
		||||
        createdon = PageState.Site.CreatedOn;
 | 
			
		||||
        modifiedby = PageState.Site.ModifiedBy;
 | 
			
		||||
        modifiedon = PageState.Site.ModifiedOn;
 | 
			
		||||
        deletedby = PageState.Site.DeletedBy;
 | 
			
		||||
        deletedon = PageState.Site.DeletedOn;
 | 
			
		||||
        isdeleted = PageState.Site.IsDeleted.ToString();
 | 
			
		||||
            siteid = Int32.Parse(PageState.QueryString["id"]);
 | 
			
		||||
            Site site = await SiteService.GetSiteAsync(siteid);
 | 
			
		||||
            if (site != null)
 | 
			
		||||
            {
 | 
			
		||||
                name = site.Name;
 | 
			
		||||
                aliases = PageState.Aliases.Where(item => item.SiteId == site.SiteId).ToList();
 | 
			
		||||
                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()
 | 
			
		||||
    {
 | 
			
		||||
        Site site = PageState.Site;
 | 
			
		||||
        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)
 | 
			
		||||
        try
 | 
			
		||||
        {
 | 
			
		||||
            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))
 | 
			
		||||
            {
 | 
			
		||||
                Alias alias = new Alias();
 | 
			
		||||
                alias.Name = name;
 | 
			
		||||
                alias.TenantId = PageState.Alias.TenantId;
 | 
			
		||||
                alias.SiteId = site.SiteId;
 | 
			
		||||
                await AliasService.AddAliasAsync(alias);
 | 
			
		||||
            }
 | 
			
		||||
            ModuleInstance.AddModuleMessage(ex.Message, MessageType.Error);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        NavigationManager.NavigateTo(NavigateUrl());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -42,6 +42,7 @@
 | 
			
		||||
 | 
			
		||||
    private async Task SaveTenant()
 | 
			
		||||
    {
 | 
			
		||||
        connectionstring = connectionstring.Replace("\\\\", "\\");
 | 
			
		||||
        GenericResponse response = await InstallationService.Install(connectionstring);
 | 
			
		||||
        if (response.Success)
 | 
			
		||||
        {
 | 
			
		||||
 | 
			
		||||
@ -60,6 +60,7 @@
 | 
			
		||||
    }
 | 
			
		||||
    private async Task SaveTenant()
 | 
			
		||||
    {
 | 
			
		||||
        connectionstring = connectionstring.Replace("\\\\", "\\");
 | 
			
		||||
        Tenant tenant = await TenantService.GetTenantAsync(tenantid);
 | 
			
		||||
        if (tenant != null)
 | 
			
		||||
        {
 | 
			
		||||
 | 
			
		||||
@ -38,7 +38,7 @@ namespace Oqtane.Controllers
 | 
			
		||||
            {
 | 
			
		||||
                bool master = false;
 | 
			
		||||
                string defaultconnectionstring = Config.GetConnectionString("DefaultConnection");
 | 
			
		||||
                if (string.IsNullOrEmpty(defaultconnectionstring) || connectionstring != defaultconnectionstring)
 | 
			
		||||
                if (string.IsNullOrEmpty(defaultconnectionstring) || connectionstring == defaultconnectionstring)
 | 
			
		||||
                {
 | 
			
		||||
                    master = true;
 | 
			
		||||
                }
 | 
			
		||||
@ -126,7 +126,7 @@ namespace Oqtane.Controllers
 | 
			
		||||
                            {
 | 
			
		||||
                                initializationScript = reader.ReadToEnd();
 | 
			
		||||
                            }
 | 
			
		||||
                            initializationScript = initializationScript.Replace("{ConnectionString}", connectionstring);
 | 
			
		||||
                            initializationScript = initializationScript.Replace("{ConnectionString}", connectionstring.Replace(datadirectory, "|DataDirectory|"));
 | 
			
		||||
                            initializationScript = initializationScript.Replace("{Alias}", HttpContext.Request.Host.Value);
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
@ -218,8 +218,11 @@ namespace Oqtane.Controllers
 | 
			
		||||
                    {
 | 
			
		||||
                        foreach (Tenant tenant in db.Tenant.ToList())
 | 
			
		||||
                        {
 | 
			
		||||
                            connectionString = tenant.DBConnectionString;
 | 
			
		||||
                            connectionString = connectionString.Replace("|DataDirectory|", datadirectory);
 | 
			
		||||
 | 
			
		||||
                            // upgrade framework
 | 
			
		||||
                            dbUpgradeConfig = DeployChanges.To.SqlDatabase(tenant.DBConnectionString)
 | 
			
		||||
                            dbUpgradeConfig = DeployChanges.To.SqlDatabase(connectionString)
 | 
			
		||||
                                .WithScriptsEmbeddedInAssembly(Assembly.GetExecutingAssembly());
 | 
			
		||||
                            dbUpgrade = dbUpgradeConfig.Build();
 | 
			
		||||
                            if (dbUpgrade.IsUpgradeRequired())
 | 
			
		||||
@ -233,7 +236,7 @@ namespace Oqtane.Controllers
 | 
			
		||||
                            // iterate through Oqtane module assemblies and execute any database scripts
 | 
			
		||||
                            foreach (Assembly assembly in assemblies)
 | 
			
		||||
                            {
 | 
			
		||||
                                InstallModule(assembly, tenant.DBConnectionString);
 | 
			
		||||
                                InstallModule(assembly, connectionString);
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user