'use server' import { createClient } from '@/lib/supabase/server' import type { Order, EndCustomer, EndCustomerWithOrders, OrderWithRegisterName } from '@/lib/types' /** * Holt alle Bestellanfragen. * RLS filtert automatisch auf die eigene Firma (bzw. lässt Admins alle sehen). */ export async function getCompanyOrders(): Promise { const supabase = await createClient() const { data, error } = await supabase .from('orders') .select('*') .order('created_at', { ascending: false }) if (error) throw error return data as Order[] } /** * Holt alle Endkunden. * RLS filtert automatisch auf die eigene Firma (bzw. lässt Admins alle sehen). */ export async function getCompanyEndCustomers(): Promise { const supabase = await createClient() const { data, error } = await supabase .from('end_customers') .select('*') .order('company_name', { ascending: true }) if (error) throw error return data as EndCustomer[] } /** * Holt alle Endkunden inkl. ihrer Bestellungen/Kassen verschachtelt. * Extrahiert den Kassen-Namen aus order_data.items[0].device_name (Fallback "Kasse 1"). * RLS filtert automatisch über get_auth_company_id(). */ export async function getPartnerCustomersWithOrders(): Promise { const supabase = await createClient() const { data, error } = await supabase .from('end_customers') .select('*, orders(*)') .order('company_name', { ascending: true }) if (error) throw error return (data || []).map((customer: any) => { const rawOrders = customer.orders || [] // Sort orders by created_at desc const sortedOrders = [...rawOrders].sort( (a, b) => new Date(b.created_at).getTime() - new Date(a.created_at).getTime() ) const orders: OrderWithRegisterName[] = sortedOrders.map((order: any) => { const items = order.order_data?.items || [] const deviceName = items[0]?.device_name || 'Kasse 1' return { ...order, register_name: deviceName, } }) return { ...customer, orders, } }) }