@page "/portal"
@attribute [Authorize]
@inject PortalQueries Queries
Overblik · SQLInsight Hub
Kundeoverblik
Betalende kunders instanser og deres aktuelle problemer.
@_customers.Sum(c => c.Instances)instanser
@_customers.Sum(c => c.Critical)kritiske fund
@_customers.Sum(c => c.High)høje fund
@_silentinstanser uden data i 1 time
Kunder
sorteret efter alvor
| Kunde | Aftale | Licens udløber | Instanser | Fund | Seneste data |
@foreach (var c in _customers)
{
| @c.Name |
@(c.Plan ?? "–") |
@(c.LicenseExpires?.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture) ?? "–") |
@c.Instances |
@if (c.Critical > 0) { }
@if (c.High > 0) { }
@if (c.Critical == 0 && c.High == 0) { ingen kritiske/høje }
|
@(c.LastSubmission?.ToString("yyyy-MM-dd HH:mm", CultureInfo.InvariantCulture) ?? "aldrig") UTC |
}
Mest udbredte problemer
hvor en vejledning eller en produktændring hjælper flest
| Regel | Eksempel | Kunder | Fund | Værst |
@foreach (var p in _common)
{
| @p.RuleId | @p.Title | @p.Customers | @p.Findings | |
}
@code {
private IReadOnlyList _customers = [];
private IReadOnlyList _common = [];
private int _new;
private int _silent;
protected override async Task OnInitializedAsync()
{
_customers = await Queries.CustomersAsync();
_common = await Queries.CommonProblemsAsync();
_new = await Queries.NewFindingsSinceAsync(Queries.Now.AddDays(-7));
_silent = await Queries.SilentInstancesAsync();
}
}