1ce0e68ae57b3b724826fd3ef853146bac7b7867
[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 _0x948d=['end','count','limit','set','Content-Range','reject','save','update','then','destroy','sendStatus','error','name','send','index','rawAttributes','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','merge','type','VIRTUAL','field','Automation','includeAll','include','findAll','catch','show','params','options','find','create','body','addConditions','Condition','ids','findOne','map','getConditions','addActions','omit','getActions','Action','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','status'];(function(_0x353c53,_0x2102c0){var _0x2c55da=function(_0x3fe2d5){while(--_0x3fe2d5){_0x353c53['push'](_0x353c53['shift']());}};_0x2c55da(++_0x2102c0);}(_0x948d,0x1c9));var _0xd948=function(_0x30defc,_0x25806d){_0x30defc=_0x30defc-0x0;var _0x2cd27a=_0x948d[_0x30defc];return _0x2cd27a;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0xd948('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd948('0x1'));var jsonpatch=require(_0xd948('0x2'));var rp=require(_0xd948('0x3'));var moment=require('moment');var BPromise=require(_0xd948('0x4'));var Mustache=require('mustache');var util=require(_0xd948('0x5'));var path=require(_0xd948('0x6'));var sox=require(_0xd948('0x7'));var csv=require(_0xd948('0x8'));var ejs=require(_0xd948('0x9'));var fs=require('fs');var _=require(_0xd948('0xa'));var squel=require(_0xd948('0xb'));var crypto=require(_0xd948('0xc'));var jsforce=require(_0xd948('0xd'));var deskjs=require(_0xd948('0xe'));var toCsv=require(_0xd948('0x8'));var querystring=require(_0xd948('0xf'));var Papa=require(_0xd948('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var hardwareService=require(_0xd948('0x11'));var logger=require(_0xd948('0x12'))(_0xd948('0x13'));var utils=require(_0xd948('0x14'));var config=require(_0xd948('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xa2fbca,_0x431ae3){_0x431ae3=_0x431ae3||0xcc;return function(_0x5ed7af){if(_0x5ed7af){return _0xa2fbca['sendStatus'](_0x431ae3);}return _0xa2fbca[_0xd948('0x16')](_0x431ae3)[_0xd948('0x17')]();};}function respondWithResult(_0x10046b,_0x329eff){_0x329eff=_0x329eff||0xc8;return function(_0x51499c){if(_0x51499c){return _0x10046b[_0xd948('0x16')](_0x329eff)['json'](_0x51499c);}};}function respondWithFilteredResult(_0x8727a0,_0x3341dc){return function(_0x3f5e27){if(_0x3f5e27){var _0x54adc5=_0x3f5e27[_0xd948('0x18')],_0x262286=_0x3341dc['offset'],_0x58e58a=_0x3341dc['offset']+_0x3341dc[_0xd948('0x19')],_0x212cc0;if(_0x58e58a>=_0x54adc5){_0x58e58a=_0x54adc5;_0x212cc0=0xc8;}else{_0x212cc0=0xce;}_0x8727a0[_0xd948('0x16')](_0x212cc0);return _0x8727a0[_0xd948('0x1a')](_0xd948('0x1b'),_0x262286+'-'+_0x58e58a+'/'+_0x54adc5)['json'](_0x3f5e27);}return null;};}function patchUpdates(_0x1e9d8d){return function(_0x25eb55){try{jsonpatch['apply'](_0x25eb55,_0x1e9d8d,!![]);}catch(_0x2545e8){return BPromise[_0xd948('0x1c')](_0x2545e8);}return _0x25eb55[_0xd948('0x1d')]();};}function saveUpdates(_0x19b1a4,_0x541ba9){return function(_0x54a380){if(_0x54a380){return _0x54a380[_0xd948('0x1e')](_0x19b1a4)[_0xd948('0x1f')](function(_0x5e38bd){return _0x5e38bd;});}return null;};}function removeEntity(_0x1d436a,_0x3ec2e1){return function(_0x55a9ae){if(_0x55a9ae){return _0x55a9ae[_0xd948('0x20')]()['then'](function(){_0x1d436a[_0xd948('0x16')](0xcc)[_0xd948('0x17')]();});}};}function handleEntityNotFound(_0x58362e,_0x2e474f){return function(_0x1568c8){if(!_0x1568c8){_0x58362e[_0xd948('0x21')](0x194);}return _0x1568c8;};}function handleError(_0x5adbd3,_0x1709d2){_0x1709d2=_0x1709d2||0x1f4;return function(_0x256afb){logger[_0xd948('0x22')](_0x256afb['stack']);if(_0x256afb[_0xd948('0x23')]){delete _0x256afb[_0xd948('0x23')];}_0x5adbd3['status'](_0x1709d2)[_0xd948('0x24')](_0x256afb);};}exports[_0xd948('0x25')]=function(_0x4e7f9b,_0x3a0134){var _0x3ff2cc={},_0x19ee76={},_0x5c29fe={'count':0x0,'rows':[]};var _0x5dab5d=db['Automation'][_0xd948('0x26')];_0x19ee76[_0xd948('0x27')]=_['keys'](_0x5dab5d);_0x19ee76[_0xd948('0x28')]=_[_0xd948('0x29')](_0x4e7f9b[_0xd948('0x28')]);_0x19ee76[_0xd948('0x2a')]=_[_0xd948('0x2b')](_0x19ee76[_0xd948('0x27')],_0x19ee76[_0xd948('0x28')]);_0x3ff2cc[_0xd948('0x2c')]=_[_0xd948('0x2b')](_0x19ee76[_0xd948('0x27')],qs[_0xd948('0x2d')](_0x4e7f9b['query'][_0xd948('0x2d')]));_0x3ff2cc['attributes']=_0x3ff2cc['attributes'][_0xd948('0x2e')]?_0x3ff2cc['attributes']:_0x19ee76[_0xd948('0x27')];if(!_0x4e7f9b[_0xd948('0x28')][_0xd948('0x2f')](_0xd948('0x30'))){_0x3ff2cc[_0xd948('0x19')]=qs[_0xd948('0x19')](_0x4e7f9b[_0xd948('0x28')]['limit']);_0x3ff2cc['offset']=qs['offset'](_0x4e7f9b['query'][_0xd948('0x31')]);}_0x3ff2cc[_0xd948('0x32')]=qs[_0xd948('0x33')](_0x4e7f9b[_0xd948('0x28')][_0xd948('0x33')]);_0x3ff2cc[_0xd948('0x34')]=qs[_0xd948('0x2a')](_[_0xd948('0x35')](_0x4e7f9b[_0xd948('0x28')],_0x19ee76['filters']));if(_0x4e7f9b[_0xd948('0x28')][_0xd948('0x36')]){_0x3ff2cc[_0xd948('0x34')]=_[_0xd948('0x37')](_0x3ff2cc[_0xd948('0x34')],{'$or':_['map'](_0x5dab5d,function(_0x4ad9d9){if(_0x4ad9d9[_0xd948('0x38')]['key']!==_0xd948('0x39')){var _0x116afd={};_0x116afd[_0x4ad9d9[_0xd948('0x3a')]]={'$like':'%'+_0x4e7f9b[_0xd948('0x28')][_0xd948('0x36')]+'%'};return _0x116afd;}})});}_0x3ff2cc=_['merge']({},_0x3ff2cc,_0x4e7f9b['options']);var _0x384bf2={'where':_0x3ff2cc['where']};return db[_0xd948('0x3b')][_0xd948('0x18')](_0x384bf2)[_0xd948('0x1f')](function(_0x1be178){_0x5c29fe[_0xd948('0x18')]=_0x1be178;if(_0x4e7f9b[_0xd948('0x28')][_0xd948('0x3c')]){_0x3ff2cc[_0xd948('0x3d')]=[{'all':!![]}];}return db[_0xd948('0x3b')][_0xd948('0x3e')](_0x3ff2cc);})[_0xd948('0x1f')](function(_0x4f0b9b){_0x5c29fe['rows']=_0x4f0b9b;return _0x5c29fe;})[_0xd948('0x1f')](respondWithFilteredResult(_0x3a0134,_0x3ff2cc))[_0xd948('0x3f')](handleError(_0x3a0134,null));};exports[_0xd948('0x40')]=function(_0x1b2c7f,_0xc0ef0c){var _0x113090={'raw':![],'where':{'id':_0x1b2c7f[_0xd948('0x41')]['id']}},_0x59c6a5={};_0x59c6a5['model']=_['keys'](db[_0xd948('0x3b')][_0xd948('0x26')]);_0x59c6a5[_0xd948('0x28')]=_[_0xd948('0x29')](_0x1b2c7f[_0xd948('0x28')]);_0x59c6a5[_0xd948('0x2a')]=_[_0xd948('0x2b')](_0x59c6a5[_0xd948('0x27')],_0x59c6a5[_0xd948('0x28')]);_0x113090['attributes']=_[_0xd948('0x2b')](_0x59c6a5[_0xd948('0x27')],qs['fields'](_0x1b2c7f['query'][_0xd948('0x2d')]));_0x113090[_0xd948('0x2c')]=_0x113090[_0xd948('0x2c')][_0xd948('0x2e')]?_0x113090['attributes']:_0x59c6a5[_0xd948('0x27')];if(_0x1b2c7f[_0xd948('0x28')][_0xd948('0x3c')]){_0x113090[_0xd948('0x3d')]=[{'all':!![]}];}_0x113090=_[_0xd948('0x37')]({},_0x113090,_0x1b2c7f[_0xd948('0x42')]);return db[_0xd948('0x3b')][_0xd948('0x43')](_0x113090)[_0xd948('0x1f')](handleEntityNotFound(_0xc0ef0c,null))['then'](respondWithResult(_0xc0ef0c,null))[_0xd948('0x3f')](handleError(_0xc0ef0c,null));};exports[_0xd948('0x44')]=function(_0x1ca9c5,_0x112b07){return db['Automation'][_0xd948('0x44')](_0x1ca9c5['body'],{})[_0xd948('0x1f')](respondWithResult(_0x112b07,0xc9))[_0xd948('0x3f')](handleError(_0x112b07,null));};exports['update']=function(_0x5c9c88,_0x20e477){if(_0x5c9c88[_0xd948('0x45')]['id']){delete _0x5c9c88[_0xd948('0x45')]['id'];}return db[_0xd948('0x3b')]['find']({'where':{'id':_0x5c9c88[_0xd948('0x41')]['id']}})[_0xd948('0x1f')](handleEntityNotFound(_0x20e477,null))[_0xd948('0x1f')](saveUpdates(_0x5c9c88[_0xd948('0x45')],null))[_0xd948('0x1f')](respondWithResult(_0x20e477,null))[_0xd948('0x3f')](handleError(_0x20e477,null));};exports[_0xd948('0x20')]=function(_0x27d9fa,_0x346309){return db[_0xd948('0x3b')][_0xd948('0x43')]({'where':{'id':_0x27d9fa[_0xd948('0x41')]['id']}})[_0xd948('0x1f')](handleEntityNotFound(_0x346309,null))['then'](removeEntity(_0x346309,null))['catch'](handleError(_0x346309,null));};exports[_0xd948('0x46')]=function(_0x47a5fe,_0x3070c3,_0x2f3136){return db[_0xd948('0x47')][_0xd948('0x43')]({'where':{'id':_0x47a5fe['params']['id']}})[_0xd948('0x1f')](handleEntityNotFound(_0x3070c3,null))[_0xd948('0x1f')](function(_0x6b69f){if(_0x6b69f){return _0x6b69f[_0xd948('0x46')](_0x47a5fe[_0xd948('0x45')][_0xd948('0x48')],_['omit'](_0x47a5fe[_0xd948('0x45')],[_0xd948('0x48'),'id'])||{});}})['then'](respondWithResult(_0x3070c3,null))[_0xd948('0x3f')](handleError(_0x3070c3,null));};exports['getConditions']=function(_0x96885c,_0x40c175,_0x4a9a0e){var _0x3515e4={};var _0x4ddfbe={};var _0x38d14b;var _0x3227e3;return db[_0xd948('0x3b')][_0xd948('0x49')]({'where':{'id':_0x96885c[_0xd948('0x41')]['id']}})[_0xd948('0x1f')](handleEntityNotFound(_0x40c175,null))[_0xd948('0x1f')](function(_0x89a999){if(_0x89a999){_0x38d14b=_0x89a999;_0x4ddfbe[_0xd948('0x27')]=_[_0xd948('0x29')](db[_0xd948('0x47')][_0xd948('0x26')]);_0x4ddfbe[_0xd948('0x28')]=_['keys'](_0x96885c[_0xd948('0x28')]);_0x4ddfbe[_0xd948('0x2a')]=_[_0xd948('0x2b')](_0x4ddfbe[_0xd948('0x27')],_0x4ddfbe[_0xd948('0x28')]);_0x3515e4['attributes']=_[_0xd948('0x2b')](_0x4ddfbe['model'],qs['fields'](_0x96885c['query'][_0xd948('0x2d')]));_0x3515e4[_0xd948('0x2c')]=_0x3515e4[_0xd948('0x2c')][_0xd948('0x2e')]?_0x3515e4[_0xd948('0x2c')]:_0x4ddfbe[_0xd948('0x27')];_0x3515e4[_0xd948('0x32')]=qs[_0xd948('0x33')](_0x96885c[_0xd948('0x28')][_0xd948('0x33')]);_0x3515e4['where']=qs[_0xd948('0x2a')](_[_0xd948('0x35')](_0x96885c['query'],_0x4ddfbe[_0xd948('0x2a')]));if(_0x96885c[_0xd948('0x28')][_0xd948('0x36')]){_0x3515e4['where']=_[_0xd948('0x37')](_0x3515e4[_0xd948('0x34')],{'$or':_[_0xd948('0x4a')](_0x3515e4[_0xd948('0x2c')],function(_0x2428cd){var _0x484f51={};_0x484f51[_0x2428cd]={'$like':'%'+_0x96885c['query'][_0xd948('0x36')]+'%'};return _0x484f51;})});}_0x3515e4=_['merge']({},_0x3515e4,_0x96885c['options']);return _0x38d14b[_0xd948('0x4b')](_0x3515e4);}})['then'](function(_0x56f396){if(_0x56f396){_0x3227e3=_0x56f396[_0xd948('0x2e')];if(!_0x96885c[_0xd948('0x28')][_0xd948('0x2f')](_0xd948('0x30'))){_0x3515e4[_0xd948('0x19')]=qs[_0xd948('0x19')](_0x96885c[_0xd948('0x28')][_0xd948('0x19')]);_0x3515e4['offset']=qs[_0xd948('0x31')](_0x96885c[_0xd948('0x28')][_0xd948('0x31')]);}return _0x38d14b['getConditions'](_0x3515e4);}})[_0xd948('0x1f')](function(_0xb23154){if(_0xb23154){return _0xb23154?{'count':_0x3227e3,'rows':_0xb23154}:null;}})[_0xd948('0x1f')](respondWithResult(_0x40c175,null))[_0xd948('0x3f')](handleError(_0x40c175,null));};exports[_0xd948('0x4c')]=function(_0xb0caf2,_0xdac7ee,_0x4109b4){return db['Action']['find']({'where':{'id':_0xb0caf2[_0xd948('0x41')]['id']}})[_0xd948('0x1f')](handleEntityNotFound(_0xdac7ee,null))[_0xd948('0x1f')](function(_0x5233cf){if(_0x5233cf){return _0x5233cf[_0xd948('0x4c')](_0xb0caf2['body'][_0xd948('0x48')],_[_0xd948('0x4d')](_0xb0caf2[_0xd948('0x45')],[_0xd948('0x48'),'id'])||{});}})[_0xd948('0x1f')](respondWithResult(_0xdac7ee,null))[_0xd948('0x3f')](handleError(_0xdac7ee,null));};exports[_0xd948('0x4e')]=function(_0x4871fe,_0xdee8c8,_0x3b9fa4){var _0x44f6c1={};var _0xe215a5={};var _0x1ec173;var _0x2d73e9;return db[_0xd948('0x3b')][_0xd948('0x49')]({'where':{'id':_0x4871fe[_0xd948('0x41')]['id']}})['then'](handleEntityNotFound(_0xdee8c8,null))[_0xd948('0x1f')](function(_0x55dddd){if(_0x55dddd){_0x1ec173=_0x55dddd;_0xe215a5[_0xd948('0x27')]=_[_0xd948('0x29')](db[_0xd948('0x4f')][_0xd948('0x26')]);_0xe215a5[_0xd948('0x28')]=_[_0xd948('0x29')](_0x4871fe['query']);_0xe215a5[_0xd948('0x2a')]=_[_0xd948('0x2b')](_0xe215a5[_0xd948('0x27')],_0xe215a5['query']);_0x44f6c1[_0xd948('0x2c')]=_[_0xd948('0x2b')](_0xe215a5[_0xd948('0x27')],qs[_0xd948('0x2d')](_0x4871fe[_0xd948('0x28')][_0xd948('0x2d')]));_0x44f6c1[_0xd948('0x2c')]=_0x44f6c1[_0xd948('0x2c')][_0xd948('0x2e')]?_0x44f6c1[_0xd948('0x2c')]:_0xe215a5[_0xd948('0x27')];_0x44f6c1['order']=qs[_0xd948('0x33')](_0x4871fe['query'][_0xd948('0x33')]);_0x44f6c1[_0xd948('0x34')]=qs[_0xd948('0x2a')](_[_0xd948('0x35')](_0x4871fe['query'],_0xe215a5[_0xd948('0x2a')]));if(_0x4871fe[_0xd948('0x28')]['filter']){_0x44f6c1[_0xd948('0x34')]=_['merge'](_0x44f6c1['where'],{'$or':_[_0xd948('0x4a')](_0x44f6c1['attributes'],function(_0x2f773a){var _0x277ce6={};_0x277ce6[_0x2f773a]={'$like':'%'+_0x4871fe[_0xd948('0x28')][_0xd948('0x36')]+'%'};return _0x277ce6;})});}_0x44f6c1=_[_0xd948('0x37')]({},_0x44f6c1,_0x4871fe[_0xd948('0x42')]);return _0x1ec173[_0xd948('0x4e')](_0x44f6c1);}})[_0xd948('0x1f')](function(_0x229f14){if(_0x229f14){_0x2d73e9=_0x229f14['length'];if(!_0x4871fe[_0xd948('0x28')][_0xd948('0x2f')](_0xd948('0x30'))){_0x44f6c1[_0xd948('0x19')]=qs[_0xd948('0x19')](_0x4871fe[_0xd948('0x28')][_0xd948('0x19')]);_0x44f6c1[_0xd948('0x31')]=qs['offset'](_0x4871fe[_0xd948('0x28')][_0xd948('0x31')]);}return _0x1ec173[_0xd948('0x4e')](_0x44f6c1);}})['then'](function(_0x329e74){if(_0x329e74){return _0x329e74?{'count':_0x2d73e9,'rows':_0x329e74}:null;}})[_0xd948('0x1f')](respondWithResult(_0xdee8c8,null))['catch'](handleError(_0xdee8c8,null));};