68 lines
1.8 KiB
JavaScript
68 lines
1.8 KiB
JavaScript
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;
|