61 lines
1.3 KiB
JavaScript
61 lines
1.3 KiB
JavaScript
const express = require('express');
|
|
const Database = require('better-sqlite3');
|
|
|
|
const router = express.Router();
|
|
const db = new Database('plusfit.db');
|
|
|
|
/* =========================
|
|
GET /widerruf
|
|
========================= */
|
|
router.get('/', (req, res) => {
|
|
res.render('widerruf');
|
|
});
|
|
|
|
/* =========================
|
|
POST /widerruf
|
|
========================= */
|
|
router.post('/', (req, res) => {
|
|
const { vertragsnummer } = req.body;
|
|
|
|
const user = db.prepare(`
|
|
SELECT *
|
|
FROM users
|
|
WHERE vertragsnummer = ?
|
|
`).get(vertragsnummer);
|
|
|
|
if (!user) {
|
|
return res.render('widerruf', {
|
|
error: 'Vertrag nicht gefunden.'
|
|
});
|
|
}
|
|
|
|
if (user.status !== 'aktiv') {
|
|
return res.render('widerruf', {
|
|
error: 'Dieser Vertrag ist nicht widerrufbar.'
|
|
});
|
|
}
|
|
|
|
if (new Date() > new Date(user.widerruf_moeglich_bis)) {
|
|
return res.render('widerruf', {
|
|
error: 'Die Widerrufsfrist ist abgelaufen.'
|
|
});
|
|
}
|
|
|
|
db.prepare(`
|
|
UPDATE users
|
|
SET
|
|
status = 'widerrufen',
|
|
widerrufen_am = ?,
|
|
widerrufen_von_ip = ?
|
|
WHERE id = ?
|
|
`).run(
|
|
new Date().toISOString(),
|
|
req.ip,
|
|
user.id
|
|
);
|
|
|
|
res.render('widerrufErfolg', { vertragsnummer });
|
|
});
|
|
|
|
module.exports = router;
|