'use client'; import { Correspondence } from '@/types/correspondence'; import { StatusBadge } from '@/components/common/status-badge'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { format } from 'date-fns'; import { ArrowLeft, Download, FileText, Loader2, Send, CheckCircle, XCircle, Edit } from 'lucide-react'; import Link from 'next/link'; import { useSubmitCorrespondence, useProcessWorkflow } from '@/hooks/use-correspondence'; import { useState } from 'react'; import { Label } from '@/components/ui/label'; import { Textarea } from '@/components/ui/textarea'; interface CorrespondenceDetailProps { data: Correspondence; } export function CorrespondenceDetail({ data }: CorrespondenceDetailProps) { const submitMutation = useSubmitCorrespondence(); const processMutation = useProcessWorkflow(); const [actionState, setActionState] = useState<'approve' | 'reject' | null>(null); const [comments, setComments] = useState(''); if (!data) return
No data found
; // Derive Current Revision Data const currentRevision = data.revisions?.find((r) => r.isCurrent) || data.revisions?.[0]; const subject = currentRevision?.subject || '-'; const description = currentRevision?.description || '-'; const status = currentRevision?.status?.statusCode || 'UNKNOWN'; // e.g. DRAFT const attachments = currentRevision?.attachments || []; // Note: Importance might be in details const importance = currentRevision?.details?.importance || 'NORMAL'; const handleSubmit = () => { if (confirm('Are you sure you want to submit this correspondence?')) { submitMutation.mutate({ uuid: data.uuid, data: {}, }); } }; const handleProcess = () => { if (!actionState) return; const action = actionState === 'approve' ? 'APPROVE' : 'REJECT'; processMutation.mutate( { uuid: data.uuid, data: { action, comments, }, }, { onSuccess: () => { setActionState(null); setComments(''); }, } ); }; return (
{/* Header / Actions */}

{data.correspondenceNumber}

Created on {data.createdAt ? format(new Date(data.createdAt), 'dd MMM yyyy HH:mm') : '-'}

{/* EDIT BUTTON LOGIC: Show if DRAFT */} {status === 'DRAFT' && ( )} {status === 'DRAFT' && ( )} {status === 'IN_REVIEW' && ( <> )}
{/* Action Input Area */} {actionState && ( {actionState === 'approve' ? 'Confirm Approval' : 'Confirm Rejection'}