// src/routes/cameraRoutes.js
const express = require('express');
const router = express.Router();
const CameraController = require('../controllers/cameraController');

/**
 * @swagger
 * /camera/status:
 *   get:
 *     summary: Récupère le statut actuel de la caméra
 *     responses:
 *       200:
 *         description: Statut de la caméra
 *         content:
 *           application/json:
 *             schema:
 *               type: object
 *               properties:
 *                 id:
 *                   type: integer
 *                 interval:
 *                   type: integer
 *                   nullable: true
 *                 maintenance:
 *                   type: integer
 *                 active:
 *                   type: integer
 *       500:
 *         description: Erreur serveur
 */
router.get('/camera/status', CameraController.getCameraStatus);

/**
 * @swagger
 * /procedure/start:
 *   post:
 *     summary: Démarre une procédure de capture
 *     requestBody:
 *       required: true
 *       content:
 *         application/json:
 *           schema:
 *             type: object
 *             properties:
 *               project_id:
 *                 type: integer
 *               interval:
 *                 type: integer
 *               nb_images:
 *                 type: integer
 *             required:
 *               - project_id
 *               - interval
 *               - nb_images
 *     responses:
 *       200:
 *         description: Procédure démarrée avec succès
 *       400:
 *         description: Paramètres invalides ou procédure déjà en cours
 *       500:
 *         description: Erreur serveur
 */
router.post('/procedure/start', CameraController.startProcedure);

/**
 * @swagger
 * /procedure/stop:
 *   post:
 *     summary: Initie l'arrêt d'une procédure de capture
 *     responses:
 *       200:
 *         description: Procédure d'arrêt initiée
 *       500:
 *         description: Erreur serveur
 */
router.post('/procedure/stop', CameraController.stopProcedure);

/**
 * @swagger
 * /camera/stop:
 *   post:
 *     summary: Confirme l'arrêt de la caméra
 *     responses:
 *       200:
 *         description: Caméra arrêtée avec succès
 *       500:
 *         description: Erreur serveur
 */
router.post('/camera/stop', CameraController.confirmStopProcedure);

/**
 * @swagger
 * /camera/maintenance:
 *   post:
 *     summary: Active le mode maintenance
 *     responses:
 *       200:
 *         description: Mode maintenance activé
 *       500:
 *         description: Erreur serveur
 */
router.post('/camera/maintenance', CameraController.activateMaintenance);

/**
 * @swagger
 * /camera/maintenance/deactivate:
 *   post:
 *     summary: Désactive le mode maintenance
 *     responses:
 *       200:
 *         description: Mode maintenance désactivé
 *       500:
 *         description: Erreur serveur
 */
router.post('/camera/maintenance/deactivate', CameraController.deactivateMaintenance);

module.exports = router;