@model PagedResult @{ ViewData["Title"] = "Maintenance Records"; ViewData["PageIcon"] = "bi-wrench"; ViewData["PageHelpTitle"] = "Maintenance"; ViewData["PageHelpContent"] = "Track all scheduled and completed maintenance for your shop equipment. Overdue records are those past their scheduled date without a Completed status. Recurring tasks auto-generate future occurrences based on the frequency you set. Click any row to view full details, or use Add Maintenance to schedule new service for any piece of equipment."; var equipmentId = ViewBag.EquipmentId as int?; var equipmentName = ViewBag.EquipmentName as string; }
@await Html.PartialAsync("_Metric", (Label: "TOTAL", Value: Model.TotalCount.ToString(), Delta: (string?)null, DeltaDir: (string?)null))
@await Html.PartialAsync("_Metric", (Label: "SCHEDULED", Value: Model.Items.Count(m => m.Status == "Scheduled").ToString(), Delta: (string?)null, DeltaDir: (string?)null))
@await Html.PartialAsync("_Metric", (Label: "IN PROGRESS", Value: Model.Items.Count(m => m.Status == "InProgress").ToString(), Delta: (string?)null, DeltaDir: (string?)null))
@await Html.PartialAsync("_Metric", (Label: "OVERDUE", Value: Model.Items.Count(m => m.Status == "Overdue").ToString(), Delta: (string?)null, DeltaDir: (string?)null))
@if ((bool)(ViewBag.PendingOnly ?? false)) {
Showing @Model.TotalCount pending maintenance record@(Model.TotalCount == 1 ? "" : "s") — Scheduled, In Progress, or Overdue
Show All
}
@if (equipmentId.HasValue && !string.IsNullOrEmpty(equipmentName)) { @equipmentName } else { All Maintenance Records }
@if (equipmentId.HasValue) { Back to Equipment Add Maintenance } else { Add Maintenance }
@if (!Model.Items.Any()) {
No maintenance records found

Get started by scheduling maintenance

Schedule Maintenance
} else {
@foreach (var maintenance in Model.Items) { }
Equipment Type Scheduled Date Status Priority Cost Actions
@maintenance.EquipmentName
@maintenance.MaintenanceType @if (maintenance.IsRecurring) {
Recurring }
@maintenance.ScheduledDate.ToString("MMM dd, yyyy")
@if (maintenance.CompletedDate.HasValue) { Completed: @maintenance.CompletedDate.Value.ToString("MMM dd, yyyy") }
@await Html.PartialAsync("_StatusChip", (Kind: StatusChipHelper.MaintenanceStatus(maintenance.Status), Text: maintenance.StatusDisplay)) @await Html.PartialAsync("_StatusChip", (Kind: StatusChipHelper.MaintenancePriority(maintenance.Priority), Text: maintenance.PriorityDisplay)) @maintenance.TotalCost.ToString("C")
@foreach (var maintenance in Model.Items) {
@maintenance.EquipmentName
@maintenance.MaintenanceType @if (maintenance.IsRecurring) { Recurring }
Scheduled @maintenance.ScheduledDate.ToString("MMM dd, yyyy")
@if (maintenance.CompletedDate.HasValue) {
Completed @maintenance.CompletedDate.Value.ToString("MMM dd, yyyy")
}
Status @await Html.PartialAsync("_StatusChip", (Kind: StatusChipHelper.MaintenanceStatus(maintenance.Status), Text: maintenance.StatusDisplay))
Priority @await Html.PartialAsync("_StatusChip", (Kind: StatusChipHelper.MaintenancePriority(maintenance.Priority), Text: maintenance.PriorityDisplay))
Cost @maintenance.TotalCost.ToString("C")
}
}
@if (Model.TotalCount > 0) { @await Html.PartialAsync("_Pagination", Model) }