Files
Webklar-Kundenbereich/server/routes/admin/projektkonten.js
T

39 lines
1.4 KiB
JavaScript

/**
* Projektkonten (Admin). Mount: /api/admin/finanzen/projektkonten (vor dem Finanzen-Router).
* GET /?kunde=<id> 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