import { createClient } from '@/lib/supabase/server' import { redirect } from 'next/navigation' import Link from 'next/link' import { Download, ExternalLink, ShoppingBag, ArrowLeft, Package } from 'lucide-react' import { Button } from '@/components/ui/button' import { Card, CardContent } from '@/components/ui/card' import { Badge } from '@/components/ui/badge' import type { Order } from '@/lib/types' const statusLabel: Record = { pending: 'Eingegangen', active: 'In Bearbeitung', cancelled: 'Storniert', } const statusClass: Record = { pending: 'bg-amber-500/20 text-amber-400 border-amber-500/30', active: 'bg-green-500/20 text-green-400 border-green-500/30', cancelled: 'bg-red-500/20 text-red-400 border-red-500/30', } export default async function MyOrdersPage() { const supabase = await createClient() const { data: { user } } = await supabase.auth.getUser() if (!user) redirect('/auth/login') const { data: orders, error } = await supabase .from('orders') .select('*') .eq('user_id', user.id) .order('created_at', { ascending: false }) return (
{/* Header */}

Meine Bestellungen

Alle Ihre Bestellungen auf einen Blick – inkl. aktuellem Status.

{/* Fehler */} {error && (
Fehler beim Laden der Bestellungen: {error.message}
)} {/* Keine Bestellungen */} {!error && (!orders || orders.length === 0) && (

Sie haben noch keine Bestellungen aufgegeben.

)} {/* Bestellliste */}
{(orders ?? []).map((order) => { const o = order as Order const items = o.order_data?.items ?? [] return ( {/* Kopfzeile */}

Bestellnummer

#{o.order_number}

Datum

{new Date(o.created_at).toLocaleDateString('de-DE', { day: '2-digit', month: '2-digit', year: 'numeric', })}

Status

{statusLabel[o.status] ?? o.status}

Gesamt

{new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(o.total_price)}

{/* Produkte kurz */} {items.length > 0 && (
{items.map((item, i) => ( {item.product_name} {item.selected_modules.length > 0 && ( +{item.selected_modules.length} Module )} ))}
)} {/* Aktionen */}
{o.pdf_url && ( <> )}
) })}
) }