39 lines
1.2 KiB
TypeScript
39 lines
1.2 KiB
TypeScript
// modules/helpdesk/helpdesk.contact.service.ts
|
|
import { FastifyInstance } from 'fastify'
|
|
|
|
export async function getOrCreateContact(
|
|
server: FastifyInstance,
|
|
tenant_id: number,
|
|
{ email, phone, display_name, customer_id, contact_id }: { email?: string; phone?: string; display_name?: string; customer_id?: number; contact_id?: number }
|
|
) {
|
|
if (!email && !phone) throw new Error('Contact must have at least an email or phone')
|
|
|
|
// Bestehenden Kontakt prüfen
|
|
const { data: existing, error: findError } = await server.supabase
|
|
.from('helpdesk_contacts')
|
|
.select('*')
|
|
.eq('tenant_id', tenant_id)
|
|
.or(`email.eq.${email || ''},phone.eq.${phone || ''}`)
|
|
.maybeSingle()
|
|
|
|
if (findError) throw findError
|
|
if (existing) return existing
|
|
|
|
// Anlegen
|
|
const { data: created, error: insertError } = await server.supabase
|
|
.from('helpdesk_contacts')
|
|
.insert({
|
|
tenant_id,
|
|
email,
|
|
phone,
|
|
display_name,
|
|
customer_id,
|
|
contact_id
|
|
})
|
|
.select()
|
|
.single()
|
|
|
|
if (insertError) throw insertError
|
|
return created
|
|
}
|