-'use strict';
-
-var _ = require('lodash');
-var http = require('http');
-var querystring = require('querystring');
-var config = require('../environment');
-
-var sequelize = require('../../models').sequelize;
-var MailMessage = require('../../models').MailMessage;
-var Trigger = require('../../models').Trigger;
-var MailTemplate = require('../../models').MailTemplate;
-var smtp = require('../smtp')();
-
-module.exports = function() {
-
- MailMessage.afterCreate(function(doc, options) {
- if (doc.status === 'RECEIVED') {
- Trigger
- .findAll({
- where: {
- status: true,
- channel: 'mail'
- }
- })
- .then(function(mailTriggers) {
-
- mailTriggers.forEach(function(mailTrigger) {
- var conditions = {
- op: null,
- results: [],
- subGroups: []
- };
- // console.log(doc.dataValues);
- doc.dataValues.from = doc.dataValues.from ? doc.dataValues.from.split(';') : [];
- doc.dataValues.cc = doc.dataValues.cc ? doc.dataValues.cc.split(';') : [];
- doc.dataValues.to = doc.dataValues.to ? doc.dataValues.to.split(';') : [];
-
- var conditionsGroup = JSON.parse(mailTrigger.conditions).group;
- var actionsGroup = JSON.parse(mailTrigger.actions).group;
- // console.log(JSON.stringify(conditionsGroup));
- conditions.op = conditionsGroup.boolean;
- conditionsGroup.rules.forEach(function(rule) {
- if (rule.operator) {
- // console.log('normal rule');
- conditions.results.push(checkCondition(rule, doc.dataValues));
- } else if (rule.group) {
- // console.log('subgroup');
- var subResults = [];
- rule.group.rules.forEach(function(subrule) {
- // console.log('subgroup rule');
- subResults.push(checkCondition(subrule, doc.dataValues));
- });
- conditions.subGroups.push({
- op: rule.group.boolean,
- results: subResults
- })
- }
- });
- console.log(JSON.stringify(conditions));
-
- var subResults = [],
- lastResults = [];
- conditions.subGroups.forEach(function(subElement) {
- subResults.push(_.reduce(subElement.results.length ? subElement.results : [true], function(total, n) {
- if (subElement.op === 'AND') {
- return total && n;
- } else {
- return total || n;
- }
- }));
- });
- lastResults = conditions.results.concat(subResults);
- var finalResult = _.reduce(lastResults.length ? lastResults : [true], function(total, n) {
- if (conditions.op === 'AND') {
- return total && n;
- } else {
- return total || n;
- }
- })
- // console.log('final result is', finalResult);
-
- if (finalResult) {
- actionsGroup.rules.forEach(function(rule) {
- switch (rule.field.value) {
- case 'template':
- sendTemplate(rule.data);
- break;
- default:
- }
- });
- }
- });
- })
- .catch(function(err) {
- console.error(err);
- });
- }
- });
-};
-
-function checkCondition(rule, trigger) {
- // console.log('trigger value ', trigger[rule.field.value]);
- // console.log('rule data ', rule.data);
- var result;
- switch (rule.operator) {
- case '=':
- // console.log('is equal?');
- result = _.includes(trigger[rule.field.value], rule.data);
- // console.log(result);
- break;
- case '<>':
- // console.log('is not equal?');
- result = !_.includes(trigger[rule.field.value], rule.data);
- // console.log(result);
- break;
- default:
- }
- return result;
-}
-
-function sendTemplate(templateId) {
- // console.log(templateId);
- MailTemplate
- .findById(templateId, {
- include: [{
- all: true
- }]
- })
- .then(function(mailTemplate) {
- // console.log('found template');
- return sequelize
- .transaction()
- .then(function(t) {
- smtp.send({
- status: 'SENDING',
- subject: mailTemplate.subject,
- from: mailTemplate.from,
- to: mailTemplate.to,
- cc: mailTemplate.cc || '',
- html: mailTemplate.html || null,
- text: mailTemplate.text || null
- }, null, t, function(err, res) {
- if (err) {
- console.error('rollback', err);
- t.rollback();
- } else {
- // console.log('res', res);
- t.commit();
- }
- });
- });
- })
- .catch(function(err) {
- console.log(err);
- });
-}
+var _0x2023=["\x6C\x6F\x64\x61\x73\x68","\x54\x72\x69\x67\x67\x65\x72\x20\x4D\x61\x69\x6C\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x73\x65\x6E\x64\x54\x65\x6D\x70\x6C\x61\x74\x65","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x54\x65\x6D\x70\x6C\x61\x74\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74","\x63\x61\x74\x63\x68","\x53\x45\x4E\x44\x49\x4E\x47","\x73\x75\x62\x6A\x65\x63\x74","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x3B","\x73\x70\x6C\x69\x74","\x64\x61\x74\x61\x33","\x64\x61\x74\x61\x34","\x68\x74\x6D\x6C","\x74\x65\x78\x74","\x63\x72\x65\x61\x74\x65","\x74\x68\x65\x6E","\x64\x61\x74\x61\x31","\x66\x69\x6E\x64\x42\x79\x49\x64","\x66\x69\x6E\x64\x4F\x6E\x65","\x65\x78\x70\x6F\x72\x74\x73"];var _=require(_0x2023[0]);function Mail(){console[_0x2023[2]](_0x2023[1])}Mail[_0x2023[4]][_0x2023[3]]=function(_0xa27bx3){sendTemplate(_0xa27bx3)};function sendTemplate(_0xa27bx5){var _0xa27bx6=require(_0x2023[6])[_0x2023[5]];var _0xa27bx7=require(_0x2023[6])[_0x2023[7]];var _0xa27bx8=require(_0x2023[6])[_0x2023[8]];var _0xa27bx9;return _0xa27bx8[_0x2023[23]]({where:{service:true}})[_0x2023[20]](function(_0xa27bxc){_0xa27bx9=_0xa27bxc;return _0xa27bx6[_0x2023[22]](Number(_0xa27bx5[_0x2023[21]]),{include:[{all:true}]})})[_0x2023[20]](function(_0xa27bxa){return _0xa27bx7[_0x2023[19]]({status:_0x2023[10],subject:_0xa27bxa[_0x2023[11]],from:[_0xa27bx9[_0x2023[12]]],to:_0xa27bx5[_0x2023[15]][_0x2023[14]](_0x2023[13]),cc:_0xa27bx5[_0x2023[16]]?_0xa27bx5[_0x2023[16]][_0x2023[14]](_0x2023[13]):[],html:_0xa27bxa[_0x2023[17]]||null,text:_0xa27bxa[_0x2023[18]]||null})[_0x2023[9]](function(_0xa27bxb){console[_0x2023[2]](_0xa27bxb)})})}module[_0x2023[24]]=Mail
\ No newline at end of file