Add holidays routes to backend and frontend; implement holiday associations and update UI components for admin holidays management

This commit is contained in:
Torsten Schulz (local)
2025-10-17 22:35:31 +02:00
parent 6a0b23e694
commit 67ddf812cd
15 changed files with 1058 additions and 2 deletions

View File

@@ -0,0 +1,86 @@
const HolidayService = require('../services/HolidayService');
/**
* Controller für Feiertage
* Verarbeitet HTTP-Requests und delegiert an HolidayService
*/
class HolidayController {
/**
* Holt alle Bundesländer
*/
async getAllStates(req, res) {
try {
const states = await HolidayService.getAllStates();
res.json(states);
} catch (error) {
console.error('Fehler beim Abrufen der Bundesländer:', error);
res.status(500).json({
message: 'Fehler beim Abrufen der Bundesländer',
error: error.message
});
}
}
/**
* Holt alle Feiertage
*/
async getAllHolidays(req, res) {
try {
const holidays = await HolidayService.getAllHolidays();
res.json(holidays);
} catch (error) {
console.error('Fehler beim Abrufen der Feiertage:', error);
res.status(500).json({
message: 'Fehler beim Abrufen der Feiertage',
error: error.message
});
}
}
/**
* Erstellt einen neuen Feiertag
*/
async createHoliday(req, res) {
try {
const { date, hours, description, stateIds } = req.body;
if (!date || !description) {
return res.status(400).json({
message: 'Datum und Beschreibung sind erforderlich'
});
}
const holiday = await HolidayService.createHoliday(date, hours, description, stateIds);
res.status(201).json(holiday);
} catch (error) {
console.error('Fehler beim Erstellen des Feiertags:', error);
res.status(error.message.includes('existiert bereits') ? 409 : 500).json({
message: error.message
});
}
}
/**
* Löscht einen Feiertag
*/
async deleteHoliday(req, res) {
try {
const holidayId = parseInt(req.params.id);
if (isNaN(holidayId)) {
return res.status(400).json({ message: 'Ungültige ID' });
}
await HolidayService.deleteHoliday(holidayId);
res.json({ message: 'Feiertag gelöscht' });
} catch (error) {
console.error('Fehler beim Löschen des Feiertags:', error);
res.status(error.message.includes('nicht gefunden') ? 404 : 500).json({
message: error.message
});
}
}
}
module.exports = new HolidayController();