"use client"; import { use } from "react"; import { notFound } from "next/navigation"; import { Button } from "@/components/ui/button"; import { ArrowLeft, Download, FileText, Loader2 } from "lucide-react"; import Link from "next/link"; import { Badge } from "@/components/ui/badge"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Separator } from "@/components/ui/separator"; import { RevisionHistory } from "@/components/drawings/revision-history"; import { format } from "date-fns"; import { useQuery } from "@tanstack/react-query"; import { contractDrawingService } from "@/lib/services/contract-drawing.service"; import { shopDrawingService } from "@/lib/services/shop-drawing.service"; import { asBuiltDrawingService } from "@/lib/services/asbuilt-drawing.service"; async function fetchDrawingByUuid(uuid: string) { // Try each drawing type until one succeeds try { const result = await contractDrawingService.getByUuid(uuid); if (result?.data) return { ...result.data, _type: "CONTRACT" }; } catch { /* not found in contract drawings */ } try { const result = await shopDrawingService.getByUuid(uuid); if (result?.data) return { ...result.data, _type: "SHOP" }; } catch { /* not found in shop drawings */ } try { const result = await asBuiltDrawingService.getByUuid(uuid); if (result?.data) return { ...result.data, _type: "AS_BUILT" }; } catch { /* not found in asbuilt drawings */ } return null; } export default function DrawingDetailPage({ params, }: { params: Promise<{ uuid: string }>; }) { const { uuid } = use(params); const { data: drawing, isLoading } = useQuery({ queryKey: ["drawing-detail", uuid], queryFn: () => fetchDrawingByUuid(uuid), enabled: !!uuid, }); if (!uuid) { notFound(); } if (isLoading) { return (
); } if (!drawing) { return (

Drawing Not Found

The drawing with UUID {uuid} could not be found.

); } const drawingNumber = drawing.contractDrawingNo || drawing.drawingNumber || "N/A"; const title = drawing.title || drawing.currentRevision?.title || "Untitled"; const revisions = drawing.revisions || []; return (
{/* Header */}

{drawingNumber}

{title}

{/* Main Info */}
Drawing Details {drawing._type}

Drawing Number

{drawingNumber}

Type

{drawing._type}

{drawing.volumePage && (

Volume Page

{drawing.volumePage}

)}

Created

{drawing.createdAt ? format(new Date(drawing.createdAt), "dd MMM yyyy") : "N/A"}

Preview

PDF Preview Placeholder

{/* Revisions */}
); }