/**
 * 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' }
  }
})
