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;
