import express from 'express'; import { body, validationResult } from 'express-validator'; import pool from '../config/database.js'; import { authenticateToken } from '../middleware/auth.js'; import { upload } from '../middleware/upload.js'; const router = express.Router(); // Alle Routen erfordern Authentifizierung router.use(authenticateToken); // GET alle Rücknahmen router.get('/', async (req, res) => { try { const [rows] = await pool.query(` SELECT r.*, k.name as kunde_name, a.bezeichnung as artikel_bezeichnung, a.pfand_betrag, m.name as mitarbeiter_name FROM ruecknahmen r LEFT JOIN kunden k ON r.kunde_id = k.id LEFT JOIN artikel a ON r.artikel_id = a.id LEFT JOIN mitarbeiter m ON r.mitarbeiter_id = m.id ORDER BY r.erstellt_am DESC `); res.json(rows); } catch (error) { console.error('Fehler beim Abrufen der Rücknahmen:', error); res.status(500).json({ error: 'Serverfehler' }); } }); // GET Rücknahmen nach Kunde router.get('/kunde/:kunde_id', async (req, res) => { try { const [rows] = await pool.query(` SELECT r.*, k.name as kunde_name, a.bezeichnung as artikel_bezeichnung, a.pfand_betrag, m.name as mitarbeiter_name FROM ruecknahmen r LEFT JOIN kunden k ON r.kunde_id = k.id LEFT JOIN artikel a ON r.artikel_id = a.id LEFT JOIN mitarbeiter m ON r.mitarbeiter_id = m.id WHERE r.kunde_id = ? ORDER BY r.erstellt_am DESC `, [req.params.kunde_id]); res.json(rows); } catch (error) { console.error('Fehler beim Abrufen der Rücknahmen:', error); res.status(500).json({ error: 'Serverfehler' }); } }); // POST neue Rücknahme (mit optionalem Foto) router.post('/', upload.single('foto'), [ body('kunde_id').notEmpty(), body('artikel_id').notEmpty(), body('anzahl').isInt({ min: 1 }) ], async (req, res) => { const errors = validationResult(req); if (!errors.isEmpty()) { return res.status(400).json({ errors: errors.array() }); } const { kunde_id, artikel_id, anzahl } = req.body; const foto_url = req.file ? `/uploads/${req.file.filename}` : null; try { const [result] = await pool.query( 'INSERT INTO ruecknahmen (kunde_id, artikel_id, anzahl, foto_url, mitarbeiter_id) VALUES (?, ?, ?, ?, ?)', [kunde_id, artikel_id, anzahl, foto_url, req.user.id] ); const [newRuecknahme] = await pool.query(` SELECT r.*, k.name as kunde_name, a.bezeichnung as artikel_bezeichnung, a.pfand_betrag, m.name as mitarbeiter_name FROM ruecknahmen r LEFT JOIN kunden k ON r.kunde_id = k.id LEFT JOIN artikel a ON r.artikel_id = a.id LEFT JOIN mitarbeiter m ON r.mitarbeiter_id = m.id WHERE r.id = ? `, [result.insertId]); res.status(201).json(newRuecknahme[0]); } catch (error) { console.error('Fehler beim Anlegen der Rücknahme:', error); res.status(500).json({ error: 'Serverfehler' }); } }); // DELETE Rücknahme router.delete('/:id', async (req, res) => { try { const [result] = await pool.query('DELETE FROM ruecknahmen WHERE id = ?', [req.params.id]); if (result.affectedRows === 0) { return res.status(404).json({ error: 'Rücknahme nicht gefunden' }); } res.json({ message: 'Rücknahme erfolgreich gelöscht' }); } catch (error) { console.error('Fehler beim Löschen der Rücknahme:', error); res.status(500).json({ error: 'Serverfehler' }); } }); export default router;