@page "/admin/servers/all" @using MoonCore.Blazor.FlyonUi.Alerts @using MoonCore.Blazor.FlyonUi.DataTables @using MoonCore.Blazor.FlyonUi.Toasts @using MoonCore.Helpers @using MoonCore.Models @using MoonlightServers.Shared.Http.Responses.Admin.Nodes @using MoonlightServers.Shared.Http.Responses.Admin.Servers @using MoonlightServers.Shared.Http.Responses.Admin.Stars @using MoonCore.Blazor.FlyonUi.Components @inject HttpApiClient ApiClient @inject AlertService AlertService @inject ToastService ToastService @attribute [Authorize(Policy = "permissions:admin.servers.get")]
Create
@context.Name @{ var node = Nodes.FirstOrDefault(x => x.Id == context.NodeId); } @(node?.Name ?? "N/A") @{ var star = Stars.FirstOrDefault(x => x.Id == context.StarId); } @(star?.Name ?? "N/A") @code { private DataTable Table; private List Stars = new(); private List Nodes = new(); private async Task> LoadData(PaginationOptions options) { // Clear potential previous data var data = await ApiClient.GetJson>($"api/admin/servers?page={options.Page}&pageSize={options.PerPage}"); foreach (var item in data.Items) { if (Nodes.All(x => x.Id != item.NodeId)) { var node = await ApiClient.GetJson($"api/admin/servers/nodes/{item.NodeId}"); Nodes.Add(node); } if (Stars.All(x => x.Id != item.StarId)) { var star = await ApiClient.GetJson($"api/admin/servers/stars/{item.StarId}"); Stars.Add(star); } } return data; } private async Task Delete(ServerResponse response) { await AlertService.ConfirmDanger( "Server deletion", $"Do you really want to delete the server '{response.Name}'", async () => { await ApiClient.Delete($"api/admin/servers/{response.Id}"); await ToastService.Success("Successfully deleted server"); await Table.Refresh(); } ); } }