const express = require('express'); const Database = require('better-sqlite3'); const auth = require('../middleware/authMiddleware'); const { encrypt, decrypt } = require('../utils/crypto'); const generateVertragsnummer = require('../utils/vertragsnummer'); const db = new Database('plusfit.db'); const router = express.Router(); /* ========================= Dashboard ========================= */ router.get('/dashboard', auth, (req, res) => { res.render('dashboard'); }); /* ========================= User anlegen – Formular ========================= */ router.get('/create', auth, (req, res) => { res.render('createUser'); }); /* ========================= User anlegen – SPEICHERN ========================= */ router.post('/create', auth, (req, res) => { const u = req.body; const vertragsnummer = generateVertragsnummer(); const iban = encrypt(u.iban); const bic = encrypt(u.bic); const widerrufBis = new Date(); widerrufBis.setDate(widerrufBis.getDate() + 14); db.prepare(` INSERT INTO users ( vertragsnummer, vertragsvariante, vorname, nachname, geburtsdatum, strasse, hausnummer, plz, ort, land, mobil, telefon, email, kontoinhaber, iban, bic, mandatsreferenz, status, widerruf_moeglich_bis, gesperrt ) VALUES ( ?,?, ?,?,?, ?,?,?,?,?, ?,?,?, ?,?,?,?, ?,?, 0 ) `).run( vertragsnummer, u.vertragsvariante, u.vorname, u.nachname, u.geburtsdatum, u.strasse, u.hausnummer, u.plz, u.ort, u.land, u.mobil, u.telefon, u.email, u.kontoinhaber, iban, bic, u.mandatsreferenz, 'aktiv', widerrufBis.toISOString() ); res.redirect('/users/list'); }); /* ========================= Mitgliederübersicht (AKTIV) ========================= */ router.get('/list', auth, (req, res) => { const search = req.query.q || ''; const users = db.prepare(` SELECT * FROM users WHERE status = 'aktiv' AND ( vorname LIKE ? OR nachname LIKE ? OR email LIKE ? OR ort LIKE ? OR vertragsnummer LIKE ? ) ORDER BY created_at DESC `).all( `%${search}%`, `%${search}%`, `%${search}%`, `%${search}%`, `%${search}%` ); res.render('userList', { users, search }); }); /* ========================= User bearbeiten – FORMULAR ========================= */ router.get('/edit/:id', auth, (req, res) => { const user = db.prepare(` SELECT * FROM users WHERE id = ? AND status = 'aktiv' `).get(req.params.id); if (!user) { return res .status(404) .send('User nicht gefunden oder Vertrag nicht aktiv'); } user.iban = decrypt(user.iban); user.bic = decrypt(user.bic); res.render('editUser', { user }); }); /* ========================= User bearbeiten – SPEICHERN ========================= */ router.post('/edit/:id', auth, (req, res) => { const u = req.body; const iban = encrypt(u.iban); const bic = encrypt(u.bic); db.prepare(` UPDATE users SET vertragsvariante = ?, vorname = ?, nachname = ?, geburtsdatum = ?, strasse = ?, hausnummer = ?, plz = ?, ort = ?, land = ?, mobil = ?, telefon = ?, email = ?, kontoinhaber = ?, iban = ?, bic = ?, mandatsreferenz = ?, gesperrt = ? WHERE id = ? AND status = 'aktiv' `).run( u.vertragsvariante, u.vorname, u.nachname, u.geburtsdatum, u.strasse, u.hausnummer, u.plz, u.ort, u.land, u.mobil, u.telefon, u.email, u.kontoinhaber, iban, bic, u.mandatsreferenz, u.gesperrt ? 1 : 0, req.params.id ); res.redirect('/users/list'); }); module.exports = router;