ef09a0fa046e56174407f4a2890e28ef8f181246
[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 _0x9a69=['map','keys','query','filters','intersection','attributes','fields','hasOwnProperty','order','filter','merge','where','options','then','findAll','rows','catch','show','params','includeAll','include','find','create','body','addConditions','ids','omit','getConditions','findOne','Condition','length','sort','pick','nolimit','addActions','Action','getActions','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','destroy','end','error','stack','name','index','Automation','rawAttributes','type','model'];(function(_0x1aaa7d,_0x2525c7){var _0x5b7c03=function(_0x497e22){while(--_0x497e22){_0x1aaa7d['push'](_0x1aaa7d['shift']());}};_0x5b7c03(++_0x2525c7);}(_0x9a69,0x1ce));var _0x99a6=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x9a69[_0x42cae2];return _0x5f256f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x99a6('0x0'));var zipdir=require(_0x99a6('0x1'));var jsonpatch=require(_0x99a6('0x2'));var rp=require('request-promise');var moment=require(_0x99a6('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x99a6('0x4'));var util=require(_0x99a6('0x5'));var path=require(_0x99a6('0x6'));var sox=require(_0x99a6('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x99a6('0x8'));var _=require(_0x99a6('0x9'));var squel=require('squel');var crypto=require(_0x99a6('0xa'));var jsforce=require(_0x99a6('0xb'));var deskjs=require(_0x99a6('0xc'));var toCsv=require(_0x99a6('0xd'));var querystring=require(_0x99a6('0xe'));var Papa=require(_0x99a6('0xf'));var Redis=require(_0x99a6('0x10'));var authService=require(_0x99a6('0x11'));var qs=require(_0x99a6('0x12'));var as=require(_0x99a6('0x13'));var hardwareService=require(_0x99a6('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x99a6('0x15'));var config=require(_0x99a6('0x16'));var licenseUtil=require(_0x99a6('0x17'));var db=require(_0x99a6('0x18'))['db'];function respondWithStatusCode(_0xeef1e,_0x446a28){_0x446a28=_0x446a28||0xcc;return function(_0x57e6d3){if(_0x57e6d3){return _0xeef1e[_0x99a6('0x19')](_0x446a28);}return _0xeef1e['status'](_0x446a28)['end']();};}function respondWithResult(_0x49f6b6,_0x5bdc13){_0x5bdc13=_0x5bdc13||0xc8;return function(_0x2261e5){if(_0x2261e5){return _0x49f6b6[_0x99a6('0x1a')](_0x5bdc13)[_0x99a6('0x1b')](_0x2261e5);}};}function respondWithFilteredResult(_0x13b1bc,_0x161297){return function(_0x445f10){if(_0x445f10){var _0x3d5437=typeof _0x161297['offset']===_0x99a6('0x1c')&&typeof _0x161297[_0x99a6('0x1d')]===_0x99a6('0x1c');var _0x11a385=_0x445f10[_0x99a6('0x1e')];var _0x57d4b7=_0x3d5437?0x0:_0x161297[_0x99a6('0x1f')];var _0x473e99=_0x3d5437?_0x445f10['count']:_0x161297['offset']+_0x161297[_0x99a6('0x1d')];var _0x28b66b;if(_0x473e99>=_0x11a385){_0x473e99=_0x11a385;_0x28b66b=0xc8;}else{_0x28b66b=0xce;}_0x13b1bc[_0x99a6('0x1a')](_0x28b66b);return _0x13b1bc[_0x99a6('0x20')](_0x99a6('0x21'),_0x57d4b7+'-'+_0x473e99+'/'+_0x11a385)[_0x99a6('0x1b')](_0x445f10);}return null;};}function patchUpdates(_0x1bfc6a){return function(_0x5b0302){try{jsonpatch[_0x99a6('0x22')](_0x5b0302,_0x1bfc6a,!![]);}catch(_0x373815){return BPromise[_0x99a6('0x23')](_0x373815);}return _0x5b0302[_0x99a6('0x24')]();};}function saveUpdates(_0x449fc3,_0x2a0df1){return function(_0x2bd638){if(_0x2bd638){return _0x2bd638[_0x99a6('0x25')](_0x449fc3)['then'](function(_0x1f8302){return _0x1f8302;});}return null;};}function removeEntity(_0x5e393e,_0x3a4c4f){return function(_0x2167ed){if(_0x2167ed){return _0x2167ed[_0x99a6('0x26')]()['then'](function(){_0x5e393e[_0x99a6('0x1a')](0xcc)[_0x99a6('0x27')]();});}};}function handleEntityNotFound(_0x44c8b1,_0x4dcb12){return function(_0x302eca){if(!_0x302eca){_0x44c8b1[_0x99a6('0x19')](0x194);}return _0x302eca;};}function handleError(_0x333f67,_0x3edf6f){_0x3edf6f=_0x3edf6f||0x1f4;return function(_0xa0a42){logger[_0x99a6('0x28')](_0xa0a42[_0x99a6('0x29')]);if(_0xa0a42[_0x99a6('0x2a')]){delete _0xa0a42[_0x99a6('0x2a')];}_0x333f67[_0x99a6('0x1a')](_0x3edf6f)['send'](_0xa0a42);};}exports[_0x99a6('0x2b')]=function(_0x4898a2,_0x52eaf3){var _0x4cc937={},_0x3edfdd={},_0x52a07f={'count':0x0,'rows':[]};var _0x57286b=_['map'](db[_0x99a6('0x2c')][_0x99a6('0x2d')],function(_0x3795b2){return{'name':_0x3795b2['fieldName'],'type':_0x3795b2[_0x99a6('0x2e')]['key']};});_0x3edfdd[_0x99a6('0x2f')]=_[_0x99a6('0x30')](_0x57286b,_0x99a6('0x2a'));_0x3edfdd['query']=_[_0x99a6('0x31')](_0x4898a2[_0x99a6('0x32')]);_0x3edfdd[_0x99a6('0x33')]=_[_0x99a6('0x34')](_0x3edfdd[_0x99a6('0x2f')],_0x3edfdd[_0x99a6('0x32')]);_0x4cc937[_0x99a6('0x35')]=_[_0x99a6('0x34')](_0x3edfdd[_0x99a6('0x2f')],qs[_0x99a6('0x36')](_0x4898a2['query'][_0x99a6('0x36')]));_0x4cc937[_0x99a6('0x35')]=_0x4cc937[_0x99a6('0x35')]['length']?_0x4cc937[_0x99a6('0x35')]:_0x3edfdd['model'];if(!_0x4898a2[_0x99a6('0x32')][_0x99a6('0x37')]('nolimit')){_0x4cc937[_0x99a6('0x1d')]=qs[_0x99a6('0x1d')](_0x4898a2[_0x99a6('0x32')]['limit']);_0x4cc937['offset']=qs['offset'](_0x4898a2[_0x99a6('0x32')]['offset']);}_0x4cc937[_0x99a6('0x38')]=qs['sort'](_0x4898a2['query']['sort']);_0x4cc937['where']=qs[_0x99a6('0x33')](_['pick'](_0x4898a2['query'],_0x3edfdd[_0x99a6('0x33')]),_0x57286b);if(_0x4898a2[_0x99a6('0x32')][_0x99a6('0x39')]){_0x4cc937['where']=_[_0x99a6('0x3a')](_0x4cc937[_0x99a6('0x3b')],{'$or':_[_0x99a6('0x30')](_0x57286b,function(_0x4dac27){if(_0x4dac27['type']!=='VIRTUAL'){var _0x38e4e1={};_0x38e4e1[_0x4dac27[_0x99a6('0x2a')]]={'$like':'%'+_0x4898a2[_0x99a6('0x32')][_0x99a6('0x39')]+'%'};return _0x38e4e1;}})});}_0x4cc937=_[_0x99a6('0x3a')]({},_0x4cc937,_0x4898a2[_0x99a6('0x3c')]);var _0x52604a={'where':_0x4cc937[_0x99a6('0x3b')]};return db[_0x99a6('0x2c')][_0x99a6('0x1e')](_0x52604a)[_0x99a6('0x3d')](function(_0x21846d){_0x52a07f['count']=_0x21846d;if(_0x4898a2[_0x99a6('0x32')]['includeAll']){_0x4cc937['include']=[{'all':!![]}];}return db[_0x99a6('0x2c')][_0x99a6('0x3e')](_0x4cc937);})[_0x99a6('0x3d')](function(_0x2bed4e){_0x52a07f[_0x99a6('0x3f')]=_0x2bed4e;return _0x52a07f;})['then'](respondWithFilteredResult(_0x52eaf3,_0x4cc937))[_0x99a6('0x40')](handleError(_0x52eaf3,null));};exports[_0x99a6('0x41')]=function(_0x370066,_0x3fc3a6){var _0x3083d6={'raw':![],'where':{'id':_0x370066[_0x99a6('0x42')]['id']}},_0x548b47={};_0x548b47[_0x99a6('0x2f')]=_[_0x99a6('0x31')](db[_0x99a6('0x2c')][_0x99a6('0x2d')]);_0x548b47[_0x99a6('0x32')]=_[_0x99a6('0x31')](_0x370066[_0x99a6('0x32')]);_0x548b47[_0x99a6('0x33')]=_[_0x99a6('0x34')](_0x548b47['model'],_0x548b47[_0x99a6('0x32')]);_0x3083d6['attributes']=_[_0x99a6('0x34')](_0x548b47['model'],qs[_0x99a6('0x36')](_0x370066[_0x99a6('0x32')]['fields']));_0x3083d6[_0x99a6('0x35')]=_0x3083d6[_0x99a6('0x35')]['length']?_0x3083d6['attributes']:_0x548b47[_0x99a6('0x2f')];if(_0x370066[_0x99a6('0x32')][_0x99a6('0x43')]){_0x3083d6[_0x99a6('0x44')]=[{'all':!![]}];}_0x3083d6=_[_0x99a6('0x3a')]({},_0x3083d6,_0x370066[_0x99a6('0x3c')]);return db[_0x99a6('0x2c')][_0x99a6('0x45')](_0x3083d6)[_0x99a6('0x3d')](handleEntityNotFound(_0x3fc3a6,null))[_0x99a6('0x3d')](respondWithResult(_0x3fc3a6,null))['catch'](handleError(_0x3fc3a6,null));};exports[_0x99a6('0x46')]=function(_0x1d267d,_0x39f585){return db[_0x99a6('0x2c')][_0x99a6('0x46')](_0x1d267d['body'],{})[_0x99a6('0x3d')](respondWithResult(_0x39f585,0xc9))[_0x99a6('0x40')](handleError(_0x39f585,null));};exports['update']=function(_0x464c79,_0x5d7657){if(_0x464c79[_0x99a6('0x47')]['id']){delete _0x464c79[_0x99a6('0x47')]['id'];}return db['Automation'][_0x99a6('0x45')]({'where':{'id':_0x464c79[_0x99a6('0x42')]['id']}})[_0x99a6('0x3d')](handleEntityNotFound(_0x5d7657,null))['then'](saveUpdates(_0x464c79[_0x99a6('0x47')],null))['then'](respondWithResult(_0x5d7657,null))['catch'](handleError(_0x5d7657,null));};exports[_0x99a6('0x26')]=function(_0x193b2b,_0x55ecb6){return db['Automation'][_0x99a6('0x45')]({'where':{'id':_0x193b2b[_0x99a6('0x42')]['id']}})[_0x99a6('0x3d')](handleEntityNotFound(_0x55ecb6,null))[_0x99a6('0x3d')](removeEntity(_0x55ecb6,null))['catch'](handleError(_0x55ecb6,null));};exports[_0x99a6('0x48')]=function(_0x507439,_0x570c51,_0x52408b){return db['Condition'][_0x99a6('0x45')]({'where':{'id':_0x507439[_0x99a6('0x42')]['id']}})[_0x99a6('0x3d')](handleEntityNotFound(_0x570c51,null))[_0x99a6('0x3d')](function(_0x36c4ca){if(_0x36c4ca){return _0x36c4ca['addConditions'](_0x507439[_0x99a6('0x47')][_0x99a6('0x49')],_[_0x99a6('0x4a')](_0x507439[_0x99a6('0x47')],[_0x99a6('0x49'),'id'])||{});}})[_0x99a6('0x3d')](respondWithResult(_0x570c51,null))[_0x99a6('0x40')](handleError(_0x570c51,null));};exports[_0x99a6('0x4b')]=function(_0x72f1,_0x260d3c,_0x5147df){var _0x389d40={};var _0x3162c6={};var _0x4c97c8;var _0x24c076;return db['Automation'][_0x99a6('0x4c')]({'where':{'id':_0x72f1[_0x99a6('0x42')]['id']}})[_0x99a6('0x3d')](handleEntityNotFound(_0x260d3c,null))['then'](function(_0x3419f4){if(_0x3419f4){_0x4c97c8=_0x3419f4;_0x3162c6[_0x99a6('0x2f')]=_[_0x99a6('0x31')](db[_0x99a6('0x4d')][_0x99a6('0x2d')]);_0x3162c6['query']=_[_0x99a6('0x31')](_0x72f1[_0x99a6('0x32')]);_0x3162c6[_0x99a6('0x33')]=_[_0x99a6('0x34')](_0x3162c6[_0x99a6('0x2f')],_0x3162c6[_0x99a6('0x32')]);_0x389d40['attributes']=_[_0x99a6('0x34')](_0x3162c6['model'],qs[_0x99a6('0x36')](_0x72f1['query'][_0x99a6('0x36')]));_0x389d40[_0x99a6('0x35')]=_0x389d40[_0x99a6('0x35')][_0x99a6('0x4e')]?_0x389d40[_0x99a6('0x35')]:_0x3162c6[_0x99a6('0x2f')];_0x389d40[_0x99a6('0x38')]=qs[_0x99a6('0x4f')](_0x72f1[_0x99a6('0x32')][_0x99a6('0x4f')]);_0x389d40['where']=qs[_0x99a6('0x33')](_[_0x99a6('0x50')](_0x72f1[_0x99a6('0x32')],_0x3162c6[_0x99a6('0x33')]));if(_0x72f1['query'][_0x99a6('0x39')]){_0x389d40[_0x99a6('0x3b')]=_['merge'](_0x389d40[_0x99a6('0x3b')],{'$or':_[_0x99a6('0x30')](_0x389d40[_0x99a6('0x35')],function(_0x1daba1){var _0x17c84b={};_0x17c84b[_0x1daba1]={'$like':'%'+_0x72f1[_0x99a6('0x32')][_0x99a6('0x39')]+'%'};return _0x17c84b;})});}_0x389d40=_[_0x99a6('0x3a')]({},_0x389d40,_0x72f1[_0x99a6('0x3c')]);return _0x4c97c8[_0x99a6('0x4b')](_0x389d40);}})[_0x99a6('0x3d')](function(_0x7aae66){if(_0x7aae66){_0x24c076=_0x7aae66['length'];if(!_0x72f1[_0x99a6('0x32')][_0x99a6('0x37')](_0x99a6('0x51'))){_0x389d40[_0x99a6('0x1d')]=qs[_0x99a6('0x1d')](_0x72f1[_0x99a6('0x32')][_0x99a6('0x1d')]);_0x389d40['offset']=qs[_0x99a6('0x1f')](_0x72f1[_0x99a6('0x32')][_0x99a6('0x1f')]);}return _0x4c97c8[_0x99a6('0x4b')](_0x389d40);}})[_0x99a6('0x3d')](function(_0x5ad87a){if(_0x5ad87a){return _0x5ad87a?{'count':_0x24c076,'rows':_0x5ad87a}:null;}})['then'](respondWithResult(_0x260d3c,null))[_0x99a6('0x40')](handleError(_0x260d3c,null));};exports[_0x99a6('0x52')]=function(_0xc7284,_0x26a5d3,_0x5b8af4){return db[_0x99a6('0x53')][_0x99a6('0x45')]({'where':{'id':_0xc7284[_0x99a6('0x42')]['id']}})[_0x99a6('0x3d')](handleEntityNotFound(_0x26a5d3,null))[_0x99a6('0x3d')](function(_0x2a57bf){if(_0x2a57bf){return _0x2a57bf[_0x99a6('0x52')](_0xc7284[_0x99a6('0x47')][_0x99a6('0x49')],_[_0x99a6('0x4a')](_0xc7284['body'],['ids','id'])||{});}})[_0x99a6('0x3d')](respondWithResult(_0x26a5d3,null))[_0x99a6('0x40')](handleError(_0x26a5d3,null));};exports[_0x99a6('0x54')]=function(_0x475daa,_0x2527ff,_0x1958c5){var _0x44f63f={};var _0x16a6eb={};var _0x5b82b8;var _0x11c23b;return db[_0x99a6('0x2c')]['findOne']({'where':{'id':_0x475daa['params']['id']}})[_0x99a6('0x3d')](handleEntityNotFound(_0x2527ff,null))[_0x99a6('0x3d')](function(_0x4b87dd){if(_0x4b87dd){_0x5b82b8=_0x4b87dd;_0x16a6eb[_0x99a6('0x2f')]=_['keys'](db[_0x99a6('0x53')][_0x99a6('0x2d')]);_0x16a6eb[_0x99a6('0x32')]=_[_0x99a6('0x31')](_0x475daa[_0x99a6('0x32')]);_0x16a6eb[_0x99a6('0x33')]=_[_0x99a6('0x34')](_0x16a6eb['model'],_0x16a6eb[_0x99a6('0x32')]);_0x44f63f[_0x99a6('0x35')]=_[_0x99a6('0x34')](_0x16a6eb['model'],qs[_0x99a6('0x36')](_0x475daa[_0x99a6('0x32')][_0x99a6('0x36')]));_0x44f63f[_0x99a6('0x35')]=_0x44f63f[_0x99a6('0x35')]['length']?_0x44f63f[_0x99a6('0x35')]:_0x16a6eb[_0x99a6('0x2f')];_0x44f63f[_0x99a6('0x38')]=qs[_0x99a6('0x4f')](_0x475daa['query'][_0x99a6('0x4f')]);_0x44f63f[_0x99a6('0x3b')]=qs['filters'](_[_0x99a6('0x50')](_0x475daa[_0x99a6('0x32')],_0x16a6eb[_0x99a6('0x33')]));if(_0x475daa[_0x99a6('0x32')][_0x99a6('0x39')]){_0x44f63f[_0x99a6('0x3b')]=_[_0x99a6('0x3a')](_0x44f63f[_0x99a6('0x3b')],{'$or':_[_0x99a6('0x30')](_0x44f63f[_0x99a6('0x35')],function(_0x245048){var _0x30fa5d={};_0x30fa5d[_0x245048]={'$like':'%'+_0x475daa['query']['filter']+'%'};return _0x30fa5d;})});}_0x44f63f=_[_0x99a6('0x3a')]({},_0x44f63f,_0x475daa[_0x99a6('0x3c')]);return _0x5b82b8[_0x99a6('0x54')](_0x44f63f);}})['then'](function(_0x3fd5ed){if(_0x3fd5ed){_0x11c23b=_0x3fd5ed[_0x99a6('0x4e')];if(!_0x475daa[_0x99a6('0x32')][_0x99a6('0x37')](_0x99a6('0x51'))){_0x44f63f[_0x99a6('0x1d')]=qs['limit'](_0x475daa[_0x99a6('0x32')][_0x99a6('0x1d')]);_0x44f63f[_0x99a6('0x1f')]=qs['offset'](_0x475daa[_0x99a6('0x32')]['offset']);}return _0x5b82b8['getActions'](_0x44f63f);}})['then'](function(_0x3c3e3f){if(_0x3c3e3f){return _0x3c3e3f?{'count':_0x11c23b,'rows':_0x3c3e3f}:null;}})['then'](respondWithResult(_0x2527ff,null))['catch'](handleError(_0x2527ff,null));};