@rajduandc/ruleengine
Version:
Rule engine for kantime
58 lines (43 loc) • 1.77 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) => {
RulesOut[RuleName] = RuleSetOutput[RuleName];
RulesOut[RuleName]['actionData'] = _jQ.pathValue(RuleSetdefinition, [RuleName, 'actionData']);
});
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
// }
// }