const { db } = require("../db/db-connect"); const logger = require("../utils/logger"); const globalService = require("../services/globalService"); async function getParcoursByNumParcours(numParcours) { const criteria = {filter: `numParcours='${numParcours}'`, expand: `dernierUtilisateur.region, contrat`}; return globalService.fetchInfoByCriteria("parcours", criteria); } // get All parcours saved in DB async function getAllParcours() { try { const criteria = {expand: "dernierUtilisateur, contrat, region"}; const resultList = await db.records.getList("parcours", 1, 200, criteria); return resultList; } catch (error) { logger.log('error', error); return null; } } // get all parcours filtred on region async function getParcoursByRegion(regionUser) { try { // Récupérer les enregistrements de la collection "parcours" const filter = `dernierUtilisateur.region.nom = "${regionUser}"`; const parcoursRecords = await db.records.getFullList("parcours", 200, { sort: "-created", filter: filter, expand: "contrat, dernierUtilisateur.region, contrat.intermediaire", }); // Récupérer les relations client pour chaque contrat for (const record of parcoursRecords) { const contrat = record["@expand"].contrat; if (contrat && contrat.client) { const clientRecord = await db.records.getOne("client", contrat.client); record["@expand"].contrat.client = clientRecord; } } return parcoursRecords; } catch (error) { logger.log('error', error); throw error; } } async function createNewEmptyParcours(numParcours) { try { const data = { ["numParcours"]: numParcours }; const record = await db.records.create("parcours", data); if (record) { return record.id; } else { return null; } } catch (error) { logger.log("error", error); return null; } } async function updateFieldValueParcours(id, field, value) { try { const data = { [field]: value }; const record = await db.records.update("parcours", id, data); if (record) { return record.id; } else { return null; } } catch (error) { logger.log("error", error); return null; } } async function getNewParcoursNumber() { try { // fetch a paginated records list en utilisant le filtre pour le parcours const resultList = await db.records.getFullList("parcours", 99999999, {sort: "-numParcours",}); if (resultList.length > 0) { const lastNumParcours = resultList[0].numParcours; // Extrait les chiffres du numéro de parcours const numericPart = lastNumParcours.substring(1); // Supprime le "P" initial const numericValue = parseInt(numericPart, 10); if (!isNaN(numericValue)) { const newNumericValue = numericValue + 1; const newNumParcours = "P" + newNumericValue.toString().padStart(9, "0"); return newNumParcours; } } else { return null; } } catch (error) { logger.log("error", error); return null; } } module.exports = { getNewParcoursNumber, getParcoursByNumParcours, createNewEmptyParcours, updateFieldValueParcours, getAllParcours, getParcoursByRegion, };