"use client"; import React, {useEffect, useState} from "react"; import {useParams, useRouter} from "next/navigation"; import {ChevronLeft} from "lucide-react"; import {Button} from "@/components/ui/button"; import {Dialog} from "@/components/ui/dialog"; import {Skeleton} from "@/components/ui/skeleton"; import CustomerDetailContent from "@/components/customers/details/CustomerDetailContent"; import CustomerInformationContent from "@/components/customers/details/sub/ContactInformationContent"; import CustomerPhoneNumberContent from "@/components/customers/details/sub/CustomerPhoneNumberContent"; import CustomerNotesContent from "@/components/customers/details/sub/CustomerNotesContent"; import {Customer} from "@/services/customers/entities/customer"; import {CustomerRepository} from "@/services/customers/repositories/customerRepository"; export default function CustomerDetailPage() { const router = useRouter(); const {id} = useParams<{ id: string }>(); const [customer, setCustomer] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const [openDialog, setOpenDialog] = useState(false); const [dialogContent, setDialogContent] = useState(null); useEffect(() => { if (!id) { setError("Keine Kunden-ID angegeben"); setLoading(false); return; } let isMounted = true; setLoading(true); setError(null); CustomerRepository.getById(id) .then((result) => { if (!isMounted) return; if (!result) { setError("Kunde nicht gefunden"); setCustomer(null); } else { setCustomer(result); } }) .catch((error) => { if (!isMounted) return; console.error('Error fetching customer:', error); setCustomer(null); setError("Fehler beim Laden der Kundendaten"); }) .finally(() => { if (isMounted) { setLoading(false); } }); return () => { isMounted = false; }; }, [id]); const handleOpenDialog = (content: React.ReactNode) => { setDialogContent(content); setOpenDialog(true); }; const formatDate = (date: string) => { try { const formattedDate = new Date(date).toLocaleDateString('de-DE', { day: '2-digit', month: '2-digit', year: 'numeric', hour: '2-digit', minute: '2-digit' }); return formattedDate === 'Invalid Date' ? '-' : formattedDate; } catch (error) { console.error('Error formatting date:', error); return '-'; } }; const customerMetadata = { createdInfo: customer ? `Erstellt von ${customer.createdBy || "-"} am ${formatDate(customer.createdAt)}` : "Erstellt von - am -", lastActivityInfo: customer ? `Letzte Aktivität: ${customer.updatedBy || "-"} am ${formatDate(customer.updatedAt)}` : "Letzte Aktivität: - am -" }; const renderMetadata = () => { if (loading) { return (
); } return (
{customerMetadata.createdInfo}
{customerMetadata.lastActivityInfo}
); }; return (
{renderMetadata()}
{error ? (
{error}
) : ( , , ] : [] } /> )} {dialogContent}
); }