const timefixService = require('../services/TimefixService');

class TimefixController {
  /**
   * Holt alle Worklog-Einträge für ein bestimmtes Datum
   */
  async getWorklogEntriesForDate(req, res) {
    try {
      const userId = req.user.userId;
      const { date } = req.query;
      
      if (!date) {
        return res.status(400).json({ message: 'Datum ist erforderlich' });
      }
      
      const entries = await timefixService.getWorklogEntriesForDate(userId, date);
      res.json(entries);
    } catch (error) {
      console.error('Fehler beim Abrufen der Worklog-Einträge:', error);
      res.status(500).json({ 
        message: 'Fehler beim Abrufen der Worklog-Einträge',
        error: error.message 
      });
    }
  }
  
  /**
   * Holt alle Zeitkorrekturen für den heutigen Tag
   */
  async getTodayTimefixes(req, res) {
    try {
      const userId = req.user.userId;
      const timefixes = await timefixService.getTodayTimefixes(userId);
      res.json(timefixes);
    } catch (error) {
      console.error('Fehler beim Abrufen der Timefixes:', error);
      res.status(500).json({ 
        message: 'Fehler beim Abrufen der Zeitkorrekturen',
        error: error.message 
      });
    }
  }
  
  /**
   * Erstellt eine neue Zeitkorrektur
   */
  async createTimefix(req, res) {
    try {
      const userId = req.user.userId;
      const { worklogId, newDate, newTime, newAction } = req.body;
      
      if (!worklogId || !newDate || !newTime || !newAction) {
        return res.status(400).json({ 
          message: 'Fehlende Pflichtfelder: worklogId, newDate, newTime, newAction' 
        });
      }
      
      const timefix = await timefixService.createTimefix(userId, worklogId, newDate, newTime, newAction);
      
      res.status(201).json({
        message: 'Zeitkorrektur erfolgreich erstellt',
        timefix
      });
    } catch (error) {
      console.error('Fehler beim Erstellen der Timefix:', error);
      res.status(500).json({ 
        message: 'Fehler beim Erstellen der Zeitkorrektur',
        error: error.message 
      });
    }
  }
  
  /**
   * Löscht eine Zeitkorrektur
   */
  async deleteTimefix(req, res) {
    try {
      const userId = req.user.userId;
      const timefixId = req.params.id;
      
      await timefixService.deleteTimefix(userId, timefixId);
      
      res.json({ message: 'Zeitkorrektur erfolgreich gelöscht' });
    } catch (error) {
      console.error('Fehler beim Löschen der Timefix:', error);
      res.status(500).json({ 
        message: 'Fehler beim Löschen der Zeitkorrektur',
        error: error.message 
      });
    }
  }
}

module.exports = new TimefixController();
