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' import { resolveSupabaseUrl } from '@/lib/utils' 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') // Get user's company_id and fetch all company orders const { data: dbUser } = await supabase .from('users') .select('company_id') .eq('id', user.id) .single() let query = supabase.from('orders').select('*') if (dbUser?.company_id) { const { data: companyUsers } = await supabase .from('users') .select('id') .eq('company_id', dbUser.company_id) const userIds = (companyUsers ?? []).map(u => u.id) query = query.in('user_id', userIds) } else { query = query.eq('user_id', user.id) } const { data: orders, error } = await query.order('created_at', { ascending: false }) return (
{/* Header */}

Meine Anfragen

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

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

Sie haben noch keine Anfragen aufgegeben.

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

Anfragenummer

#{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.status !== 'completed' && ( )} {o.pdf_url && ( <> )}
) })}
) }