/** * Projektkonten (Admin). Mount: /api/admin/finanzen/projektkonten (vor dem Finanzen-Router). * GET /?kunde= Projektkonten eines Kunden samt Zeile "Ohne Projekt" * GET /:projektId Konto, ABs, Rechnungen und offene Arbeitsblaetter eines Projekts * Nur lesen (Strang L1). */ import { Router } from 'express' import { requireAppwriteStaff } from '../../middleware/appwriteStaff.js' import { sendeFehler } from '../../services/auftraege/fehler.js' import { projektkontenFuerKunde, projektkontoDetail } from '../../services/auftraege/projektkonto.js' const router = Router() router.use(requireAppwriteStaff) // Appwrite-UID: erst pruefen, dann an Appwrite geben const KENNUNG = /^[A-Za-z0-9][A-Za-z0-9._-]{0,35}$/ router.get('/', async (req, res) => { const kunde = req.query.kunde if (typeof kunde !== 'string' || !KENNUNG.test(kunde)) return res.status(400).json({ error: 'Kunde fehlt oder ist ungültig.' }) try { res.json(await projektkontenFuerKunde(kunde)) } catch (err) { sendeFehler(res, 'Projektkonten laden', err) } }) router.get('/:projektId', async (req, res) => { const { projektId } = req.params if (!KENNUNG.test(projektId)) return res.status(404).json({ error: 'Projekt nicht gefunden.' }) try { res.json(await projektkontoDetail(projektId)) } catch (err) { sendeFehler(res, 'Projektkonto laden', err) } }) export default router