Add sick routes to backend and frontend; update routing and UI components for sickness tracking

This commit is contained in:
Torsten Schulz (local)
2025-10-17 21:24:00 +02:00
parent b65a13d815
commit ca4002f402
11 changed files with 735 additions and 6 deletions

View File

@@ -0,0 +1,92 @@
const SickService = require('../services/SickService');
/**
* Controller für Krankheitseinträge
* Verarbeitet HTTP-Requests und delegiert an SickService
*/
class SickController {
/**
* Holt alle Krankheitseinträge für den aktuellen User
*/
async getAllSickEntries(req, res) {
try {
const userId = req.user?.id || 1;
const sickEntries = await SickService.getAllSickEntries(userId);
res.json(sickEntries);
} catch (error) {
console.error('Fehler beim Abrufen der Krankheitseinträge:', error);
res.status(500).json({
message: 'Fehler beim Abrufen der Krankheitseinträge',
error: error.message
});
}
}
/**
* Holt alle verfügbaren Krankheitstypen
*/
async getSickTypes(req, res) {
try {
const types = await SickService.getSickTypes();
res.json(types);
} catch (error) {
console.error('Fehler beim Abrufen der Krankheitstypen:', error);
res.status(500).json({
message: 'Fehler beim Abrufen der Krankheitstypen',
error: error.message
});
}
}
/**
* Erstellt einen neuen Krankheitseintrag
*/
async createSickEntry(req, res) {
try {
const userId = req.user?.id || 1;
const { sickTypeId, startDate, endDate } = req.body;
console.log('DEBUG createSickEntry:', { sickTypeId, startDate, endDate, body: req.body });
if (!sickTypeId || !startDate) {
return res.status(400).json({
message: 'Krankheitstyp und Startdatum sind erforderlich'
});
}
const sick = await SickService.createSickEntry(userId, sickTypeId, startDate, endDate);
res.status(201).json(sick);
} catch (error) {
console.error('Fehler beim Erstellen des Krankheitseintrags:', error);
res.status(500).json({
message: 'Fehler beim Erstellen des Krankheitseintrags',
error: error.message
});
}
}
/**
* Löscht einen Krankheitseintrag
*/
async deleteSickEntry(req, res) {
try {
const userId = req.user?.id || 1;
const sickId = parseInt(req.params.id);
if (isNaN(sickId)) {
return res.status(400).json({ message: 'Ungültige ID' });
}
await SickService.deleteSickEntry(userId, sickId);
res.json({ message: 'Krankheitseintrag gelöscht' });
} catch (error) {
console.error('Fehler beim Löschen des Krankheitseintrags:', error);
res.status(error.message.includes('nicht gefunden') ? 404 : 500).json({
message: error.message
});
}
}
}
module.exports = new SickController();