e1c2816d1c5ce7a9c3f33b42b1a4ba3762f2e66a
[motion2.git] / server / api / automation / automation.controller.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0xd77b=['addConditions','Condition','omit','ids','getConditions','findOne','Action','getActions','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','to-csv','ejs','lodash','squel','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','set','apply','save','update','destroy','then','error','stack','name','index','rawAttributes','fieldName','key','map','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','type','VIRTUAL','filter','merge','options','Automation','count','includeAll','include','findAll','catch','show','find','create','body','params'];(function(_0x354332,_0x1867a6){var _0x44c806=function(_0x395828){while(--_0x395828){_0x354332['push'](_0x354332['shift']());}};_0x44c806(++_0x1867a6);}(_0xd77b,0xa8));var _0xbd77=function(_0x36884e,_0x48008f){_0x36884e=_0x36884e-0x0;var _0x1cc367=_0xd77b[_0x36884e];return _0x1cc367;};'use strict';var emlformat=require(_0xbd77('0x0'));var rimraf=require(_0xbd77('0x1'));var zipdir=require(_0xbd77('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbd77('0x3'));var moment=require('moment');var BPromise=require(_0xbd77('0x4'));var Mustache=require(_0xbd77('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xbd77('0x6'));var ejs=require(_0xbd77('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbd77('0x8'));var squel=require(_0xbd77('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xbd77('0xa'));var toCsv=require(_0xbd77('0x6'));var querystring=require(_0xbd77('0xb'));var Papa=require(_0xbd77('0xc'));var Redis=require('ioredis');var authService=require(_0xbd77('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0xbd77('0xe'));var hardwareService=require(_0xbd77('0xf'));var logger=require(_0xbd77('0x10'))(_0xbd77('0x11'));var utils=require(_0xbd77('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xbd77('0x13'));var db=require(_0xbd77('0x14'))['db'];function respondWithStatusCode(_0xf66343,_0x1b0d6f){_0x1b0d6f=_0x1b0d6f||0xcc;return function(_0x5b21af){if(_0x5b21af){return _0xf66343[_0xbd77('0x15')](_0x1b0d6f);}return _0xf66343[_0xbd77('0x16')](_0x1b0d6f)[_0xbd77('0x17')]();};}function respondWithResult(_0x5e11b1,_0x117500){_0x117500=_0x117500||0xc8;return function(_0x11ab90){if(_0x11ab90){return _0x5e11b1['status'](_0x117500)[_0xbd77('0x18')](_0x11ab90);}};}function respondWithFilteredResult(_0x533e89,_0x51d786){return function(_0x49617d){if(_0x49617d){var _0x5cb4c0=typeof _0x51d786['offset']===_0xbd77('0x19')&&typeof _0x51d786[_0xbd77('0x1a')]===_0xbd77('0x19');var _0x10334f=_0x49617d['count'];var _0x2f6047=_0x5cb4c0?0x0:_0x51d786[_0xbd77('0x1b')];var _0x520022=_0x5cb4c0?_0x49617d['count']:_0x51d786[_0xbd77('0x1b')]+_0x51d786['limit'];var _0x1f828a;if(_0x520022>=_0x10334f){_0x520022=_0x10334f;_0x1f828a=0xc8;}else{_0x1f828a=0xce;}_0x533e89[_0xbd77('0x16')](_0x1f828a);return _0x533e89[_0xbd77('0x1c')]('Content-Range',_0x2f6047+'-'+_0x520022+'/'+_0x10334f)[_0xbd77('0x18')](_0x49617d);}return null;};}function patchUpdates(_0x4b8cac){return function(_0x335436){try{jsonpatch[_0xbd77('0x1d')](_0x335436,_0x4b8cac,!![]);}catch(_0x5b2729){return BPromise['reject'](_0x5b2729);}return _0x335436[_0xbd77('0x1e')]();};}function saveUpdates(_0x552edc,_0x24b88e){return function(_0x19d3a8){if(_0x19d3a8){return _0x19d3a8[_0xbd77('0x1f')](_0x552edc)['then'](function(_0xefc29f){return _0xefc29f;});}return null;};}function removeEntity(_0x57f564,_0x5812c9){return function(_0x64b797){if(_0x64b797){return _0x64b797[_0xbd77('0x20')]()[_0xbd77('0x21')](function(){_0x57f564[_0xbd77('0x16')](0xcc)[_0xbd77('0x17')]();});}};}function handleEntityNotFound(_0x295839,_0x3ab330){return function(_0x4203ec){if(!_0x4203ec){_0x295839['sendStatus'](0x194);}return _0x4203ec;};}function handleError(_0x245236,_0x627731){_0x627731=_0x627731||0x1f4;return function(_0x45c8e5){logger[_0xbd77('0x22')](_0x45c8e5[_0xbd77('0x23')]);if(_0x45c8e5[_0xbd77('0x24')]){delete _0x45c8e5['name'];}_0x245236[_0xbd77('0x16')](_0x627731)['send'](_0x45c8e5);};}exports[_0xbd77('0x25')]=function(_0x41ac4a,_0x3e1e7e){var _0x2c0dc0={},_0x198e67={},_0x4b22ee={'count':0x0,'rows':[]};var _0x5d4883=_['map'](db['Automation'][_0xbd77('0x26')],function(_0x4bd0d1){return{'name':_0x4bd0d1[_0xbd77('0x27')],'type':_0x4bd0d1['type'][_0xbd77('0x28')]};});_0x198e67['model']=_[_0xbd77('0x29')](_0x5d4883,'name');_0x198e67[_0xbd77('0x2a')]=_[_0xbd77('0x2b')](_0x41ac4a['query']);_0x198e67[_0xbd77('0x2c')]=_[_0xbd77('0x2d')](_0x198e67['model'],_0x198e67['query']);_0x2c0dc0[_0xbd77('0x2e')]=_[_0xbd77('0x2d')](_0x198e67[_0xbd77('0x2f')],qs[_0xbd77('0x30')](_0x41ac4a[_0xbd77('0x2a')][_0xbd77('0x30')]));_0x2c0dc0[_0xbd77('0x2e')]=_0x2c0dc0['attributes'][_0xbd77('0x31')]?_0x2c0dc0[_0xbd77('0x2e')]:_0x198e67[_0xbd77('0x2f')];if(!_0x41ac4a[_0xbd77('0x2a')][_0xbd77('0x32')](_0xbd77('0x33'))){_0x2c0dc0[_0xbd77('0x1a')]=qs[_0xbd77('0x1a')](_0x41ac4a[_0xbd77('0x2a')]['limit']);_0x2c0dc0[_0xbd77('0x1b')]=qs[_0xbd77('0x1b')](_0x41ac4a[_0xbd77('0x2a')][_0xbd77('0x1b')]);}_0x2c0dc0[_0xbd77('0x34')]=qs[_0xbd77('0x35')](_0x41ac4a['query'][_0xbd77('0x35')]);_0x2c0dc0['where']=qs[_0xbd77('0x2c')](_[_0xbd77('0x36')](_0x41ac4a['query'],_0x198e67[_0xbd77('0x2c')]),_0x5d4883);if(_0x41ac4a['query']['filter']){_0x2c0dc0['where']=_['merge'](_0x2c0dc0[_0xbd77('0x37')],{'$or':_[_0xbd77('0x29')](_0x5d4883,function(_0x3ad751){if(_0x3ad751[_0xbd77('0x38')]!==_0xbd77('0x39')){var _0x43844e={};_0x43844e[_0x3ad751['name']]={'$like':'%'+_0x41ac4a[_0xbd77('0x2a')][_0xbd77('0x3a')]+'%'};return _0x43844e;}})});}_0x2c0dc0=_[_0xbd77('0x3b')]({},_0x2c0dc0,_0x41ac4a[_0xbd77('0x3c')]);var _0xc203f={'where':_0x2c0dc0[_0xbd77('0x37')]};return db[_0xbd77('0x3d')][_0xbd77('0x3e')](_0xc203f)['then'](function(_0x2f9ef4){_0x4b22ee[_0xbd77('0x3e')]=_0x2f9ef4;if(_0x41ac4a['query'][_0xbd77('0x3f')]){_0x2c0dc0[_0xbd77('0x40')]=[{'all':!![]}];}return db[_0xbd77('0x3d')][_0xbd77('0x41')](_0x2c0dc0);})[_0xbd77('0x21')](function(_0x4f2e39){_0x4b22ee['rows']=_0x4f2e39;return _0x4b22ee;})[_0xbd77('0x21')](respondWithFilteredResult(_0x3e1e7e,_0x2c0dc0))[_0xbd77('0x42')](handleError(_0x3e1e7e,null));};exports[_0xbd77('0x43')]=function(_0x1a5ae0,_0xb24fa4){var _0x2f4ece={'raw':![],'where':{'id':_0x1a5ae0['params']['id']}},_0x135c49={};_0x135c49[_0xbd77('0x2f')]=_[_0xbd77('0x2b')](db[_0xbd77('0x3d')][_0xbd77('0x26')]);_0x135c49[_0xbd77('0x2a')]=_['keys'](_0x1a5ae0['query']);_0x135c49[_0xbd77('0x2c')]=_[_0xbd77('0x2d')](_0x135c49[_0xbd77('0x2f')],_0x135c49[_0xbd77('0x2a')]);_0x2f4ece[_0xbd77('0x2e')]=_[_0xbd77('0x2d')](_0x135c49[_0xbd77('0x2f')],qs[_0xbd77('0x30')](_0x1a5ae0[_0xbd77('0x2a')][_0xbd77('0x30')]));_0x2f4ece[_0xbd77('0x2e')]=_0x2f4ece[_0xbd77('0x2e')][_0xbd77('0x31')]?_0x2f4ece[_0xbd77('0x2e')]:_0x135c49[_0xbd77('0x2f')];if(_0x1a5ae0['query']['includeAll']){_0x2f4ece[_0xbd77('0x40')]=[{'all':!![]}];}_0x2f4ece=_['merge']({},_0x2f4ece,_0x1a5ae0['options']);return db[_0xbd77('0x3d')][_0xbd77('0x44')](_0x2f4ece)[_0xbd77('0x21')](handleEntityNotFound(_0xb24fa4,null))[_0xbd77('0x21')](respondWithResult(_0xb24fa4,null))['catch'](handleError(_0xb24fa4,null));};exports[_0xbd77('0x45')]=function(_0x577822,_0x55dd68){return db[_0xbd77('0x3d')]['create'](_0x577822[_0xbd77('0x46')],{})[_0xbd77('0x21')](respondWithResult(_0x55dd68,0xc9))[_0xbd77('0x42')](handleError(_0x55dd68,null));};exports[_0xbd77('0x1f')]=function(_0x27f4ba,_0x5f1465){if(_0x27f4ba[_0xbd77('0x46')]['id']){delete _0x27f4ba['body']['id'];}return db['Automation']['find']({'where':{'id':_0x27f4ba[_0xbd77('0x47')]['id']}})[_0xbd77('0x21')](handleEntityNotFound(_0x5f1465,null))['then'](saveUpdates(_0x27f4ba['body'],null))[_0xbd77('0x21')](respondWithResult(_0x5f1465,null))[_0xbd77('0x42')](handleError(_0x5f1465,null));};exports['destroy']=function(_0x1d5d58,_0x3afd4d){return db[_0xbd77('0x3d')][_0xbd77('0x44')]({'where':{'id':_0x1d5d58[_0xbd77('0x47')]['id']}})['then'](handleEntityNotFound(_0x3afd4d,null))['then'](removeEntity(_0x3afd4d,null))[_0xbd77('0x42')](handleError(_0x3afd4d,null));};exports[_0xbd77('0x48')]=function(_0x1db1d2,_0x49ceef,_0x4338c1){return db[_0xbd77('0x49')][_0xbd77('0x44')]({'where':{'id':_0x1db1d2[_0xbd77('0x47')]['id']}})[_0xbd77('0x21')](handleEntityNotFound(_0x49ceef,null))['then'](function(_0x18d710){if(_0x18d710){return _0x18d710[_0xbd77('0x48')](_0x1db1d2[_0xbd77('0x46')]['ids'],_[_0xbd77('0x4a')](_0x1db1d2[_0xbd77('0x46')],[_0xbd77('0x4b'),'id'])||{});}})[_0xbd77('0x21')](respondWithResult(_0x49ceef,null))[_0xbd77('0x42')](handleError(_0x49ceef,null));};exports[_0xbd77('0x4c')]=function(_0x37c9b3,_0x3ff872,_0x4f40a1){var _0x4a8d37={};var _0xf11337={};var _0x57c50a;var _0x41cdc8;return db[_0xbd77('0x3d')][_0xbd77('0x4d')]({'where':{'id':_0x37c9b3[_0xbd77('0x47')]['id']}})[_0xbd77('0x21')](handleEntityNotFound(_0x3ff872,null))[_0xbd77('0x21')](function(_0x148014){if(_0x148014){_0x57c50a=_0x148014;_0xf11337['model']=_[_0xbd77('0x2b')](db[_0xbd77('0x49')][_0xbd77('0x26')]);_0xf11337[_0xbd77('0x2a')]=_[_0xbd77('0x2b')](_0x37c9b3[_0xbd77('0x2a')]);_0xf11337[_0xbd77('0x2c')]=_[_0xbd77('0x2d')](_0xf11337['model'],_0xf11337['query']);_0x4a8d37[_0xbd77('0x2e')]=_['intersection'](_0xf11337[_0xbd77('0x2f')],qs[_0xbd77('0x30')](_0x37c9b3[_0xbd77('0x2a')][_0xbd77('0x30')]));_0x4a8d37['attributes']=_0x4a8d37[_0xbd77('0x2e')][_0xbd77('0x31')]?_0x4a8d37[_0xbd77('0x2e')]:_0xf11337[_0xbd77('0x2f')];_0x4a8d37['order']=qs[_0xbd77('0x35')](_0x37c9b3[_0xbd77('0x2a')][_0xbd77('0x35')]);_0x4a8d37[_0xbd77('0x37')]=qs[_0xbd77('0x2c')](_[_0xbd77('0x36')](_0x37c9b3['query'],_0xf11337[_0xbd77('0x2c')]));if(_0x37c9b3['query']['filter']){_0x4a8d37[_0xbd77('0x37')]=_[_0xbd77('0x3b')](_0x4a8d37[_0xbd77('0x37')],{'$or':_[_0xbd77('0x29')](_0x4a8d37['attributes'],function(_0x1e2dd4){var _0x20c07c={};_0x20c07c[_0x1e2dd4]={'$like':'%'+_0x37c9b3[_0xbd77('0x2a')][_0xbd77('0x3a')]+'%'};return _0x20c07c;})});}_0x4a8d37=_['merge']({},_0x4a8d37,_0x37c9b3[_0xbd77('0x3c')]);return _0x57c50a['getConditions'](_0x4a8d37);}})[_0xbd77('0x21')](function(_0x5d3aa6){if(_0x5d3aa6){_0x41cdc8=_0x5d3aa6[_0xbd77('0x31')];if(!_0x37c9b3[_0xbd77('0x2a')][_0xbd77('0x32')](_0xbd77('0x33'))){_0x4a8d37[_0xbd77('0x1a')]=qs[_0xbd77('0x1a')](_0x37c9b3[_0xbd77('0x2a')][_0xbd77('0x1a')]);_0x4a8d37[_0xbd77('0x1b')]=qs['offset'](_0x37c9b3[_0xbd77('0x2a')]['offset']);}return _0x57c50a[_0xbd77('0x4c')](_0x4a8d37);}})[_0xbd77('0x21')](function(_0x426cff){if(_0x426cff){return _0x426cff?{'count':_0x41cdc8,'rows':_0x426cff}:null;}})[_0xbd77('0x21')](respondWithResult(_0x3ff872,null))[_0xbd77('0x42')](handleError(_0x3ff872,null));};exports['addActions']=function(_0x1a7e01,_0x7215b0,_0x2e1ba7){return db[_0xbd77('0x4e')]['find']({'where':{'id':_0x1a7e01[_0xbd77('0x47')]['id']}})[_0xbd77('0x21')](handleEntityNotFound(_0x7215b0,null))[_0xbd77('0x21')](function(_0x5acaac){if(_0x5acaac){return _0x5acaac['addActions'](_0x1a7e01['body'][_0xbd77('0x4b')],_[_0xbd77('0x4a')](_0x1a7e01[_0xbd77('0x46')],[_0xbd77('0x4b'),'id'])||{});}})[_0xbd77('0x21')](respondWithResult(_0x7215b0,null))['catch'](handleError(_0x7215b0,null));};exports[_0xbd77('0x4f')]=function(_0x269423,_0x43139d,_0x28f57a){var _0x476847={};var _0x546278={};var _0x3a2727;var _0x4896b3;return db[_0xbd77('0x3d')][_0xbd77('0x4d')]({'where':{'id':_0x269423[_0xbd77('0x47')]['id']}})['then'](handleEntityNotFound(_0x43139d,null))['then'](function(_0xa6fc8e){if(_0xa6fc8e){_0x3a2727=_0xa6fc8e;_0x546278[_0xbd77('0x2f')]=_[_0xbd77('0x2b')](db[_0xbd77('0x4e')]['rawAttributes']);_0x546278[_0xbd77('0x2a')]=_[_0xbd77('0x2b')](_0x269423[_0xbd77('0x2a')]);_0x546278[_0xbd77('0x2c')]=_[_0xbd77('0x2d')](_0x546278[_0xbd77('0x2f')],_0x546278['query']);_0x476847['attributes']=_[_0xbd77('0x2d')](_0x546278['model'],qs[_0xbd77('0x30')](_0x269423['query'][_0xbd77('0x30')]));_0x476847[_0xbd77('0x2e')]=_0x476847[_0xbd77('0x2e')]['length']?_0x476847[_0xbd77('0x2e')]:_0x546278['model'];_0x476847[_0xbd77('0x34')]=qs[_0xbd77('0x35')](_0x269423[_0xbd77('0x2a')][_0xbd77('0x35')]);_0x476847['where']=qs[_0xbd77('0x2c')](_[_0xbd77('0x36')](_0x269423['query'],_0x546278[_0xbd77('0x2c')]));if(_0x269423[_0xbd77('0x2a')][_0xbd77('0x3a')]){_0x476847[_0xbd77('0x37')]=_[_0xbd77('0x3b')](_0x476847[_0xbd77('0x37')],{'$or':_[_0xbd77('0x29')](_0x476847[_0xbd77('0x2e')],function(_0x2f0813){var _0x52a5dc={};_0x52a5dc[_0x2f0813]={'$like':'%'+_0x269423[_0xbd77('0x2a')]['filter']+'%'};return _0x52a5dc;})});}_0x476847=_[_0xbd77('0x3b')]({},_0x476847,_0x269423[_0xbd77('0x3c')]);return _0x3a2727[_0xbd77('0x4f')](_0x476847);}})[_0xbd77('0x21')](function(_0x2962e7){if(_0x2962e7){_0x4896b3=_0x2962e7['length'];if(!_0x269423[_0xbd77('0x2a')]['hasOwnProperty'](_0xbd77('0x33'))){_0x476847[_0xbd77('0x1a')]=qs[_0xbd77('0x1a')](_0x269423[_0xbd77('0x2a')]['limit']);_0x476847['offset']=qs[_0xbd77('0x1b')](_0x269423[_0xbd77('0x2a')][_0xbd77('0x1b')]);}return _0x3a2727[_0xbd77('0x4f')](_0x476847);}})[_0xbd77('0x21')](function(_0x4cd5c4){if(_0x4cd5c4){return _0x4cd5c4?{'count':_0x4896b3,'rows':_0x4cd5c4}:null;}})[_0xbd77('0x21')](respondWithResult(_0x43139d,null))['catch'](handleError(_0x43139d,null));};