21 lines
740 B
C#
21 lines
740 B
C#
using CsWeb.Services;
|
|
using Microsoft.AspNetCore.Mvc.RazorPages;
|
|
|
|
namespace CsWeb.Pages;
|
|
|
|
public class IndexModel(Fleet fleet) : PageModel
|
|
{
|
|
public Fleet Fleet => fleet;
|
|
public List<(string Id, Cached<StatusPayload> Status)> Servers { get; private set; } = [];
|
|
public int HumansOnline { get; private set; }
|
|
public int ServersUp { get; private set; }
|
|
|
|
public async Task OnGetAsync()
|
|
{
|
|
var ids = fleet.Instances();
|
|
var fetched = await Task.WhenAll(ids.Select(fleet.Status));
|
|
Servers = ids.Zip(fetched, (id, s) => (id, s)).ToList();
|
|
HumansOnline = Servers.Sum(s => s.Status.Online ? s.Status.Data?.Humans.Count ?? 0 : 0);
|
|
ServersUp = Servers.Count(s => s.Status.Online);
|
|
}
|
|
}
|