const vacationService = require('../services/VacationService');

class VacationController {
  /**
   * Holt alle Urlaubseinträge für einen User
   */
  async getAllVacations(req, res) {
    try {
      const userId = req.user.userId;
      const vacations = await vacationService.getAllVacations(userId);
      res.json(vacations);
    } catch (error) {
      console.error('Fehler beim Abrufen der Urlaubseinträge:', error);
      res.status(500).json({ 
        message: 'Fehler beim Abrufen der Urlaubseinträge',
        error: error.message 
      });
    }
  }
  
  /**
   * Erstellt einen neuen Urlaubseintrag
   */
  async createVacation(req, res) {
    try {
      const userId = req.user.userId;
      const { vacationType, startDate, endDate } = req.body;
      
      if (vacationType === undefined || !startDate) {
        return res.status(400).json({ 
          message: 'Fehlende Pflichtfelder: vacationType, startDate' 
        });
      }
      
      const vacation = await vacationService.createVacation(userId, vacationType, startDate, endDate);
      
      res.status(201).json({
        message: 'Urlaubseintrag erfolgreich erstellt',
        vacation
      });
    } catch (error) {
      console.error('Fehler beim Erstellen des Urlaubseintrags:', error);
      res.status(500).json({ 
        message: 'Fehler beim Erstellen des Urlaubseintrags',
        error: error.message 
      });
    }
  }
  
  /**
   * Löscht einen Urlaubseintrag
   */
  async deleteVacation(req, res) {
    try {
      const userId = req.user.userId;
      const vacationId = req.params.id;
      
      console.log('DEBUG deleteVacation: vacationId =', vacationId, 'type =', typeof vacationId);
      
      await vacationService.deleteVacation(userId, vacationId);
      
      res.json({ message: 'Urlaubseintrag erfolgreich gelöscht' });
    } catch (error) {
      console.error('Fehler beim Löschen des Urlaubseintrags:', error);
      res.status(500).json({ 
        message: 'Fehler beim Löschen des Urlaubseintrags',
        error: error.message 
      });
    }
  }
}

module.exports = new VacationController();
