@page "/admin/servers/cleanup" @using Moonlight.App.Services @using Logging.Net @using Moonlight.App.Models.Misc @using Moonlight.App.Services.LogServices @inject CleanupService CleanupService @inject AuditLogService AuditLogService @implements IDisposable Cleanup @(CleanupService.ServersCleaned) Servers stopped @(CleanupService.CleanupsPerformed) Cleanups executed @(CleanupService.ServersRunning) Used clanup Servers Status: @(CleanupService.Status) @if (CleanupService.IsRunning) { Start } else { Start } @if (CleanupService.Activated) { Enable } else { Enable } @if (CleanupService.Activated) { Disable } else { Disable } @code { protected async override Task OnAfterRenderAsync(bool firstRender) { if (firstRender) { CleanupService.OnUpdated += OnUpdated; } } private void OnUpdated(object? sender, EventArgs e) { Logger.Debug(CleanupService.PercentProgress); InvokeAsync(StateHasChanged); } public void Dispose() { CleanupService.OnUpdated -= OnUpdated; } private void Enable() { CleanupService.Activated = true; AuditLogService.Log(AuditLogType.CleanupEnabled, "The automatic cleanup has been activated"); InvokeAsync(StateHasChanged); } private void Disabled() { CleanupService.Activated = false; AuditLogService.Log(AuditLogType.CleanupDisabled, "The automatic cleanup has been disabled"); InvokeAsync(StateHasChanged); } private async void Trigger() { await CleanupService.TriggerPerform(); await AuditLogService.Log(AuditLogType.CleanupTriggered, "The automatic cleanup has been manually triggered"); await InvokeAsync(StateHasChanged); } }