1 var _ = require('lodash');
4 console.log('Trigger Utils Initialization...');
7 Util.prototype.getActionsByTriggers = function(doc, triggers) {
9 doc.dataValues.from = doc.dataValues.from ? doc.dataValues.from.split(';') : [];
10 doc.dataValues.cc = doc.dataValues.cc ? doc.dataValues.cc.split(';') : [];
11 doc.dataValues.to = doc.dataValues.to ? doc.dataValues.to.split(';') : [];
12 triggers.forEach(function(trigger) {
20 var conditionsGroup = JSON.parse(trigger.conditions).group;
21 // console.log(JSON.stringify(conditionsGroup));
22 conditions.op = conditionsGroup.boolean;
23 conditionsGroup.rules.forEach(function(rule) {
25 // console.log('normal rule');
26 conditions.results.push(checkCondition(rule, doc.dataValues));
27 } else if (rule.group) {
28 // console.log('subgroup');
30 rule.group.rules.forEach(function(subrule) {
31 // console.log('subgroup rule');
32 subResults.push(checkCondition(subrule, doc.dataValues));
34 conditions.subGroups.push({
35 op: rule.group.boolean,
40 console.log(JSON.stringify(conditions));
44 conditions.subGroups.forEach(function(subElement) {
45 subResults.push(_.reduce(subElement.results.length ? subElement.results : [true], function(total, n) {
46 if (subElement.op === 'AND') {
53 lastResults = conditions.results.concat(subResults);
54 var finalResult = _.reduce(lastResults.length ? lastResults : [true], function(total, n) {
55 if (conditions.op === 'AND') {
61 console.log('final result is', finalResult);
64 //push rules into array to return
65 var actionsGroup = JSON.parse(trigger.actions).group;
66 actions = actions.concat(actionsGroup.rules);
70 doc.dataValues.from = doc.dataValues.from.join(';');
71 doc.dataValues.cc = doc.dataValues.cc.join(';');
72 doc.dataValues.to = doc.dataValues.to.join(';');
73 //return actions array
77 function checkCondition(rule, doc) {
78 // console.log('trigger value ', trigger[rule.field.value]);
79 // console.log('rule data ', rule.data);
81 switch (rule.operator) {
83 // console.log('is equal?');
84 result = _.includes(doc[rule.field.value], rule.data);
85 // console.log(result);
88 // console.log('is not equal?');
89 result = !_.includes(doc[rule.field.value], rule.data);
90 // console.log(result);
97 module.exports = Util;