added system info admin page/module, improved UI for framework, module, and theme install/upgrade, added version to ModuleDefinitions, fixed bug in logging logic introduced during code standardization
This commit is contained in:
		@ -5,42 +5,47 @@
 | 
			
		||||
@inject IModuleDefinitionService ModuleDefinitionService
 | 
			
		||||
@inject IPackageService PackageService
 | 
			
		||||
 | 
			
		||||
<table class="table table-borderless">
 | 
			
		||||
    <tr>
 | 
			
		||||
        <td>
 | 
			
		||||
            <Label For="module" HelpText="Upload a module from your system">Module: </Label>
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
            <FileManager Filter="nupkg" ShowFiles="false" Folder="Modules" />
 | 
			
		||||
        </td>
 | 
			
		||||
    </tr>
 | 
			
		||||
</table>
 | 
			
		||||
 | 
			
		||||
@if (_packages != null)
 | 
			
		||||
{
 | 
			
		||||
    <hr class="app-rule" />
 | 
			
		||||
    <div class="mx-auto text-center"><h2>Available Modules</h2></div>
 | 
			
		||||
    <TabStrip>
 | 
			
		||||
        @if (_packages.Count > 0)
 | 
			
		||||
        {
 | 
			
		||||
        <TabPanel Name="Download">
 | 
			
		||||
            <ModuleMessage Type="MessageType.Info" Message="Download one or more modules from the list below. Once you are ready click Install to complete the installation."></ModuleMessage>
 | 
			
		||||
            <Pager Items="@_packages">
 | 
			
		||||
                <Header>
 | 
			
		||||
                    <th>Name</th>
 | 
			
		||||
                    <th>Version</th>
 | 
			
		||||
                    <th></th>
 | 
			
		||||
                </Header>
 | 
			
		||||
                <Row>
 | 
			
		||||
                    <td>@context.Name</td>
 | 
			
		||||
                    <td>@context.Version</td>
 | 
			
		||||
                    <td>
 | 
			
		||||
                        <button type="button" class="btn btn-primary" @onclick=@(async () => await DownloadModule(context.PackageId, context.Version))>Download</button>
 | 
			
		||||
                    </td>
 | 
			
		||||
                </Row>
 | 
			
		||||
            </Pager>
 | 
			
		||||
        </TabPanel>
 | 
			
		||||
        }
 | 
			
		||||
        <TabPanel Name="Upload">
 | 
			
		||||
            <table class="table table-borderless">
 | 
			
		||||
                <tr>
 | 
			
		||||
                    <td>
 | 
			
		||||
                        <Label HelpText="Upload one or more module packages. Once they are uploaded click Install to complete the installation.">Module: </Label>
 | 
			
		||||
                    </td>
 | 
			
		||||
                    <td>
 | 
			
		||||
                        <FileManager Filter="nupkg" ShowFiles="false" Folder="Modules" UploadMultiple="True" />
 | 
			
		||||
                    </td>
 | 
			
		||||
                </tr>
 | 
			
		||||
            </table>
 | 
			
		||||
        </TabPanel>
 | 
			
		||||
    </TabStrip>
 | 
			
		||||
 | 
			
		||||
    <Pager Items="@_packages">
 | 
			
		||||
        <Header>
 | 
			
		||||
            <th>Name</th>
 | 
			
		||||
            <th>Version</th>
 | 
			
		||||
            <th></th>
 | 
			
		||||
        </Header>
 | 
			
		||||
        <Row>
 | 
			
		||||
            <td>@context.Name</td>
 | 
			
		||||
            <td>@context.Version</td>
 | 
			
		||||
            <td>
 | 
			
		||||
                <button type="button" class="btn btn-primary" @onclick=@(async () => await DownloadModule(context.PackageId, context.Version))>Download Module</button>
 | 
			
		||||
            </td>
 | 
			
		||||
        </Row>
 | 
			
		||||
    </Pager>
 | 
			
		||||
    <button type="button" class="btn btn-success" @onclick="InstallModules">Install</button>
 | 
			
		||||
    <NavLink class="btn btn-secondary" href="@NavigateUrl()">Cancel</NavLink>
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
<button type="button" class="btn btn-success" @onclick="InstallModules">Install</button>
 | 
			
		||||
<NavLink class="btn btn-secondary" href="@NavigateUrl()">Cancel</NavLink>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@code {
 | 
			
		||||
    private List<Package> _packages;
 | 
			
		||||
 | 
			
		||||
@ -52,8 +57,8 @@
 | 
			
		||||
        {
 | 
			
		||||
            var moduledefinitions = await ModuleDefinitionService.GetModuleDefinitionsAsync(PageState.Site.SiteId);
 | 
			
		||||
            _packages = await PackageService.GetPackagesAsync("module");
 | 
			
		||||
            
 | 
			
		||||
            foreach(Package package in _packages.ToArray())
 | 
			
		||||
 | 
			
		||||
            foreach (Package package in _packages.ToArray())
 | 
			
		||||
            {
 | 
			
		||||
                if (moduledefinitions.Exists(item => Utilities.GetTypeName(item.ModuleDefinitionName) == package.PackageId))
 | 
			
		||||
                {
 | 
			
		||||
@ -81,18 +86,18 @@
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private async Task DownloadModule(string moduledefinitionname, string version)
 | 
			
		||||
    private async Task DownloadModule(string packageid, string version)
 | 
			
		||||
    {
 | 
			
		||||
        try
 | 
			
		||||
        {
 | 
			
		||||
            await PackageService.DownloadPackageAsync(moduledefinitionname, version, "Modules");
 | 
			
		||||
            await logger.LogInformation("Module {ModuleDefinitionName} {Version} Downloaded Successfully", moduledefinitionname, version);
 | 
			
		||||
            AddModuleMessage("Module Downloaded Successfully. Click Install To Complete Installation.", MessageType.Success);
 | 
			
		||||
            await PackageService.DownloadPackageAsync(packageid, version, "Modules");
 | 
			
		||||
            await logger.LogInformation("Module {ModuleDefinitionName} {Version} Downloaded Successfully", packageid, version);
 | 
			
		||||
            AddModuleMessage("Modules Downloaded Successfully. Click Install To Complete Installation.", MessageType.Success);
 | 
			
		||||
            StateHasChanged();
 | 
			
		||||
        }
 | 
			
		||||
        catch (Exception ex)
 | 
			
		||||
        {
 | 
			
		||||
            await logger.LogError(ex, "Error Downloading Module {ModuleDefinitionName} {Version}", moduledefinitionname, version);
 | 
			
		||||
            await logger.LogError(ex, "Error Downloading Module {ModuleDefinitionName} {Version}", packageid, version);
 | 
			
		||||
            AddModuleMessage("Error Downloading Module", MessageType.Error);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -1,29 +1,38 @@
 | 
			
		||||
@namespace Oqtane.Modules.Admin.SystemInfo
 | 
			
		||||
@inherits ModuleBase
 | 
			
		||||
@inject ISystemService SystemService
 | 
			
		||||
 | 
			
		||||
<table class="table table-borderless">
 | 
			
		||||
    <tr>
 | 
			
		||||
        <td>
 | 
			
		||||
            <Label For="version" HelpText="qtane Version">Oqtane Version: </Label>
 | 
			
		||||
            <Label For="version" HelpText="Framework Version">Framework Version: </Label>
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
            @_version
 | 
			
		||||
            <input id="version" class="form-control" @bind="@_version" disabled />
 | 
			
		||||
        </td>
 | 
			
		||||
    </tr>
 | 
			
		||||
    <tr>
 | 
			
		||||
        <td>
 | 
			
		||||
            <Label For="runtime" HelpText="Blazor Runtime">Blazor Runtime: </Label>
 | 
			
		||||
            <Label For="runtime" HelpText="Blazor Runtime (Server or WebAssembly)">Blazor Runtime: </Label>
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
            @_runtime
 | 
			
		||||
            <input id="runtime" class="form-control" @bind="@_runtime" disabled />
 | 
			
		||||
        </td>
 | 
			
		||||
    </tr>
 | 
			
		||||
    <tr>
 | 
			
		||||
        <td>
 | 
			
		||||
            <Label For="netcore" HelpText=".NET Core">.NET Core: </Label>
 | 
			
		||||
            <Label For="clrversion" HelpText="Common Language Runtime Version">CLR Version: </Label>
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
            @_netcore
 | 
			
		||||
            <input id="clrversion" class="form-control" @bind="@_clrversion" disabled />
 | 
			
		||||
        </td>
 | 
			
		||||
    </tr>
 | 
			
		||||
    <tr>
 | 
			
		||||
        <td>
 | 
			
		||||
            <Label For="osversion" HelpText="Operating System Version">OS Version: </Label>
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
            <input id="osversion" class="form-control" @bind="@_osversion" disabled />
 | 
			
		||||
        </td>
 | 
			
		||||
    </tr>
 | 
			
		||||
    <tr>
 | 
			
		||||
@ -31,7 +40,7 @@
 | 
			
		||||
            <Label For="serverpath" HelpText="Server Path">Server Path: </Label>
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
            @_serverpath
 | 
			
		||||
            <input id="serverpath" class="form-control" @bind="@_serverpath" disabled />
 | 
			
		||||
        </td>
 | 
			
		||||
    </tr>
 | 
			
		||||
    <tr>
 | 
			
		||||
@ -39,7 +48,7 @@
 | 
			
		||||
            <Label For="servertime" HelpText="Server Time">Server Time: </Label>
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
            @_servertime
 | 
			
		||||
            <input id="servertime" class="form-control" @bind="@_servertime" disabled />
 | 
			
		||||
        </td>
 | 
			
		||||
    </tr>
 | 
			
		||||
</table>
 | 
			
		||||
@ -49,16 +58,23 @@
 | 
			
		||||
 | 
			
		||||
    private string _version = string.Empty;
 | 
			
		||||
    private string _runtime = string.Empty;
 | 
			
		||||
    private string _netcore = string.Empty;
 | 
			
		||||
    private string _clrversion = string.Empty;
 | 
			
		||||
    private string _osversion = string.Empty;
 | 
			
		||||
    private string _serverpath = string.Empty;
 | 
			
		||||
    private string _servertime = string.Empty;
 | 
			
		||||
 | 
			
		||||
    protected override void OnInitialized()
 | 
			
		||||
    protected override async Task OnInitializedAsync()
 | 
			
		||||
    {
 | 
			
		||||
        _version = Constants.Version;
 | 
			
		||||
        _runtime = PageState.Runtime.ToString();
 | 
			
		||||
        _netcore = string.Empty;
 | 
			
		||||
        _serverpath = string.Empty;
 | 
			
		||||
        _servertime = string.Empty;
 | 
			
		||||
 | 
			
		||||
        Dictionary<string, string> systeminfo = await SystemService.GetSystemInfoAsync();
 | 
			
		||||
        if (systeminfo != null)
 | 
			
		||||
        {
 | 
			
		||||
            _clrversion = systeminfo["clrversion"];
 | 
			
		||||
            _osversion = systeminfo["osversion"];
 | 
			
		||||
            _serverpath = systeminfo["serverpath"];
 | 
			
		||||
            _servertime = systeminfo["servertime"];
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -5,70 +5,100 @@
 | 
			
		||||
@inject IThemeService ThemeService
 | 
			
		||||
@inject IPackageService PackageService
 | 
			
		||||
 | 
			
		||||
<table class="table table-borderless">
 | 
			
		||||
    <tr>
 | 
			
		||||
        <td>
 | 
			
		||||
            <Label For="theme" HelpText="Upload a theme from your system">Theme: </Label>
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
            <FileManager Filter="nupkg"  ShowFiles="false" Folder="Themes" />
 | 
			
		||||
        </td>
 | 
			
		||||
    </tr>
 | 
			
		||||
</table>
 | 
			
		||||
 | 
			
		||||
@if (packages != null)
 | 
			
		||||
@if (_packages != null)
 | 
			
		||||
{
 | 
			
		||||
    <hr class="app-rule" />
 | 
			
		||||
    <div class="mx-auto text-center"><h2>Available Themes</h2></div>
 | 
			
		||||
 | 
			
		||||
    <Pager Items="@packages">
 | 
			
		||||
        <Header>
 | 
			
		||||
            <th>Name</th>
 | 
			
		||||
            <th>Version</th>
 | 
			
		||||
            <th></th>
 | 
			
		||||
        </Header>
 | 
			
		||||
        <Row>
 | 
			
		||||
            <td>@context.Name</td>
 | 
			
		||||
            <td>@context.Version</td>
 | 
			
		||||
            <td>
 | 
			
		||||
                <button type="button" class="btn btn-primary" @onclick=@(async () => await DownloadTheme(context.PackageId, context.Version))>Download Theme</button>
 | 
			
		||||
            </td>
 | 
			
		||||
        </Row>
 | 
			
		||||
    </Pager>
 | 
			
		||||
}
 | 
			
		||||
<TabStrip>
 | 
			
		||||
    @if (_packages.Count > 0)
 | 
			
		||||
    {
 | 
			
		||||
    <TabPanel Name="Download">
 | 
			
		||||
        <ModuleMessage Type="MessageType.Info" Message="Download one or more themes from the list below. Once you are ready click Install to complete the installation."></ModuleMessage>
 | 
			
		||||
        <Pager Items="@_packages">
 | 
			
		||||
            <Header>
 | 
			
		||||
                <th>Name</th>
 | 
			
		||||
                <th>Version</th>
 | 
			
		||||
                <th></th>
 | 
			
		||||
            </Header>
 | 
			
		||||
            <Row>
 | 
			
		||||
                <td>@context.Name</td>
 | 
			
		||||
                <td>@context.Version</td>
 | 
			
		||||
                <td>
 | 
			
		||||
                    <button type="button" class="btn btn-primary" @onclick=@(async () => await DownloadTheme(context.PackageId, context.Version))>Download</button>
 | 
			
		||||
                </td>
 | 
			
		||||
            </Row>
 | 
			
		||||
        </Pager>
 | 
			
		||||
    </TabPanel>
 | 
			
		||||
    }
 | 
			
		||||
    <TabPanel Name="Upload">
 | 
			
		||||
        <table class="table table-borderless">
 | 
			
		||||
            <tr>
 | 
			
		||||
                <td>
 | 
			
		||||
                    <Label HelpText="Upload one or more theme packages. Once they are uploaded click Install to complete the installation.">Theme: </Label>
 | 
			
		||||
                </td>
 | 
			
		||||
                <td>
 | 
			
		||||
                    <FileManager Filter="nupkg" ShowFiles="false" Folder="Themes" UploadMultiple="True" />
 | 
			
		||||
                </td>
 | 
			
		||||
            </tr>
 | 
			
		||||
        </table>
 | 
			
		||||
    </TabPanel>
 | 
			
		||||
</TabStrip>
 | 
			
		||||
 | 
			
		||||
<button type="button" class="btn btn-success" @onclick="InstallThemes">Install</button>
 | 
			
		||||
<NavLink class="btn btn-secondary" href="@NavigateUrl()">Cancel</NavLink>
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@code {
 | 
			
		||||
    private List<Package> packages;
 | 
			
		||||
    private List<Package> _packages;
 | 
			
		||||
 | 
			
		||||
    public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Host;
 | 
			
		||||
 | 
			
		||||
    protected override async Task OnInitializedAsync()
 | 
			
		||||
    {
 | 
			
		||||
        var themes = await ThemeService.GetThemesAsync();
 | 
			
		||||
        packages = await PackageService.GetPackagesAsync("theme");
 | 
			
		||||
        
 | 
			
		||||
        foreach(Package package in packages.ToArray())
 | 
			
		||||
        try
 | 
			
		||||
        {
 | 
			
		||||
            if (themes.Exists(item => Utilities.GetTypeName(item.ThemeName) == package.PackageId))
 | 
			
		||||
            var themes = await ThemeService.GetThemesAsync();
 | 
			
		||||
            _packages = await PackageService.GetPackagesAsync("theme");
 | 
			
		||||
 | 
			
		||||
            foreach (Package package in _packages.ToArray())
 | 
			
		||||
            {
 | 
			
		||||
                packages.Remove(package);
 | 
			
		||||
                if (themes.Exists(item => Utilities.GetTypeName(item.ThemeName) == package.PackageId))
 | 
			
		||||
                {
 | 
			
		||||
                    _packages.Remove(package);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        catch (Exception ex)
 | 
			
		||||
        {
 | 
			
		||||
            await logger.LogError(ex, "Error Loading Packages {Error}", ex.Message);
 | 
			
		||||
            AddModuleMessage("Error Loading Packages", MessageType.Error);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private async Task InstallThemes()
 | 
			
		||||
    {
 | 
			
		||||
        await ThemeService.InstallThemesAsync();
 | 
			
		||||
        NavigationManager.NavigateTo(NavigateUrl());
 | 
			
		||||
        try
 | 
			
		||||
        {
 | 
			
		||||
            await ThemeService.InstallThemesAsync();
 | 
			
		||||
            NavigationManager.NavigateTo(NavigateUrl());
 | 
			
		||||
        }
 | 
			
		||||
        catch (Exception ex)
 | 
			
		||||
        {
 | 
			
		||||
            await logger.LogError(ex, "Error Installating Theme");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private async Task DownloadTheme(string packageid, string version)
 | 
			
		||||
    {
 | 
			
		||||
        await PackageService.DownloadPackageAsync(packageid, version, "Themes");
 | 
			
		||||
        AddModuleMessage("Theme Downloaded Successfully. Click Install To Complete Installation.", MessageType.Success);
 | 
			
		||||
        StateHasChanged();
 | 
			
		||||
        try
 | 
			
		||||
        {
 | 
			
		||||
            await PackageService.DownloadPackageAsync(packageid, version, "Themes");
 | 
			
		||||
            await logger.LogInformation("Theme {ThemeName} {Version} Downloaded Successfully", packageid, version);
 | 
			
		||||
            AddModuleMessage("Themes Downloaded Successfully. Click Install To Complete Installation.", MessageType.Success);
 | 
			
		||||
            StateHasChanged();
 | 
			
		||||
        }
 | 
			
		||||
        catch (Exception ex)
 | 
			
		||||
        {
 | 
			
		||||
            await logger.LogError(ex, "Error Downloading Module {ThemeName} {Version}", packageid, version);
 | 
			
		||||
            AddModuleMessage("Error Downloading Theme", MessageType.Error);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -5,42 +5,55 @@
 | 
			
		||||
@inject IPackageService PackageService
 | 
			
		||||
@inject IInstallationService InstallationService
 | 
			
		||||
 | 
			
		||||
<table class="table table-borderless">
 | 
			
		||||
    <tr>
 | 
			
		||||
        <td>
 | 
			
		||||
            <Label For="framework" HelpText="Upload a framework to update the site">Framework: </Label>
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
            <FileManager Filter="nupkg" ShowFiles="false" Folder="Framework" />
 | 
			
		||||
        </td>
 | 
			
		||||
    </tr>
 | 
			
		||||
</table>
 | 
			
		||||
<button type="button" class="btn btn-success" @onclick="Upgrade">Upgrade</button>
 | 
			
		||||
 | 
			
		||||
@if (upgradeavailable)
 | 
			
		||||
@if (_package != null)
 | 
			
		||||
{
 | 
			
		||||
    <hr class="app-rule" />
 | 
			
		||||
    <div class="mx-auto text-center"><h2>Upgrade Available</h2></div>
 | 
			
		||||
 | 
			
		||||
    <button type="button" class="btn btn-success" @onclick=@(async () => await Download(Constants.PackageId, Constants.Version))>Upgrade Framework</button>
 | 
			
		||||
<TabStrip>
 | 
			
		||||
    <TabPanel Name="Download">
 | 
			
		||||
        @if (_upgradeavailable)
 | 
			
		||||
        {
 | 
			
		||||
            <ModuleMessage Type="MessageType.Info" Message="Download a new version of the framework. Once you are ready click Install to complete the installation."></ModuleMessage>
 | 
			
		||||
            @("Framework") @_package.Version <button type="button" class="btn btn-success" @onclick=@(async () => await Download(Constants.PackageId, Constants.Version))>Download</button>
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            <ModuleMessage Type="MessageType.Info" Message="Framework Is Already Up To Date"></ModuleMessage>
 | 
			
		||||
        }
 | 
			
		||||
    </TabPanel>
 | 
			
		||||
    @if (_upgradeavailable)
 | 
			
		||||
    {
 | 
			
		||||
    <TabPanel Name="Upload">
 | 
			
		||||
        <table class="table table-borderless">
 | 
			
		||||
            <tr>
 | 
			
		||||
                <td>
 | 
			
		||||
                    <Label HelpText="Upload a new framework package. Once it is uploaded click Install to complete the installation.">Framework: </Label>
 | 
			
		||||
                </td>
 | 
			
		||||
                <td>
 | 
			
		||||
                    <FileManager Filter="nupkg" ShowFiles="false" Folder="Framework" />
 | 
			
		||||
                </td>
 | 
			
		||||
            </tr>
 | 
			
		||||
        </table>
 | 
			
		||||
    </TabPanel>
 | 
			
		||||
    }
 | 
			
		||||
</TabStrip>
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@code {
 | 
			
		||||
    private bool upgradeavailable = false;
 | 
			
		||||
    private Package _package;
 | 
			
		||||
    private bool _upgradeavailable = false;
 | 
			
		||||
 | 
			
		||||
    public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Host;
 | 
			
		||||
 | 
			
		||||
    protected override async Task OnInitializedAsync()
 | 
			
		||||
    {
 | 
			
		||||
        var packages = await PackageService.GetPackagesAsync("framework");
 | 
			
		||||
        var package = packages.FirstOrDefault();
 | 
			
		||||
        if (package != null)
 | 
			
		||||
        List<Package> packages = await PackageService.GetPackagesAsync("framework");
 | 
			
		||||
        _package = packages.FirstOrDefault();
 | 
			
		||||
        if (_package != null)
 | 
			
		||||
        {
 | 
			
		||||
            upgradeavailable = (Version.Parse(package.Version).CompareTo(Version.Parse(Constants.Version)) > 0);
 | 
			
		||||
            _upgradeavailable = (Version.Parse(_package.Version).CompareTo(Version.Parse(Constants.Version)) > 0);
 | 
			
		||||
        }
 | 
			
		||||
        if (!upgradeavailable)
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            AddModuleMessage("Framework Is Up To Date", MessageType.Info);
 | 
			
		||||
            _package = new Package { Name = Constants.PackageId, Version = Constants.Version };
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -52,6 +52,7 @@ namespace Oqtane.Client
 | 
			
		||||
            builder.Services.AddScoped<IFileService, FileService>();
 | 
			
		||||
            builder.Services.AddScoped<ISiteTemplateService, SiteTemplateService>();
 | 
			
		||||
            builder.Services.AddScoped<ISqlService, SqlService>();
 | 
			
		||||
            builder.Services.AddScoped<ISystemService, SystemService>();
 | 
			
		||||
 | 
			
		||||
            // dynamically register module contexts and repository services
 | 
			
		||||
            Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										10
									
								
								Oqtane.Client/Services/Interfaces/ISystemService.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								Oqtane.Client/Services/Interfaces/ISystemService.cs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,10 @@
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace Oqtane.Services
 | 
			
		||||
{
 | 
			
		||||
    public interface ISystemService
 | 
			
		||||
    {
 | 
			
		||||
        Task<Dictionary<string, string>> GetSystemInfoAsync();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										32
									
								
								Oqtane.Client/Services/SystemService.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								Oqtane.Client/Services/SystemService.cs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,32 @@
 | 
			
		||||
using System.Net.Http;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using Microsoft.AspNetCore.Components;
 | 
			
		||||
using Oqtane.Shared;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
 | 
			
		||||
namespace Oqtane.Services
 | 
			
		||||
{
 | 
			
		||||
    public class SystemService : ServiceBase, ISystemService
 | 
			
		||||
    {
 | 
			
		||||
        
 | 
			
		||||
        private readonly SiteState _siteState;
 | 
			
		||||
        private readonly NavigationManager _navigationManager;
 | 
			
		||||
 | 
			
		||||
        public SystemService(HttpClient http, SiteState siteState, NavigationManager navigationManager) : base(http)
 | 
			
		||||
        {
 | 
			
		||||
            
 | 
			
		||||
            _siteState = siteState;
 | 
			
		||||
            _navigationManager = navigationManager;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private string Apiurl
 | 
			
		||||
        {
 | 
			
		||||
            get { return CreateApiUrl(_siteState.Alias, _navigationManager.Uri, "System"); }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public async Task<Dictionary<string, string>> GetSystemInfoAsync()
 | 
			
		||||
        {
 | 
			
		||||
            return await GetJsonAsync<Dictionary<string, string>>(Apiurl);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user