personnal/ecole/src copy/services/parcoursService.js

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,
};