// src/routes/measurementRoutes.js
const express = require('express');
const router = express.Router();
const MeasurementController = require('../controllers/measurementController');

/**
 * @swagger
 * /measurements:
 *   get:
 *     tags:
 *       - Mesures
 *     summary: Récupère toutes les mesures
 *     description: Retourne la liste complète des mesures de tous les projets
 *     responses:
 *       200:
 *         description: Liste de toutes les mesures
 *         content:
 *           application/json:
 *             schema:
 *               type: array
 *               items:
 *                 $ref: '#/components/schemas/Measurement'
 *       404:
 *         $ref: '#/components/responses/NotFound'
 *       500:
 *         $ref: '#/components/responses/ServerError'
 */
router.get('/measurements', MeasurementController.getAllMeasurements);

/**
 * @swagger
 * /measurements/{id}:
 *   get:
 *     tags:
 *       - Mesures
 *     summary: Récupère une mesure par ID
 *     description: Retourne les détails d'une mesure spécifique
 *     parameters:
 *       - in: path
 *         name: id
 *         required: true
 *         schema:
 *           type: integer
 *         description: ID de la mesure
 *     responses:
 *       200:
 *         description: Détails de la mesure
 *         content:
 *           application/json:
 *             schema:
 *               $ref: '#/components/schemas/Measurement'
 *       400:
 *         $ref: '#/components/responses/BadRequest'
 *       404:
 *         $ref: '#/components/responses/NotFound'
 *       500:
 *         $ref: '#/components/responses/ServerError'
 */
router.get('/measurements/:id', MeasurementController.getMeasurementById);

/**
 * @swagger
 * /measurements/{projectId}/{orderId}:
 *   get:
 *     tags:
 *       - Mesures
 *     summary: Récupère une mesure par projet ID et ordre ID
 *     description: Retourne les détails d'une mesure en fonction du projet et de son numéro d'ordre
 *     parameters:
 *       - in: path
 *         name: projectId
 *         required: true
 *         schema:
 *           type: integer
 *         description: ID du projet
 *       - in: path
 *         name: orderId
 *         required: true
 *         schema:
 *           type: integer
 *         description: ID d'ordre séquentiel de la mesure dans le projet
 *     responses:
 *       200:
 *         description: Détails de la mesure
 *         content:
 *           application/json:
 *             schema:
 *               $ref: '#/components/schemas/Measurement'
 *       400:
 *         $ref: '#/components/responses/BadRequest'
 *       404:
 *         $ref: '#/components/responses/NotFound'
 *       500:
 *         $ref: '#/components/responses/ServerError'
 */
router.get('/measurements/:projectId/:orderId', MeasurementController.getMeasurementByProjectAndOrderId);

/**
 * @swagger
 * /measurements/{id}:
 *   delete:
 *     tags:
 *       - Mesures
 *     summary: Supprime une mesure
 *     description: Supprime une mesure et l'image associée
 *     parameters:
 *       - in: path
 *         name: id
 *         required: true
 *         schema:
 *           type: integer
 *         description: ID de la mesure à supprimer
 *     responses:
 *       200:
 *         description: Mesure supprimée avec succès
 *         content:
 *           application/json:
 *             schema:
 *               type: object
 *               properties:
 *                 message:
 *                   type: string
 *                   example: Mesure supprimée avec succès
 *                 id:
 *                   type: integer
 *                   example: 123
 *       400:
 *         $ref: '#/components/responses/BadRequest'
 *       404:
 *         $ref: '#/components/responses/NotFound'
 *       500:
 *         $ref: '#/components/responses/ServerError'
 */
router.delete('/measurements/:id', MeasurementController.deleteMeasurement);

module.exports = router;