@using Monithor.api @{ var statusPage = (StatusPage) ViewData["statuspage"]; var monitors = statusPage.Monitors.Select(p => p.monitor); } @statusPage.Name status @if (monitors.All(p => p.Status is MonitorStatus.Up or MonitorStatus.Validating)) { } else { }
@statusPage.Name
Status
@if (monitors.All(p => p.Status is MonitorStatus.Up or MonitorStatus.Validating)) { up

All services are online

} else if (monitors.All(p => p.Status is MonitorStatus.Down or MonitorStatus.Recovering)) { down

All services are down

} else { down

Some services are down

}

Last updated @DbProxy.LastUpdated

@RenderBody()
Current status by service
@foreach (var (monitor, displayName) in statusPage.Monitors) {
@if (monitor.Status is MonitorStatus.Up) { up @displayName  @monitor.Message } else if (monitor.Status is MonitorStatus.Validating) { hold @displayName  @monitor.Message - @monitor.LastValue } else if (monitor.Status is MonitorStatus.Recovering) { hold @displayName  @monitor.Message } else { down @displayName  @monitor.Message - @monitor.LastValue }
@switch(monitor.Status) { case MonitorStatus.Unknown: @Html.Raw("Unknown"); break; case MonitorStatus.Up: @Html.Raw("Operational"); break; case MonitorStatus.Down: @Html.Raw("Down"); break; case MonitorStatus.Validating: @Html.Raw("Validating downtime"); break; case MonitorStatus.Recovering: @Html.Raw("Validating recovery"); break; default: throw new ArgumentOutOfRangeException(); }
}