UNPKG

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