rework internal order system
This commit is contained in:
@@ -21,15 +21,15 @@ class AusruestungsanfrageController {
|
||||
|
||||
async createKategorie(req: Request, res: Response): Promise<void> {
|
||||
try {
|
||||
const { name } = req.body;
|
||||
const { name, parent_id } = req.body;
|
||||
if (!name || name.trim().length === 0) {
|
||||
res.status(400).json({ success: false, message: 'Name ist erforderlich' });
|
||||
return;
|
||||
}
|
||||
const kategorie = await ausruestungsanfrageService.createKategorie(name.trim());
|
||||
const kategorie = await ausruestungsanfrageService.createKategorie(name.trim(), parent_id ?? null);
|
||||
res.status(201).json({ success: true, data: kategorie });
|
||||
} catch (error: any) {
|
||||
if (error?.constraint === 'ausruestung_kategorien_katalog_name_key') {
|
||||
if (error?.constraint?.includes('unique') || error?.code === '23505') {
|
||||
res.status(409).json({ success: false, message: 'Kategorie existiert bereits' });
|
||||
return;
|
||||
}
|
||||
@@ -41,12 +41,15 @@ class AusruestungsanfrageController {
|
||||
async updateKategorie(req: Request, res: Response): Promise<void> {
|
||||
try {
|
||||
const id = Number(req.params.id);
|
||||
const { name } = req.body;
|
||||
if (!name || name.trim().length === 0) {
|
||||
const { name, parent_id } = req.body;
|
||||
if (name !== undefined && (!name || name.trim().length === 0)) {
|
||||
res.status(400).json({ success: false, message: 'Name ist erforderlich' });
|
||||
return;
|
||||
}
|
||||
const kategorie = await ausruestungsanfrageService.updateKategorie(id, name.trim());
|
||||
const kategorie = await ausruestungsanfrageService.updateKategorie(id, {
|
||||
name: name?.trim(),
|
||||
parent_id: parent_id !== undefined ? parent_id : undefined,
|
||||
});
|
||||
if (!kategorie) {
|
||||
res.status(404).json({ success: false, message: 'Kategorie nicht gefunden' });
|
||||
return;
|
||||
@@ -451,6 +454,20 @@ class AusruestungsanfrageController {
|
||||
res.status(500).json({ success: false, message: 'Verknüpfung konnte nicht entfernt werden' });
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Widget overview (lightweight, for dashboard widget)
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
async getWidgetOverview(_req: Request, res: Response): Promise<void> {
|
||||
try {
|
||||
const overview = await ausruestungsanfrageService.getWidgetOverview();
|
||||
res.status(200).json({ success: true, data: overview });
|
||||
} catch (error) {
|
||||
logger.error('AusruestungsanfrageController.getWidgetOverview error', { error });
|
||||
res.status(500).json({ success: false, message: 'Widget-Daten konnten nicht geladen werden' });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default new AusruestungsanfrageController();
|
||||
|
||||
Reference in New Issue
Block a user