const express = require('express'); const db = require('../db'); const asyncHandler = require('../middleware/asyncHandler'); const router = express.Router(); router.get('/', asyncHandler(async (req, res) => { const rows = await db.all('SELECT * FROM anbieter ORDER BY name'); res.json(rows); })); router.post('/', asyncHandler(async (req, res) => { const { name } = req.body || {}; if (!name || !name.trim()) { return res.status(400).json({ error: 'Name ist erforderlich' }); } try { const result = await db.run('INSERT INTO anbieter (name) VALUES (?)', [name.trim()]); res.json({ id: result.lastID, name: name.trim() }); } catch (err) { if (/UNIQUE/.test(err.message)) { return res.status(400).json({ error: 'Anbieter mit diesem Namen existiert bereits' }); } throw err; } })); router.delete('/:id', asyncHandler(async (req, res) => { const { id } = req.params; const [tariffeRow, schaltungenRow] = await Promise.all([ db.get('SELECT COUNT(*) AS n FROM tarife WHERE anbieter_id = ?', [id]), db.get('SELECT COUNT(*) AS n FROM schaltungen WHERE anbieter_id = ?', [id]), ]); if (tariffeRow.n + schaltungenRow.n > 0) { const reasons = []; if (tariffeRow.n > 0) reasons.push(`${tariffeRow.n} Tarif(e)`); if (schaltungenRow.n > 0) reasons.push(`${schaltungenRow.n} Schaltung(en)`); return res.status(400).json({ error: `Anbieter kann nicht gelöscht werden: ${reasons.join(', ')} verwenden diesen Anbieter`, }); } const deletedRules = await db.run('DELETE FROM anbieter_provisionsregeln WHERE anbieter_id = ?', [id]); const result = await db.run('DELETE FROM anbieter WHERE id = ?', [id]); if (result.changes === 0) { return res.status(404).json({ error: 'Anbieter nicht gefunden' }); } let message = 'Anbieter erfolgreich gelöscht'; if (deletedRules.changes > 0) { message += ` (${deletedRules.changes} Provisionsregel(n) wurden mit gelöscht)`; } res.json({ message }); })); // Global commission rules for this provider router.get('/:id/provisionsregeln', asyncHandler(async (req, res) => { const { id } = req.params; const rows = await db.all( `SELECT apr.*, a.name AS anbieter_name FROM anbieter_provisionsregeln apr JOIN anbieter a ON apr.anbieter_id = a.id WHERE apr.anbieter_id = ? AND apr.aktiv = 1 ORDER BY apr.gueltig_ab DESC`, [id] ); res.json(rows); })); // Mitarbeiter-Prozentsätze for this provider router.get('/:id/mitarbeiter-prozentsaetze', asyncHandler(async (req, res) => { const { id } = req.params; const rows = await db.all( 'SELECT * FROM mitarbeiter_prozentsaetze WHERE anbieter_id = ? ORDER BY gueltig_ab DESC', [id] ); res.json(rows); })); module.exports = router;