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

