@page "/reports/overdue"
@using Microsoft.AspNetCore.Authorization
@using Microsoft.AspNetCore.Components.Authorization
@using TaskTrackingSystem.Shared
@using TaskTrackingSystem.Shared.Models.Task
@using TaskTrackingSystem.Shared.Models.User
@using TaskTrackingSystem.Shared.Models.Project
@using TaskTrackingSystem.Shared.Models.Report
@using System.Text
@rendermode @(new InteractiveServerRenderMode(prerender: false))
@attribute [Authorize]
@inject ApiClientService ApiClient
@inject IJSRuntime JS
@inject AuthenticationStateProvider AuthStateProvider
@inject MenuAuthorizationService MenuAuthorization
@AppLocalization.Text("report.overdueTasksDesc", "Track tasks that have passed their due date or are at risk of delay.")
Overdue Tasks
@overdueCount
@AppLocalization.Text("report.highPriorityOverdue", "High Priority Overdue")
@criticalCount
@AppLocalization.Text("report.dueWithin3Days", "Due Within 3 Days")
@dueSoonCount
@AppLocalization.Text("report.avgDaysOverdue", "Avg Days Overdue")
@avgDaysOverdue
| @AppLocalization.Text("common.index", "No.") | @AppLocalization.Text("common.task", "Task") | @AppLocalization.Text("common.project", "Project") | @AppLocalization.Text("common.assignee", "Assignee") | @AppLocalization.Text("common.dueDate", "Due Date") | @AppLocalization.Text("report.daysOverdue", "Days Overdue") | @AppLocalization.Text("common.issue", "Issues") | @AppLocalization.Text("report.delayEscalation", "Delay / Escalation") |
|---|---|---|---|---|---|---|---|
| @((currentPage - 1) * pageSize + entry.index + 1) |
@task.Title @if (!string.IsNullOrEmpty(task.Description)) {@task.Description } |
@task.ProjectName |
@if (!string.IsNullOrEmpty(task.AssignedTo))
{
@(task.AssignedTo.Length > 0 ? task.AssignedTo[0].ToString().ToUpper() : "")
@task.AssignedTo
}
else
{
Unassigned
}
|
@DisplayFormats.Date(task.DueDate) | @if (task.DaysOverdue > 0) { @task.DaysOverdue day@(task.DaysOverdue != 1 ? "s" : "") } else { var daysDue = Math.Abs(task.DaysOverdue); Due in @daysDue day@(daysDue != 1 ? "s" : "") } | @task.OverdueIssues overdue |
@(string.IsNullOrWhiteSpace(task.DelayReason) ? "No reason recorded" : task.DelayReason)
Blocked by: @(string.IsNullOrWhiteSpace(task.BlockedBy) ? "None" : task.BlockedBy) · Escalation: @GetEscalationLabel(task.EscalationLevel)
|