"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
; console.log("Correspondence Detail Data:", data); // 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({ id: data.id, data: {} }); } }; const handleProcess = () => { if (!actionState) return; const action = actionState === "approve" ? "APPROVE" : "REJECT"; processMutation.mutate({ id: data.id, 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"}