76 lines
2.1 KiB
TypeScript
76 lines
2.1 KiB
TypeScript
'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<Order[]> {
|
|
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<EndCustomer[]> {
|
|
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<EndCustomerWithOrders[]> {
|
|
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,
|
|
}
|
|
})
|
|
}
|
|
|