/** * POST /api/offers/sepa/preview — render the (blank / prefilled) mandate PDF * for the modal preview. Body: { source, recordId, language, scheme, recurring, * prenotificationDays, mandateReference?, debtor? }. */ import { buildSepaMandatePdf, sepaFilename } from '../../../utils/offers/sepaPdf' import { buildMandateData } from '../../../utils/offers/sepaMandate' export default defineEventHandler(async (event) => { const token = await getTokenHelper(event) if (!token) return { status: 401, message: 'Not authenticated' } const body: any = await readBody(event).catch(() => ({})) const language = body?.language === 'en' ? 'en' : 'de' const source = body?.source === 'lead' ? 'lead' : 'partner' const recordId = Number(body?.recordId) || 0 try { const mandate = buildMandateData(source, recordId, { scheme: body?.scheme, recurring: body?.recurring !== false, prenotificationDays: Number(body?.prenotificationDays) || undefined, mandateReference: body?.mandateReference }, body?.debtor || {}) const buffer = await buildSepaMandatePdf({ data: mandate, language, filled: body?.debtor || {} }) return { status: 200, filename: sepaFilename(language, mandate.mandateReference), mandateReference: mandate.mandateReference, creditorId: mandate.creditor.creditorId, pdfBase64: buffer.toString('base64') } } catch (err: any) { console.error('[SEPA] preview failed:', err) return { status: 500, message: err?.message || 'Preview failed' } } })