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();

