118 lines
3.0 KiB
JavaScript
118 lines
3.0 KiB
JavaScript
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,
|
|
};
|