const express = require('express'); const PDFDocument = require('pdfkit'); const Database = require('better-sqlite3'); const { decrypt } = require('../utils/crypto'); const auth = require('../middleware/authMiddleware'); const router = express.Router(); const db = new Database('plusfit.db'); router.get('/mandat/:id', auth, (req, res) => { const u = db.prepare(` SELECT * FROM users WHERE id = ? AND status = 'aktiv' AND gesperrt = 0 `).get(req.params.id); if (!u) { return res .status(404) .send('SEPA-Mandat nicht verfügbar (Vertrag nicht aktiv).'); } if (!u.iban || !u.bic || !u.mandatsreferenz) { return res .status(400) .send('SEPA-Daten unvollständig.'); } const iban = decrypt(u.iban); const bic = decrypt(u.bic); const doc = new PDFDocument({ margin: 50 }); res.setHeader('Content-Type', 'application/pdf'); res.setHeader( 'Content-Disposition', `inline; filename=sepa_mandat_${u.vertragsnummer}.pdf` ); doc.pipe(res); doc.fontSize(18).text('SEPA-Lastschriftmandat', { align: 'center' }); doc.moveDown(2); doc.fontSize(12).text(`Name: ${u.vorname} ${u.nachname}`); doc.text(`Vertragsnummer: ${u.vertragsnummer}`); doc.text(`Adresse: ${u.strasse} ${u.hausnummer}, ${u.plz} ${u.ort}`); doc.moveDown(); doc.text(`IBAN: ${iban}`); doc.text(`BIC: ${bic}`); doc.text(`Mandatsreferenz: ${u.mandatsreferenz}`); doc.moveDown(2); doc.text('Ich ermächtige Plusfit, Zahlungen von meinem Konto mittels Lastschrift einzuziehen.'); doc.moveDown(2); doc.text('Unterschrift Kunde: ________________________________'); doc.text('Datum: ________________________________'); doc.end(); }); module.exports = router;