@page "/Servers"
@using LANCommander.Server.Services.Abstractions
@using LANCommander.Server.Services.Enums
@using LANCommander.Server.UI.Pages.Servers.Components
@attribute [Authorize(Roles = RoleService.AdministratorRoleName)]
@inject ServerService ServerService
@inject NavigationManager NavigationManager
@inject ModalService ModalService
@inject IServiceProvider ServiceProvider
@if (SelectedServers != null && SelectedServers.Count() > 0)
{
}
@if (context.Game != null)
{
@context.Game?.Title
}
Edit
@code {
DataTable Table;
bool Loading = true;
int Total;
IEnumerable SelectedServers;
protected override async Task OnInitializedAsync()
{
Loading = false;
}
async Task Delete(Server server)
{
Loading = true;
await Task.Yield();
await InvokeAsync(StateHasChanged);
await ServerService.DeleteAsync(server);
await Task.Yield();
await InvokeAsync(StateHasChanged);
Loading = false;
}
string GetIcon(Game game)
{
var media = game?.Media?.FirstOrDefault(m => m.Type == SDK.Enums.MediaType.Icon);
if (media != null)
return $"/api/Media/{media.Id}/Download?fileId={media.FileId}";
else
return "/favicon.ico";
}
async Task StartServers()
{
foreach (var engine in ServiceProvider.GetServices())
{
foreach (var server in SelectedServers)
{
try
{
if (engine.IsManaging(server.Id))
engine.StartAsync(server.Id);
}
catch { }
}
}
}
void StopServers()
{
foreach (var engine in ServiceProvider.GetServices())
{
foreach (var server in SelectedServers)
{
if (engine.IsManaging(server.Id))
engine.StopAsync(server.Id);
}
}
}
async Task OpenImportDialog()
{
var options = new ImportDialogOptions
{
Hint = "Only LCX files are supported for importing games"
};
var modalOptions = new ModalOptions
{
Title = "Import Game",
DestroyOnClose = true,
MaskClosable = false,
Footer = null,
};
var modalRef = ModalService.CreateModal(modalOptions, options);
modalRef.OnOk = modalRef.OnCancel;
}
}