@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.")
@AppLocalization.Text("dashboard.overdueTasks", "Overdue Tasks")
@AppLocalization.Number(overdueCount)
@AppLocalization.Text("report.highPriorityOverdue", "High Priority Overdue")
@AppLocalization.Number(criticalCount)
@AppLocalization.Text("report.dueWithin3Days", "Due Within 3 Days")
@AppLocalization.Number(dueSoonCount)
@AppLocalization.Text("report.avgDaysOverdue", "Avg Days Overdue")
@AppLocalization.Number(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") |
|---|---|---|---|---|---|---|---|
| @AppLocalization.Number((currentPage - 1) * pageSize + entry.index + 1) |
@Content.GetText(task.Title, task.TitleMy) @if (!string.IsNullOrEmpty(Content.GetText(task.Description, task.DescriptionMy))) {@Content.GetText(task.Description, task.DescriptionMy) } |
@Content.GetText(task.ProjectName, task.ProjectNameMy) |
@if (!string.IsNullOrEmpty(task.AssignedTo))
{
@(task.AssignedTo.Length > 0 ? task.AssignedTo[0].ToString().ToUpper() : "")
@task.AssignedTo
}
else
{
@AppLocalization.Text("common.unassigned", "Unassigned")
}
|
@DisplayFormats.Date(task.DueDate) | @if (task.DaysOverdue > 0) { @AppLocalization.Number(task.DaysOverdue) @AppLocalization.Text("report.days", "days") } else { var daysDue = Math.Abs(task.DaysOverdue); @AppLocalization.Text("report.dueIn", "Due in") @AppLocalization.Number(daysDue) @AppLocalization.Text("report.days", "days") } | @AppLocalization.Number(task.OverdueIssues) @AppLocalization.Text("common.overdue", "overdue") |
@GetDelayReasonLabel(task)
@AppLocalization.Text("report.blockedBy", "Blocked by: ")@(string.IsNullOrWhiteSpace(Content.GetText(task.BlockedBy, task.BlockedByMy)) ? AppLocalization.Text("common.none", "None") : Content.GetText(task.BlockedBy, task.BlockedByMy)) · @AppLocalization.Text("report.escalation", "Escalation: ")@GetEscalationLabel(task.EscalationLevel)
|