"use client"; import { RFA } from "@/types/rfa"; 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, CheckCircle, XCircle, Loader2 } from "lucide-react"; import Link from "next/link"; import { Separator } from "@/components/ui/separator"; import { useState } from "react"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter, } from "@/components/ui/dialog"; import { Label } from "@/components/ui/label"; import { Textarea } from "@/components/ui/textarea"; import { rfaApi } from "@/lib/api/rfas"; import { useRouter } from "next/navigation"; interface RFADetailProps { data: RFA; } export function RFADetail({ data }: RFADetailProps) { const router = useRouter(); const [approvalDialog, setApprovalDialog] = useState<"approve" | "reject" | null>(null); const [comments, setComments] = useState(""); const [isProcessing, setIsProcessing] = useState(false); const handleApproval = async (action: "approve" | "reject") => { setIsProcessing(true); try { const newStatus = action === "approve" ? "APPROVED" : "REJECTED"; await rfaApi.updateStatus(data.rfa_id, newStatus, comments); setApprovalDialog(null); router.refresh(); } catch (error) { console.error(error); alert("Failed to update status"); } finally { setIsProcessing(false); } }; return (
Created on {format(new Date(data.created_at), "dd MMM yyyy HH:mm")}
{data.description || "No description provided."}
| Item No. | Description | Qty | Unit | Status |
|---|---|---|---|---|
| {item.item_no} | {item.description} | {item.quantity} | {item.unit} |
|
Contract
{data.contract_name}
Discipline
{data.discipline_name}