"use client"; import { useQuery } from "@tanstack/react-query"; import { useParams } from "next/navigation"; import { api } from "@/lib/api"; import type { CaseEvent, Case } from "@/lib/types"; import { Breadcrumb } from "@/components/layout/Breadcrumb"; import { NotesList } from "@/components/notes/NotesList"; import { Skeleton } from "@/components/ui/Skeleton"; import { format, parseISO } from "date-fns"; import { de } from "date-fns/locale"; import { AlertTriangle, FileText, Scale, ArrowRightLeft, Calendar, MessageSquare, Gavel, Info, } from "lucide-react"; import Link from "next/link"; const EVENT_TYPE_CONFIG: Record< string, { label: string; icon: typeof Info; color: string } > = { status_changed: { label: "Statusaenderung", icon: ArrowRightLeft, color: "bg-blue-50 text-blue-700", }, deadline_created: { label: "Frist erstellt", icon: Calendar, color: "bg-amber-50 text-amber-700", }, deadline_completed: { label: "Frist erledigt", icon: Calendar, color: "bg-emerald-50 text-emerald-700", }, document_uploaded: { label: "Dokument hochgeladen", icon: FileText, color: "bg-violet-50 text-violet-700", }, hearing_scheduled: { label: "Verhandlung angesetzt", icon: Gavel, color: "bg-rose-50 text-rose-700", }, note_added: { label: "Notiz hinzugefuegt", icon: MessageSquare, color: "bg-neutral-100 text-neutral-700", }, case_created: { label: "Akte erstellt", icon: Scale, color: "bg-emerald-50 text-emerald-700", }, }; const DEFAULT_EVENT_CONFIG = { label: "Ereignis", icon: Info, color: "bg-neutral-100 text-neutral-600", }; function DetailSkeleton() { return (
); } export default function CaseEventDetailPage() { const { id: caseId, eventId } = useParams<{ id: string; eventId: string; }>(); const { data: caseData } = useQuery({ queryKey: ["case", caseId], queryFn: () => api.get(`/cases/${caseId}`), }); const { data: event, isLoading, error, } = useQuery({ queryKey: ["case-event", eventId], queryFn: () => api.get(`/case-events/${eventId}`), }); if (isLoading) return ; if (error || !event) { return (

Ereignis nicht gefunden

Das Ereignis existiert nicht oder Sie haben keine Berechtigung.

Zurueck zur Akte
); } const typeConfig = EVENT_TYPE_CONFIG[event.event_type ?? ""] ?? DEFAULT_EVENT_CONFIG; const TypeIcon = typeConfig.icon; return (
{/* Header */}

{event.title}

{event.event_date ? format(parseISO(event.event_date), "d. MMMM yyyy, HH:mm", { locale: de, }) : format(parseISO(event.created_at), "d. MMMM yyyy, HH:mm", { locale: de, })}

{/* Description */} {event.description && (

Beschreibung

{event.description}

)} {/* Metadata */}

Metadaten

Typ:
{typeConfig.label}
{event.created_by && (
Erstellt von:
{event.created_by}
)}
Erstellt am:
{format(parseISO(event.created_at), "d. MMMM yyyy, HH:mm", { locale: de, })}
{event.metadata && Object.keys(event.metadata).length > 0 && Object.entries(event.metadata).map(([key, value]) => (
{key}:
{String(value)}
))}
{/* Notes */}
); }