1
0
Fork 0
mirror of https://github.com/betagouv/mon-entreprise synced 2025-02-09 04:05:01 +00:00
mon-entreprise/source/engine/controls.js
Johan Girod 00b122fa97 ⚙️ ajoute la conversion d'unité
Gros changements en perspective :
- Supprime la notion de période, au bénéfice de celle d'unité
  (`période : mensuelle` devient `unité: €/mois`)
- Améliore les rapports d'erreur avec des messages plus clair
- Ajoute un avertissement lorsque des types ne sont pas compatible
- Ajoute la conversion automatique d'unité dans le moteur
- Ajoute une notion d'unité par défaut de la simulation,
  c'est l'unité vers laquelle les règles qui ne spécifient pas
  d'unité seront converties
- Ajoute une notion d'unité par défaut des règles, qui spécifie
  l'unité de la règle qui prévaut lorsque qu'il n'y a pas
  d'unité par défaut de la simulation (utile pour les question ou
  pour s'assurer du bon type d'une règle)
2019-12-16 11:34:04 +01:00

22 lines
588 B
JavaScript

import { evaluateNode } from 'Engine/evaluation'
import { filter, map, path, pipe, unnest, values } from 'ramda'
let getControls = path(['explanation', 'contrôles'])
export let evaluateControls = (cache, situationGate, parsedRules) =>
pipe(
values,
filter(getControls),
map(rule =>
getControls(rule).map(control => ({
...control,
evaluated: evaluateNode(
{ ...cache, contextRule: [rule.dottedName] },
situationGate,
parsedRules,
control.testExpression
)
}))
),
unnest,
filter(control => control.evaluated.nodeValue === true)
)(cache)