const express = require('express');
const router = express.Router();
import db from '../../db.js';
const measureManager = require('../src/measure/measureManager');
const serverError = require('../utils/serverError');

// Status du Projet :
// 0 = En attente de capture
// 1 = En cours de capture
// 2 = Capture terminée

const minInterval = 3; // Minutes
const maxInterval = 60; // Minutes

var captureProjectID = -1;
var captureInterval = 0; // Minutes

function startProcedure(projectId, interval) {
   console.log('Démarrage de la procédure de capture');
   captureProjectID = projectId;
   if (interval < minInterval) {
      throw new Error('L\'intervalle de capture doit être supérieur ou égal à ' + minInterval + ' minutes.');
   }
   if (interval > maxInterval) {
      throw new Error('L\'intervalle de capture doit être inférieur ou égal à ' + maxInterval + ' minutes.');
   }
   captureInterval = interval;
   console.log('Procédure de capture démarrée avec succès, projet ID: ' + projectId + ', interval: ' + interval + ' minutes.');
   return { message: 'Procédure de capture démarrée avec succès, projet ID: ' + projectId + ', interval: ' + interval + ' minutes.' };
}

function stopProcedure() {
   console.log('Arrêt de la procédure de capture');
   return { message: 'Procédure de capture arrêtée avec succès.' };
}

router.post('/procedure/start/', async (req, res) => {
   const { projectId, interval } = req.body;
    try {
         const result = startProcedure(projectId, interval);
         res.status(200).json(result);
    } catch (err) {
         serverError(res, err);
    }
}
);

router.get('/procedure/stop/', async (req, res) => {
   try {
      const result = stopProcedure();
      res.status(200).json(result);
   } catch (err) {
      serverError(res, err);
   }
});

/**
 * @swagger
 * /procedure/start/:
 *   post:
 *     summary: Start the capture procedure
 *     description: Starts the capture procedure with the given project ID and interval.
 *     requestBody:
 *       required: true
 *       content:
 *         application/json:
 *           schema:
 *             type: object
 *             properties:
 *               projectId:
 *                 type: integer
 *                 description: The ID of the project to start capturing.
 *               interval:
 *                 type: integer
 *                 description: The interval in minutes for the capture.
 *     responses:
 *       200:
 *         description: Capture procedure started successfully.
 *         content:
 *           application/json:
 *             schema:
 *               type: object
 *               properties:
 *                 message:
 *                   type: string
 *                   example: Procédure de capture démarrée avec succès, projet ID: 1, interval: 10 minutes.
 *       500:
 *         description: Internal server error.
 * 
 * /procedure/stop/:
 *   get:
 *     summary: Stop the capture procedure
 *     description: Stops the capture procedure.
 *     responses:
 *       200:
 *         description: Capture procedure stopped successfully.
 *         content:
 *           application/json:
 *             schema:
 *               type: object
 *               properties:
 *                 message:
 *                   type: string
 *                   example: Procédure de capture arrêtée avec succès.
 *       500:
 *         description: Internal server error.
 */

module.exports = router;
