kantime-rule-engine
Version:
A library for custom validation in the form based on the user defined json schema.
65 lines (49 loc) • 1.87 kB
JavaScript
let _ = require("lodash");
let _jQ = require("jsonq");
import { RuleParser, RuleTraversal } from "./ruleEngineParser";
var RuleSetdefinition = {};
let DataStructureMethods = require("./ruleEngineHelperMethods");
//test changes
export const Engine = (UserInPut, inputRulesFromForm, MasterRuleCollection) => {
var FinalOutput = {};
_.each(inputRulesFromForm, (rulesList, RuleSetname) => {
RuleSetdefinition = _jQ.pathValue(MasterRuleCollection, [RuleSetname]);
let Queue = new DataStructureMethods.Queue();
//let validRules=getValidFormRuleFromMaster(rulesList,MasterRuleCollection,RuleSetname);
// console.log({rulesList})
// console.log({RuleSetdefinition})
// console.log({validRules})
Queue = RuleTraversal(rulesList, RuleSetdefinition);
let RuleSetOutput = RuleParser(
Queue.getQueue(),
RuleSetdefinition,
UserInPut
);
let InputRules = _jQ.pathValue(inputRulesFromForm, [RuleSetname]);
let RulesOut = {};
RuleSetdefinition = _jQ.pathValue(MasterRuleCollection, [RuleSetname]);
_.each(InputRules, (RuleName) => {
try{
RulesOut[RuleName] = RuleSetOutput[RuleName];
RulesOut[RuleName]['actionData'] = _jQ.pathValue(RuleSetdefinition, [RuleName, 'actionData']);
}
catch(error)
{
console.log(error);
}
});
FinalOutput[RuleSetname] = RulesOut;
});
return FinalOutput;
}
// function getValidFormRuleFromMaster(rulesList, MasterRuleCollection, RuleSetname){
// try {
// _.each(rulesList, (ruleName)=>{
// console.log(_jQ.contains(MasterRuleCollection,{RuleSetname}))
// if (_jQ.contains(MasterRuleCollection,[RuleSetname,ruleName]))
// console.log("true")
// });
// } catch (error) {
// throw error
// }
// }