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

92 lines
2.5 KiB
JavaScript

const {db} = require('../db/db-connect');
const logger = require('../utils/logger');
const globalService = require('../services/globalService');
async function getContratByNumContrat(numContrat) {
const criteria = {
filter: `numContrat='${numContrat}'`,
expand: "client, intermediaire, rc, fac, tppc"
};
const resultat = await globalService.fetchInfoByCriteria('contrat', criteria)
if (resultat) {
return placerDansEnCours(await expandProjetTarif(resultat))
}
}
async function getContratByNumSaisine(numSaisine) {
const criteria = {
filter: `numSaisine='${numSaisine}'`,
expand: "client, intermediaire, rc, fac, tppc"
};
const resultat = await globalService.fetchInfoByCriteria('contrat', criteria)
if (resultat) {
return placerDansEnCours(await expandProjetTarif(resultat))
}
}
async function getContratById(id) {
const criteria = {
filter: `id='${id}'`,
expand: "client, intermediaire, rc, fac, tppc"
};
const resultat = await globalService.fetchInfoByCriteria('contrat', criteria)
if (resultat) {
return placerDansEnCours(await expandProjetTarif(resultat))
}
}
async function createContrat() {
return await db.records.create('contrat', {});
}
async function expandProjetTarif(resultat) {
const produit = resultat?.['produit'].toLowerCase()
const idProjet = resultat?.['@expand']?.[produit]?.['projet'] || undefined
const idTarif = resultat?.['@expand']?.[produit]?.['tarif'] || undefined
const expand = {
projet: (idProjet) ? await db.records.getOne(produit + "projet", idProjet) : null,
tarif: (idTarif) ? await db.records.getOne(produit + "tarif", idTarif) : null
}
resultat['@expand'][produit] = {...resultat['@expand'][produit], '@expand': expand}
return resultat
}
function placerDansEnCours(result) {
/* déplace le contenu du produit dans @expand:enCours
pour que le front y accède au même emplacement
quelque soit le type du produit*/
if (result !== null && result.produit !== null) {
switch (result.produit.toLowerCase()) {
case 'rc':
result["@expand"]['enCours'] = result['@expand'].rc;
delete result["@expand"]['rc'];
break;
case 'fac':
result["@expand"]['enCours'] = result['@expand'].fac;
delete result["@expand"]['fac'];
break;
case 'tppc':
result["@expand"]['enCours'] = result['@expand'].tppc;
delete result["@expand"]['tppc']
break;
}
}
return result
}
module.exports = {
getContratByNumContrat,
getContratByNumSaisine,
createContrat,
getContratById
};