'use client' import { useState, useEffect } from 'react' import { useRouter } from 'next/navigation' import Link from 'next/link' import { ArrowLeft, Save, AlertTriangle, Loader2, Building2, ShoppingBag, Trash2 } from 'lucide-react' import { Button } from '@/components/ui/button' import { Card, CardContent, CardHeader, CardTitle, CardDescription } from '@/components/ui/card' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' import { Badge } from '@/components/ui/badge' import { Separator } from '@/components/ui/separator' import { getEndCustomer, updateEndCustomer, anonymizeEndCustomer } from '@/lib/actions/end-customers' import type { EndCustomer } from '@/lib/types' export default function CustomerDetailPage({ params }: { params: Promise<{ id: string }> }) { const router = useRouter() const [customer, setCustomer] = useState(null) const [loading, setLoading] = useState(true) const [saving, setSaving] = useState(false) const [anonymizing, setAnonymizing] = useState(false) const [showGdprConfirm, setShowGdprConfirm] = useState(false) const [form, setForm] = useState({ company_name: '', vat_id: '', first_name: '', last_name: '', street: '', zip: '', city: '', }) useEffect(() => { params.then(({ id }) => { getEndCustomer(id).then(c => { if (!c) { router.push('/my-customers'); return } setCustomer(c) setForm({ company_name: c.company_name ?? '', vat_id: c.vat_id ?? '', first_name: c.first_name ?? '', last_name: c.last_name ?? '', street: c.street ?? '', zip: c.zip ?? '', city: c.city ?? '', }) setLoading(false) }) }) }, [params, router]) const handleSave = async () => { if (!customer || !form.company_name.trim()) return setSaving(true) try { await updateEndCustomer(customer.id, form) setCustomer(prev => prev ? { ...prev, ...form } : prev) alert('Kundendaten gespeichert.') } catch (e) { alert('Fehler beim Speichern.') } finally { setSaving(false) } } const handleAnonymize = async () => { if (!customer) return setAnonymizing(true) try { await anonymizeEndCustomer(customer.id) router.push('/my-customers') } catch (e) { alert('Fehler bei der Anonymisierung.') setAnonymizing(false) } } if (loading) { return (
) } if (!customer) return null return (
{/* Header */}

{customer.is_anonymized ? '[Anonymisiert]' : customer.company_name}

Kunden-ID: {customer.id.slice(0, 8)}…

{customer.is_anonymized && ( Anonymisiert )}
{/* Bearbeitungsformular */} {!customer.is_anonymized && ( Stammdaten bearbeiten Änderungen wirken sich nur auf zukünftige Bestellungen aus. Bestehende Snapshots bleiben unverändert.
{([ { label: 'Firmenname *', key: 'company_name', span: true }, { label: 'USt-IdNr.', key: 'vat_id', span: false }, { label: 'Vorname', key: 'first_name', span: false }, { label: 'Nachname', key: 'last_name', span: false }, { label: 'Straße & Hausnummer', key: 'street', span: true }, { label: 'PLZ', key: 'zip', span: false }, { label: 'Ort', key: 'city', span: false }, ] as const).map(({ label, key, span }) => (
setForm(prev => ({ ...prev, [key]: e.target.value }))} className="bg-white/5 border-white/10 text-white" />
))}
)} {/* DSGVO Anonymisierung */} {!customer.is_anonymized && ( Recht auf Vergessenwerden (DSGVO) Auf Wunsch des Endkunden können Sie dessen personenbezogene Daten unwiderruflich anonymisieren. Bestehende Bestelldaten (PDF-Rechnungen, Snapshots) werden aus steuerrechtlichen Gründen nicht gelöscht. {!showGdprConfirm ? ( ) : (

⚠️ Diese Aktion ist unwiderruflich. Alle personenbezogenen Daten werden überschrieben.

)}
)} {/* Bereits anonymisiert */} {customer.is_anonymized && (

Dieser Endkunde wurde bereits anonymisiert.

Die Daten können nicht wiederhergestellt werden.

)}
) }