@page "/portal" @attribute [Authorize] @inject PortalQueries Queries Overblik · SQLInsight Hub

Kundeoverblik

Betalende kunders instanser og deres aktuelle problemer.

@_customers.Countkunder
@_customers.Sum(c => c.Instances)instanser
@_customers.Sum(c => c.Critical)kritiske fund
@_customers.Sum(c => c.High)høje fund
@_newnye fund, 7 dage
@_silentinstanser uden data i 1 time

Kunder

sorteret efter alvor
@foreach (var c in _customers) { }
KundeAftaleLicens udløberInstanserFundSeneste data
@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
@foreach (var p in _common) { }
RegelEksempelKunderFundVærst
@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(); } }