const RolesService = require('../services/RolesService');

/**
 * Controller für Rollen-Verwaltung
 * Verarbeitet HTTP-Requests und delegiert an RolesService
 */
class RolesController {
  /**
   * Holt alle Benutzer mit ihren Rollen
   */
  async getAllUsers(req, res) {
    try {
      const users = await RolesService.getAllUsers();
      res.json(users);
    } catch (error) {
      console.error('Fehler beim Abrufen der Benutzer:', error);
      res.status(500).json({ 
        message: 'Fehler beim Abrufen der Benutzer',
        error: error.message 
      });
    }
  }

  /**
   * Ändert die Rolle eines Benutzers
   */
  async updateUserRole(req, res) {
    try {
      const adminUserId = req.user?.id || 1;
      const targetUserId = parseInt(req.params.id);
      const { role } = req.body;
      
      if (isNaN(targetUserId)) {
        return res.status(400).json({ message: 'Ungültige Benutzer-ID' });
      }
      
      if (role === undefined || role === null) {
        return res.status(400).json({ message: 'Rolle ist erforderlich' });
      }
      
      const user = await RolesService.updateUserRole(adminUserId, targetUserId, role);
      res.json(user);
    } catch (error) {
      console.error('Fehler beim Aktualisieren der Rolle:', error);
      
      if (error.message.includes('Keine Berechtigung')) {
        return res.status(403).json({ message: error.message });
      }
      
      res.status(500).json({ 
        message: error.message 
      });
    }
  }
}

module.exports = new RolesController();

