shared catalog in Bestellungen, catalog picker in line items, Ersatzbeschaffung flag, vendor detail flash fix
This commit is contained in:
@@ -460,6 +460,29 @@ class AusruestungsanfrageController {
|
||||
}
|
||||
}
|
||||
|
||||
async updatePositionZurueckgegeben(req: Request, res: Response): Promise<void> {
|
||||
try {
|
||||
const positionId = Number(req.params.positionId);
|
||||
const { altes_geraet_zurueckgegeben } = req.body as { altes_geraet_zurueckgegeben?: boolean };
|
||||
|
||||
if (typeof altes_geraet_zurueckgegeben !== 'boolean') {
|
||||
res.status(400).json({ success: false, message: 'altes_geraet_zurueckgegeben (boolean) ist erforderlich' });
|
||||
return;
|
||||
}
|
||||
|
||||
const position = await ausruestungsanfrageService.updatePositionZurueckgegeben(positionId, altes_geraet_zurueckgegeben);
|
||||
if (!position) {
|
||||
res.status(404).json({ success: false, message: 'Position nicht gefunden' });
|
||||
return;
|
||||
}
|
||||
|
||||
res.status(200).json({ success: true, data: position });
|
||||
} catch (error) {
|
||||
logger.error('AusruestungsanfrageController.updatePositionZurueckgegeben error', { error });
|
||||
res.status(500).json({ success: false, message: 'Rückgabestatus konnte nicht aktualisiert werden' });
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Overview
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
@@ -8,6 +8,51 @@ import fs from 'fs';
|
||||
const param = (req: Request, key: string): string => req.params[key] as string;
|
||||
|
||||
class BestellungController {
|
||||
// ---------------------------------------------------------------------------
|
||||
// Catalog (shared ausruestung_artikel)
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
async listKatalogItems(req: Request, res: Response): Promise<void> {
|
||||
try {
|
||||
const search = req.query.search as string | undefined;
|
||||
const kategorie = req.query.kategorie as string | undefined;
|
||||
const items = await bestellungService.getKatalogItems({ search, kategorie });
|
||||
res.status(200).json({ success: true, data: items });
|
||||
} catch (error) {
|
||||
logger.error('BestellungController.listKatalogItems error', { error });
|
||||
res.status(500).json({ success: false, message: 'Katalogartikel konnten nicht geladen werden' });
|
||||
}
|
||||
}
|
||||
|
||||
async getKatalogItem(req: Request, res: Response): Promise<void> {
|
||||
const id = parseInt(param(req, 'itemId'), 10);
|
||||
if (isNaN(id)) {
|
||||
res.status(400).json({ success: false, message: 'Ungültige ID' });
|
||||
return;
|
||||
}
|
||||
try {
|
||||
const item = await bestellungService.getKatalogItem(id);
|
||||
if (!item) {
|
||||
res.status(404).json({ success: false, message: 'Katalogartikel nicht gefunden' });
|
||||
return;
|
||||
}
|
||||
res.status(200).json({ success: true, data: item });
|
||||
} catch (error) {
|
||||
logger.error('BestellungController.getKatalogItem error', { error });
|
||||
res.status(500).json({ success: false, message: 'Katalogartikel konnte nicht geladen werden' });
|
||||
}
|
||||
}
|
||||
|
||||
async listKatalogKategorien(_req: Request, res: Response): Promise<void> {
|
||||
try {
|
||||
const kategorien = await bestellungService.getKatalogKategorien();
|
||||
res.status(200).json({ success: true, data: kategorien });
|
||||
} catch (error) {
|
||||
logger.error('BestellungController.listKatalogKategorien error', { error });
|
||||
res.status(500).json({ success: false, message: 'Kategorien konnten nicht geladen werden' });
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Vendors
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user