'use client'; // File: components/distribution/DistributionStatus.tsx // แสดงสถานะ Distribution ของ RFA หลังอนุมัติ (T060) import React from 'react'; import { CheckCircle2, Clock, SendHorizonal, Users } from 'lucide-react'; import { Badge } from '@/components/ui/badge'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; type DistributionStatusValue = 'PENDING' | 'PROCESSING' | 'COMPLETED' | 'FAILED'; interface DistributionRecord { publicId: string; status: DistributionStatusValue; transmittalCount: number; recipientCount: number; processedAt?: string; error?: string; } interface DistributionStatusProps { rfaPublicId: string; distribution?: DistributionRecord; isLoading?: boolean; } const STATUS_CONFIG: Record< DistributionStatusValue, { label: string; variant: 'default' | 'secondary' | 'destructive' | 'outline'; icon: React.ElementType } > = { PENDING: { label: 'Queued', variant: 'outline', icon: Clock }, PROCESSING: { label: 'Processing', variant: 'secondary', icon: Clock }, COMPLETED: { label: 'Distributed', variant: 'default', icon: CheckCircle2 }, FAILED: { label: 'Failed', variant: 'destructive', icon: Clock }, }; export function DistributionStatus({ rfaPublicId: _rfaPublicId, distribution, isLoading }: DistributionStatusProps) { if (isLoading) { return
Checking distribution status...
; } if (!distribution) { return (
Awaiting approval for distribution
); } const config = STATUS_CONFIG[distribution.status]; const Icon = config.icon; return (
Distribution Status {config.label}
{distribution.transmittalCount} Transmittal(s)
{distribution.recipientCount} Recipient(s)
{distribution.processedAt && ( {new Date(distribution.processedAt).toLocaleDateString('th-TH')} )}
{distribution.error && (

{distribution.error}

)}
); }