diff --git a/src/app/(modules)/ticket/[ticketId]/components/TicketStatusActions.tsx b/src/app/(modules)/ticket/[ticketId]/components/TicketStatusActions.tsx index b908ad6..8676c4b 100644 --- a/src/app/(modules)/ticket/[ticketId]/components/TicketStatusActions.tsx +++ b/src/app/(modules)/ticket/[ticketId]/components/TicketStatusActions.tsx @@ -1,8 +1,11 @@ 'use client'; +import { AlertTriangle } from 'lucide-react'; + import { PERMISSIONS } from '@/constants/permissions'; import { PermissionGuard } from '@/guards'; import type { TicketAssignmentSummary } from '@/types'; +import { formatDate } from '@/utils/date'; import { NoTicketAction } from './actions/NoTicketAction'; import { RequestExtensionAction } from './actions/RequestExtensionAction'; @@ -13,6 +16,29 @@ interface TicketStatusActionsProps { assignment?: TicketAssignmentSummary; } +function OverdueLotAlert({ + lotId, + dueAt, +}: { + lotId: number; + dueAt: string | null; +}) { + return ( +
+ +
+

Lot {lotId} is overdue

+

+ The due date expired on {formatDate(dueAt)}. +

+
+
+ ); +} + function getTicketAction( ticketId: string, assignment?: TicketAssignmentSummary, @@ -51,5 +77,12 @@ export function TicketStatusActions({ }: TicketStatusActionsProps) { const action = getTicketAction(ticketId, assignment); - return action ?
{action}
: null; + return action ? ( +
+ {assignment?.is_overdue ? ( + + ) : null} + {action} +
+ ) : null; } diff --git a/src/types/ticket/detail.ts b/src/types/ticket/detail.ts index f1a7c4e..c1d889b 100644 --- a/src/types/ticket/detail.ts +++ b/src/types/ticket/detail.ts @@ -60,6 +60,7 @@ export interface TicketAssignmentSummary { pending_detections: number; not_submitted_detections: number; is_complete: boolean; + is_overdue: boolean; due_at: string | null; note?: string | null; }