const express = require('express');
const router = express.Router();

const renderPage = require('../utils/renderHelper');
const logger = require('../utils/logger');
const parcoursService = require('../services/parcoursService');
const userService = require('../services/userService');
const globalService = require('../services/globalService');

// Route init
router.get('/', (req, res) => {
  renderPage('parcours.ejs', res);
});

// Route pour récupérer les informations du parcours à partir d'un numéro de parcours
router.post('/create/:matricule', async (req, res) => {
  const matricule = req.params.matricule.toUpperCase();
  const idUser = await globalService.getRecordIdFromFieldValue("utilisateur", "matricule", matricule);
  const numParcours = await parcoursService.getNewParcoursNumber();
  const idParcours = await parcoursService.createNewEmptyParcours(numParcours);
  await parcoursService.updateFieldValueParcours(idParcours, "dernierUtilisateur", idUser);

  res.json({ valid: Boolean(numParcours), numParcours });
});

// Route pour récupérer les informations du parcours à partir d'un numéro de parcours
router.get('/read/:numParcours', async (req, res) => {
  const numParcours = req.params.numParcours.toUpperCase();
  const parcours = await parcoursService.getParcoursByNumParcours(numParcours);
  const admins = await userService.getUsersByAuthGroupe("ADMIN");

  if (parcours) {
    res.json({ valid: true, parcours });
  } else {
    res.json({ valid: false, admins });
  }
});

// Route pour modifier l'id contrat dans le parcours
router.post('/update/:numParcours/:idContrat', async (req, res) => {
  const numParcours = req.params.numParcours.toUpperCase();
  const idContrat = req.params.idContrat;
  const data = { "contrat": idContrat };

  const idParcours = await globalService.getRecordIdFromFieldValue("parcours", "numParcours", numParcours);
  const record = await globalService.updateRecordFromData("parcours", idParcours, data);

  res.json({ valid: Boolean(record) });
});

module.exports = router;