import { Link } from "react-router";
import { Text } from "@/components/ui/text";
import {
formatVendorPortalDateTime,
vendorPortalStatusClass,
} from "@/domain/vendor-portal/lib/status-helpers";
import type { VendorPortalDispatchDetail } from "@/domain/vendor-portal/types/vendor-portal";
import { DispatchStatusActions } from "@/app/v/[token]/dispatch/_components/dispatch-status-actions";
type DispatchSummaryCardProps = {
token: string;
data: VendorPortalDispatchDetail;
locked: boolean;
busy: boolean;
onAccept: () => void;
onStart: () => void;
onComplete: () => void;
onRequestCancel: () => void;
};
export function DispatchSummaryCard({
token,
data,
locked,
busy,
onAccept,
onStart,
onComplete,
onRequestCancel,
}: DispatchSummaryCardProps) {
return (
<>
← Back to dispatches
{data.dispatchNumber}
{data.workOrder?.workerOrderTitle}
{data.status}
{data.workOrder != null && Boolean(data.workOrder.internalWONumber) && (
WO #
{data.workOrder.internalWONumber}
)}
{Boolean(data.poNumber) && (
PO #
{data.poNumber}
)}
{data.nteAmount != null && (
NTE
${Number(data.nteAmount).toFixed(2)}
)}
Invoice
{data.invoiceStatus || "Not Submitted"}
{data.invoiceNumber ? ` · ${data.invoiceNumber}` : ""}
Payment
{data.paymentStatus || "Unavailable"}
{Boolean(data.scheduledDate) && (
Scheduled
{formatVendorPortalDateTime(data.scheduledDate)}
)}
{data.location != null && (
<>
Location
{data.location.name}
{[
data.location.address,
data.location.city,
data.location.state,
data.location.zipCode,
]
.filter(Boolean)
.join(", ")}
>
)}
{Boolean(data.description || data.workOrder?.description) && (
<>
Description
{data.description || data.workOrder?.description}
>
)}
>
);
}