const express = require('express'); const router = express.Router(); const db = require('../config/database'); // Startseite - Tarife anzeigen router.get('/', async (req, res) => { try { const [tariffs] = await db.query( 'SELECT * FROM tariffs WHERE active = 1 ORDER BY price_monthly ASC' ); res.render('index', { tariffs, error: null }); } catch (err) { console.error(err); res.render('index', { tariffs: [], error: 'Tarife konnten nicht geladen werden.' }); } }); // Anmelde-Formular für gewählten Tarif router.get('/anmelden/:tariffId', async (req, res) => { try { const [tariffs] = await db.query( 'SELECT * FROM tariffs WHERE id = ? AND active = 1', [req.params.tariffId] ); if (tariffs.length === 0) { return res.redirect('/'); } res.render('signup', { tariff: tariffs[0] }); } catch (err) { console.error(err); res.redirect('/'); } }); // Bestätigung ausstehend router.get('/bestaetigung-ausstehend', (req, res) => { res.render('confirmation-pending', { email: req.query.email || '' }); }); // E-Mail Bestätigung router.get('/confirm/:token', async (req, res) => { try { const [rows] = await db.query( "SELECT * FROM memberships WHERE confirmation_token = ? AND status = 'pending'", [req.params.token] ); if (rows.length === 0) { const [confirmed] = await db.query( "SELECT * FROM memberships WHERE confirmation_token = ? AND status = 'active'", [req.params.token] ); if (confirmed.length > 0) return res.render('confirmation-success'); return res.render('confirmation-invalid'); } const member = rows[0]; const hoursDiff = (new Date() - new Date(member.created_at)) / (1000 * 60 * 60); if (hoursDiff > 24) return res.render('confirmation-invalid'); await db.query( "UPDATE memberships SET status='active', confirmed_at=NOW() WHERE id=?", [member.id] ); res.render('confirmation-success'); } catch (err) { console.error('Confirm error:', err); res.render('error', { message: 'Fehler bei der Bestätigung.' }); } }); // Erfolgsseite router.get('/erfolg', (req, res) => { res.render('success'); }); module.exports = router;