new features
This commit is contained in:
@@ -451,6 +451,86 @@ class EquipmentController {
|
||||
}
|
||||
}
|
||||
|
||||
async createCategory(req: Request, res: Response): Promise<void> {
|
||||
try {
|
||||
const { name, kurzname, sortierung, motorisiert } = req.body;
|
||||
if (!name || typeof name !== 'string' || !name.trim()) {
|
||||
res.status(400).json({ success: false, message: 'Name ist erforderlich' });
|
||||
return;
|
||||
}
|
||||
if (!kurzname || typeof kurzname !== 'string' || !kurzname.trim()) {
|
||||
res.status(400).json({ success: false, message: 'Kurzname ist erforderlich' });
|
||||
return;
|
||||
}
|
||||
const category = await equipmentService.createCategory({
|
||||
name: name.trim(),
|
||||
kurzname: kurzname.trim(),
|
||||
sortierung: sortierung != null ? Number(sortierung) : undefined,
|
||||
motorisiert: motorisiert != null ? Boolean(motorisiert) : undefined,
|
||||
});
|
||||
res.status(201).json({ success: true, data: category });
|
||||
} catch (error) {
|
||||
logger.error('createCategory error', { error });
|
||||
res.status(500).json({ success: false, message: 'Kategorie konnte nicht erstellt werden' });
|
||||
}
|
||||
}
|
||||
|
||||
async updateCategory(req: Request, res: Response): Promise<void> {
|
||||
try {
|
||||
const { id } = req.params as Record<string, string>;
|
||||
if (!isValidUUID(id)) {
|
||||
res.status(400).json({ success: false, message: 'Ungültige Kategorie-ID' });
|
||||
return;
|
||||
}
|
||||
const { name, kurzname, sortierung, motorisiert } = req.body;
|
||||
const data: Record<string, unknown> = {};
|
||||
if (name !== undefined) data.name = String(name).trim();
|
||||
if (kurzname !== undefined) data.kurzname = String(kurzname).trim();
|
||||
if (sortierung !== undefined) data.sortierung = Number(sortierung);
|
||||
if (motorisiert !== undefined) data.motorisiert = Boolean(motorisiert);
|
||||
|
||||
if (Object.keys(data).length === 0) {
|
||||
res.status(400).json({ success: false, message: 'Kein Feld zum Aktualisieren angegeben' });
|
||||
return;
|
||||
}
|
||||
const category = await equipmentService.updateCategory(id, data as any);
|
||||
if (!category) {
|
||||
res.status(404).json({ success: false, message: 'Kategorie nicht gefunden' });
|
||||
return;
|
||||
}
|
||||
res.status(200).json({ success: true, data: category });
|
||||
} catch (error: any) {
|
||||
if (error?.message === 'No fields to update') {
|
||||
res.status(400).json({ success: false, message: 'Kein Feld zum Aktualisieren angegeben' });
|
||||
return;
|
||||
}
|
||||
logger.error('updateCategory error', { error, id: req.params.id });
|
||||
res.status(500).json({ success: false, message: 'Kategorie konnte nicht aktualisiert werden' });
|
||||
}
|
||||
}
|
||||
|
||||
async deleteCategory(req: Request, res: Response): Promise<void> {
|
||||
try {
|
||||
const { id } = req.params as Record<string, string>;
|
||||
if (!isValidUUID(id)) {
|
||||
res.status(400).json({ success: false, message: 'Ungültige Kategorie-ID' });
|
||||
return;
|
||||
}
|
||||
const result = await equipmentService.deleteCategory(id);
|
||||
if (!result.deleted) {
|
||||
res.status(result.error === 'Kategorie nicht gefunden' ? 404 : 409).json({
|
||||
success: false,
|
||||
message: result.error,
|
||||
});
|
||||
return;
|
||||
}
|
||||
res.status(200).json({ success: true, message: 'Kategorie gelöscht' });
|
||||
} catch (error) {
|
||||
logger.error('deleteCategory error', { error, id: req.params.id });
|
||||
res.status(500).json({ success: false, message: 'Kategorie konnte nicht gelöscht werden' });
|
||||
}
|
||||
}
|
||||
|
||||
async uploadWartungFile(req: Request, res: Response): Promise<void> {
|
||||
const { wartungId } = req.params as Record<string, string>;
|
||||
const id = parseInt(wartungId, 10);
|
||||
|
||||
Reference in New Issue
Block a user