const express = require('express');
const router = express.Router();
const { requireAdmin } = require('../middleware/role.middleware');
const { getUserRoles, updateUserRoles, deleteUserRoles } = require('../controllers/roles.controller');

/**
 * @swagger
 * /api/users/{userId}/roles:
 *   get:
 *     summary: Liefert die Rollen eines Benutzers
 *     tags: [Roles]
 *     parameters:
 *       - in: path
 *         name: userId
 *         required: true
 *         schema:
 *           type: string
 *         description: Die ID des Benutzers
 *     responses:
 *       200:
 *         description: Die Rollen des Benutzers
 *         content:
 *           application/json:
 *             schema:
 *               type: array
 *               items:
 *                 type: string
 *       404:
 *         description: Benutzer nicht gefunden
 *       500:
 *         description: Interner Serverfehler
 */
router.get('/:userId/roles', getUserRoles);

/**
 * @swagger
 * /api/users/{userId}/roles:
 *   put:
 *     summary: Ändert die Rollen eines Benutzers
 *     tags: [Roles]
 *     parameters:
 *       - in: path
 *         name: userId
 *         required: true
 *         schema:
 *           type: string
 *         description: Die ID des Benutzers
 *     requestBody:
 *       required: true
 *       content:
 *         application/json:
 *           schema:
 *             type: array
 *             items:
 *               type: string
 *             description: Die neuen Rollen des Benutzers
 *     responses:
 *       200:
 *         description: Rollen erfolgreich aktualisiert
 *       400:
 *         description: Ungültige Rollen
 *       403:
 *         description: Keine Berechtigung
 *       404:
 *         description: Benutzer nicht gefunden
 *       500:
 *         description: Interner Serverfehler
 */
router.put('/:userId/roles', requireAdmin, updateUserRoles);

/**
 * @swagger
 * /api/users/{userId}/roles:
 *   delete:
 *     summary: Entfernt alle Rollen eines Benutzers
 *     tags: [Roles]
 *     parameters:
 *       - in: path
 *         name: userId
 *         required: true
 *         schema:
 *           type: string
 *         description: Die ID des Benutzers
 *     responses:
 *       200:
 *         description: Rollen erfolgreich entfernt
 *       403:
 *         description: Keine Berechtigung
 *       404:
 *         description: Benutzer nicht gefunden
 *       500:
 *         description: Interner Serverfehler
 */
router.delete('/:userId/roles', requireAdmin, deleteUserRoles);

module.exports = router;