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