diff --git a/routes/contracts.js b/routes/contracts.js
index 23eed58..8ec6504 100644
--- a/routes/contracts.js
+++ b/routes/contracts.js
@@ -1,325 +1,135 @@
-<%- include('partials/header') %>
+const express = require('express');
+const Database = require('better-sqlite3');
+const auth = require('../middleware/authMiddleware');
-
-
-
-
-
+ db.prepare(`
+ INSERT INTO vertragsarten
+ (name, beschreibung, laufzeit, betrag, aktiv)
+ VALUES (?, ?, ?, ?, ?)
+`).run(
+ name,
+ beschreibung,
+ laufzeit,
+ betrag,
+ aktiv ? 1 : 0
+);
-<%- include('partials/footer') %>
\ No newline at end of file
+
+ res.redirect('/contracts');
+});
+
+// Vertragsart aktiv / inaktiv setzen
+router.post('/toggle/:id', auth, (req, res) => {
+ const { id } = req.params;
+
+ db.prepare(`
+ UPDATE vertragsarten
+ SET aktiv = CASE
+ WHEN aktiv = 1 THEN 0
+ ELSE 1
+ END
+ WHERE id = ?
+ `).run(id);
+
+ res.redirect('/contracts');
+});
+
+// Vertragsart deaktivieren + User migrieren
+router.post('/deactivate/:id', auth, (req, res) => {
+ const oldId = req.params.id;
+ const { newContractId } = req.body;
+
+ if (!newContractId) {
+ return res.status(400).send('Neue Vertragsart fehlt');
+ }
+
+ const tx = db.transaction(() => {
+
+ // 1️⃣ Alle User auf neue Vertragsart umstellen
+ db.prepare(`
+ UPDATE users
+ SET vertragsvariante = ?
+ WHERE vertragsvariante = ?
+ `).run(newContractId, oldId);
+
+ // 2️⃣ Alte Vertragsart deaktivieren
+ db.prepare(`
+ UPDATE vertragsarten
+ SET aktiv = 0
+ WHERE id = ?
+ `).run(oldId);
+
+ });
+
+ tx();
+
+ res.redirect('/contracts');
+});
+
+// Öffentliche Vertragsauswahl – für ALLE Besucher
+router.get('/select', (req, res) => {
+ const vertragsarten = db.prepare(`
+ SELECT *
+ FROM vertragsarten
+ WHERE aktiv = 1
+ ORDER BY betrag ASC
+ `).all();
+
+ res.render('contractsSelect', { vertragsarten });
+});
+
+
+const PDFDocument = require('pdfkit');
+
+router.get('/pdf/:id', (req, res) => {
+ const v = db.prepare(`
+ SELECT *
+ FROM vertragsarten
+ WHERE id = ? AND aktiv = 1
+ `).get(req.params.id);
+
+ if (!v) {
+ return res.status(404).send('Vertrag nicht gefunden');
+ }
+
+ const doc = new PDFDocument();
+ res.setHeader('Content-Type', 'application/pdf');
+ res.setHeader(
+ 'Content-Disposition',
+ `inline; filename=vertrag_${v.name}.pdf`
+ );
+
+ doc.pipe(res);
+
+ doc.fontSize(20).text(`Vertrag: ${v.name}`, { align: 'center' });
+ doc.moveDown();
+
+ doc.fontSize(12)
+ .text(`Laufzeit: ${v.laufzeit} Monate`)
+ .text(`Betrag: ${v.betrag.toFixed(2)} € / Monat`)
+ .moveDown();
+
+ doc.text(v.beschreibung || 'Keine weitere Beschreibung.');
+
+ doc.end();
+});
+
+
+
+module.exports = router;