import { createClient } from '@/lib/supabase/server' import { createAdminClient } from '@/lib/supabase/admin' import { getProducts, getCategories } from '@/lib/actions/products' import { getEndCustomers } from '@/lib/actions/end-customers' import { OrderWizard } from '@/components/order-wizard' import { redirect } from 'next/navigation' import { Suspense } from 'react' interface PageProps { searchParams: Promise<{ id?: string }> } export default async function OrderPage({ searchParams }: PageProps) { const params = await searchParams return (

Konfigurieren Sie Ihre Lösung

Wählen Sie das passende Paket und die benötigten Module für Ihr Business.

}>
) } async function OrderDataWrapper({ orderId }: { orderId?: string }) { const supabase = await createClient() const { data: { user } } = await supabase.auth.getUser() if (!user) { redirect(`/auth/login?next=/order${orderId ? `?id=${orderId}` : ''}`) } // Check user role and company const { data: userData } = await supabase .from('users') .select('role, company_id') .eq('id', user.id) .single() const isAdmin = userData?.role === 'admin' const hasCompany = !!userData?.company_id if (!isAdmin && !hasCompany) { return (

Kein Unternehmen zugewiesen

Sie müssen einem Unternehmen zugewiesen sein, um Anfragen erstellen zu können. Bitte wenden Sie sich an den Administrator.

) } let initialOrder = null if (orderId) { const adminClient = createAdminClient() const { data: orderData, error } = await adminClient .from('orders') .select('*') .eq('id', orderId) .single() if (error || !orderData) { redirect('/order') } const isAdmin = userData?.role === 'admin' const isOwner = orderData.user_id === user.id if (!isAdmin && !isOwner) { redirect('/order') } if (orderData.status === 'completed' && !isAdmin) { redirect('/order') } initialOrder = orderData } const products = await getProducts().catch(() => []) const categories = await getCategories().catch(() => []) // Admin sees all end customers across partners let endCustomers = [] if (userData?.role === 'admin') { try { const adminClient = createAdminClient() const { data } = await adminClient .from('end_customers') .select('*') .order('company_name', { ascending: true }) endCustomers = data || [] } catch (e) { console.error('Fehler beim Laden aller Endkunden für Admin:', e) } } else { endCustomers = await getEndCustomers().catch(() => []) } // Fetch profile safely using maybeSingle let profile = null try { const { data } = await supabase .from('profiles') .select('*') .eq('id', user.id) .maybeSingle() profile = data } catch (e) { console.error('Fehler beim Laden des Profils:', e) } return }