0bcbc7168282dad676103bf2efc2dcde0c02fb78
[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 _0xd2a4=['offset','count','limit','status','set','Content-Range','json','apply','reject','save','destroy','name','send','index','map','Automation','type','key','model','keys','filters','intersection','query','attributes','fields','length','sort','where','pick','filter','merge','options','then','includeAll','include','findAll','rows','params','rawAttributes','catch','create','body','update','find','addConditions','omit','ids','getConditions','findOne','Condition','order','nolimit','addActions','getActions','Action','hasOwnProperty','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','undefined'];(function(_0x272d90,_0x5e70ff){var _0x2bf4a2=function(_0x544da6){while(--_0x544da6){_0x272d90['push'](_0x272d90['shift']());}};_0x2bf4a2(++_0x5e70ff);}(_0xd2a4,0x131));var _0x4d2a=function(_0x1bda7d,_0x803618){_0x1bda7d=_0x1bda7d-0x0;var _0x7ebf01=_0xd2a4[_0x1bda7d];return _0x7ebf01;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4d2a('0x0'));var zipdir=require(_0x4d2a('0x1'));var jsonpatch=require(_0x4d2a('0x2'));var rp=require(_0x4d2a('0x3'));var moment=require(_0x4d2a('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4d2a('0x5'));var util=require('util');var path=require(_0x4d2a('0x6'));var sox=require(_0x4d2a('0x7'));var csv=require(_0x4d2a('0x8'));var ejs=require(_0x4d2a('0x9'));var fs=require('fs');var fs_extra=require(_0x4d2a('0xa'));var _=require(_0x4d2a('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x4d2a('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x4d2a('0xd'));var Redis=require(_0x4d2a('0xe'));var authService=require(_0x4d2a('0xf'));var qs=require(_0x4d2a('0x10'));var as=require(_0x4d2a('0x11'));var hardwareService=require(_0x4d2a('0x12'));var logger=require(_0x4d2a('0x13'))('api');var utils=require(_0x4d2a('0x14'));var config=require(_0x4d2a('0x15'));var licenseUtil=require(_0x4d2a('0x16'));var db=require(_0x4d2a('0x17'))['db'];function respondWithStatusCode(_0x1c0aa8,_0x4de3fd){_0x4de3fd=_0x4de3fd||0xcc;return function(_0x1c98b6){if(_0x1c98b6){return _0x1c0aa8[_0x4d2a('0x18')](_0x4de3fd);}return _0x1c0aa8['status'](_0x4de3fd)[_0x4d2a('0x19')]();};}function respondWithResult(_0x2bd21a,_0x4d3c66){_0x4d3c66=_0x4d3c66||0xc8;return function(_0x8d55c2){if(_0x8d55c2){return _0x2bd21a['status'](_0x4d3c66)['json'](_0x8d55c2);}};}function respondWithFilteredResult(_0xa9a4e2,_0x43a8dc){return function(_0x5da917){if(_0x5da917){var _0x2d75da=typeof _0x43a8dc['offset']===_0x4d2a('0x1a')&&typeof _0x43a8dc['limit']===_0x4d2a('0x1a');var _0x11f5f3=_0x5da917['count'];var _0x474500=_0x2d75da?0x0:_0x43a8dc[_0x4d2a('0x1b')];var _0x5eaa6f=_0x2d75da?_0x5da917[_0x4d2a('0x1c')]:_0x43a8dc[_0x4d2a('0x1b')]+_0x43a8dc[_0x4d2a('0x1d')];var _0x3942cc;if(_0x5eaa6f>=_0x11f5f3){_0x5eaa6f=_0x11f5f3;_0x3942cc=0xc8;}else{_0x3942cc=0xce;}_0xa9a4e2[_0x4d2a('0x1e')](_0x3942cc);return _0xa9a4e2[_0x4d2a('0x1f')](_0x4d2a('0x20'),_0x474500+'-'+_0x5eaa6f+'/'+_0x11f5f3)[_0x4d2a('0x21')](_0x5da917);}return null;};}function patchUpdates(_0x382458){return function(_0x133339){try{jsonpatch[_0x4d2a('0x22')](_0x133339,_0x382458,!![]);}catch(_0x438cbd){return BPromise[_0x4d2a('0x23')](_0x438cbd);}return _0x133339[_0x4d2a('0x24')]();};}function saveUpdates(_0x2f89b9,_0x271ac8){return function(_0x3e0830){if(_0x3e0830){return _0x3e0830['update'](_0x2f89b9)['then'](function(_0x390dba){return _0x390dba;});}return null;};}function removeEntity(_0x1fbac0,_0xfc30b8){return function(_0x429233){if(_0x429233){return _0x429233[_0x4d2a('0x25')]()['then'](function(){_0x1fbac0[_0x4d2a('0x1e')](0xcc)[_0x4d2a('0x19')]();});}};}function handleEntityNotFound(_0x695b8,_0x3b09cc){return function(_0x54522e){if(!_0x54522e){_0x695b8['sendStatus'](0x194);}return _0x54522e;};}function handleError(_0x3ad114,_0x518cc0){_0x518cc0=_0x518cc0||0x1f4;return function(_0x1ee354){logger['error'](_0x1ee354['stack']);if(_0x1ee354['name']){delete _0x1ee354[_0x4d2a('0x26')];}_0x3ad114['status'](_0x518cc0)[_0x4d2a('0x27')](_0x1ee354);};}exports[_0x4d2a('0x28')]=function(_0x48975f,_0x1432db){var _0x10fa63={},_0x3ea775={},_0x2b77db={'count':0x0,'rows':[]};var _0x31bead=_[_0x4d2a('0x29')](db[_0x4d2a('0x2a')]['rawAttributes'],function(_0x3b4f76){return{'name':_0x3b4f76['fieldName'],'type':_0x3b4f76[_0x4d2a('0x2b')][_0x4d2a('0x2c')]};});_0x3ea775[_0x4d2a('0x2d')]=_[_0x4d2a('0x29')](_0x31bead,_0x4d2a('0x26'));_0x3ea775['query']=_[_0x4d2a('0x2e')](_0x48975f['query']);_0x3ea775[_0x4d2a('0x2f')]=_[_0x4d2a('0x30')](_0x3ea775['model'],_0x3ea775[_0x4d2a('0x31')]);_0x10fa63[_0x4d2a('0x32')]=_[_0x4d2a('0x30')](_0x3ea775[_0x4d2a('0x2d')],qs['fields'](_0x48975f[_0x4d2a('0x31')][_0x4d2a('0x33')]));_0x10fa63[_0x4d2a('0x32')]=_0x10fa63['attributes'][_0x4d2a('0x34')]?_0x10fa63[_0x4d2a('0x32')]:_0x3ea775['model'];if(!_0x48975f['query']['hasOwnProperty']('nolimit')){_0x10fa63['limit']=qs[_0x4d2a('0x1d')](_0x48975f[_0x4d2a('0x31')][_0x4d2a('0x1d')]);_0x10fa63['offset']=qs[_0x4d2a('0x1b')](_0x48975f[_0x4d2a('0x31')][_0x4d2a('0x1b')]);}_0x10fa63['order']=qs[_0x4d2a('0x35')](_0x48975f[_0x4d2a('0x31')][_0x4d2a('0x35')]);_0x10fa63[_0x4d2a('0x36')]=qs[_0x4d2a('0x2f')](_[_0x4d2a('0x37')](_0x48975f['query'],_0x3ea775[_0x4d2a('0x2f')]),_0x31bead);if(_0x48975f['query'][_0x4d2a('0x38')]){_0x10fa63[_0x4d2a('0x36')]=_[_0x4d2a('0x39')](_0x10fa63[_0x4d2a('0x36')],{'$or':_['map'](_0x31bead,function(_0x2b96a4){if(_0x2b96a4[_0x4d2a('0x2b')]!=='VIRTUAL'){var _0x5636d5={};_0x5636d5[_0x2b96a4['name']]={'$like':'%'+_0x48975f[_0x4d2a('0x31')][_0x4d2a('0x38')]+'%'};return _0x5636d5;}})});}_0x10fa63=_[_0x4d2a('0x39')]({},_0x10fa63,_0x48975f[_0x4d2a('0x3a')]);var _0x2d3e71={'where':_0x10fa63[_0x4d2a('0x36')]};return db[_0x4d2a('0x2a')][_0x4d2a('0x1c')](_0x2d3e71)[_0x4d2a('0x3b')](function(_0x3cea88){_0x2b77db[_0x4d2a('0x1c')]=_0x3cea88;if(_0x48975f[_0x4d2a('0x31')][_0x4d2a('0x3c')]){_0x10fa63[_0x4d2a('0x3d')]=[{'all':!![]}];}return db['Automation'][_0x4d2a('0x3e')](_0x10fa63);})[_0x4d2a('0x3b')](function(_0x204b2e){_0x2b77db[_0x4d2a('0x3f')]=_0x204b2e;return _0x2b77db;})['then'](respondWithFilteredResult(_0x1432db,_0x10fa63))['catch'](handleError(_0x1432db,null));};exports['show']=function(_0x4369f8,_0x4c6f5d){var _0x647ced={'raw':![],'where':{'id':_0x4369f8[_0x4d2a('0x40')]['id']}},_0x450b73={};_0x450b73[_0x4d2a('0x2d')]=_[_0x4d2a('0x2e')](db['Automation'][_0x4d2a('0x41')]);_0x450b73[_0x4d2a('0x31')]=_[_0x4d2a('0x2e')](_0x4369f8[_0x4d2a('0x31')]);_0x450b73[_0x4d2a('0x2f')]=_[_0x4d2a('0x30')](_0x450b73[_0x4d2a('0x2d')],_0x450b73[_0x4d2a('0x31')]);_0x647ced[_0x4d2a('0x32')]=_['intersection'](_0x450b73['model'],qs['fields'](_0x4369f8['query'][_0x4d2a('0x33')]));_0x647ced[_0x4d2a('0x32')]=_0x647ced['attributes'][_0x4d2a('0x34')]?_0x647ced['attributes']:_0x450b73['model'];if(_0x4369f8['query'][_0x4d2a('0x3c')]){_0x647ced[_0x4d2a('0x3d')]=[{'all':!![]}];}_0x647ced=_[_0x4d2a('0x39')]({},_0x647ced,_0x4369f8['options']);return db[_0x4d2a('0x2a')]['find'](_0x647ced)[_0x4d2a('0x3b')](handleEntityNotFound(_0x4c6f5d,null))['then'](respondWithResult(_0x4c6f5d,null))[_0x4d2a('0x42')](handleError(_0x4c6f5d,null));};exports[_0x4d2a('0x43')]=function(_0x45f685,_0x294c49){return db[_0x4d2a('0x2a')]['create'](_0x45f685[_0x4d2a('0x44')],{})['then'](respondWithResult(_0x294c49,0xc9))[_0x4d2a('0x42')](handleError(_0x294c49,null));};exports[_0x4d2a('0x45')]=function(_0x48b72e,_0x10de41){if(_0x48b72e[_0x4d2a('0x44')]['id']){delete _0x48b72e['body']['id'];}return db[_0x4d2a('0x2a')][_0x4d2a('0x46')]({'where':{'id':_0x48b72e[_0x4d2a('0x40')]['id']}})[_0x4d2a('0x3b')](handleEntityNotFound(_0x10de41,null))['then'](saveUpdates(_0x48b72e[_0x4d2a('0x44')],null))[_0x4d2a('0x3b')](respondWithResult(_0x10de41,null))['catch'](handleError(_0x10de41,null));};exports[_0x4d2a('0x25')]=function(_0x4e4064,_0x394da4){return db['Automation']['find']({'where':{'id':_0x4e4064['params']['id']}})[_0x4d2a('0x3b')](handleEntityNotFound(_0x394da4,null))[_0x4d2a('0x3b')](removeEntity(_0x394da4,null))[_0x4d2a('0x42')](handleError(_0x394da4,null));};exports[_0x4d2a('0x47')]=function(_0x4f9649,_0x5b1750,_0x216799){return db['Condition'][_0x4d2a('0x46')]({'where':{'id':_0x4f9649[_0x4d2a('0x40')]['id']}})[_0x4d2a('0x3b')](handleEntityNotFound(_0x5b1750,null))['then'](function(_0x2faffe){if(_0x2faffe){return _0x2faffe['addConditions'](_0x4f9649['body']['ids'],_[_0x4d2a('0x48')](_0x4f9649[_0x4d2a('0x44')],[_0x4d2a('0x49'),'id'])||{});}})[_0x4d2a('0x3b')](respondWithResult(_0x5b1750,null))[_0x4d2a('0x42')](handleError(_0x5b1750,null));};exports[_0x4d2a('0x4a')]=function(_0x26efa5,_0xda873,_0x228574){var _0x12e346={};var _0xe7cbaf={};var _0x1bf131;var _0x3d105b;return db['Automation'][_0x4d2a('0x4b')]({'where':{'id':_0x26efa5['params']['id']}})['then'](handleEntityNotFound(_0xda873,null))[_0x4d2a('0x3b')](function(_0x3fde96){if(_0x3fde96){_0x1bf131=_0x3fde96;_0xe7cbaf['model']=_[_0x4d2a('0x2e')](db[_0x4d2a('0x4c')]['rawAttributes']);_0xe7cbaf[_0x4d2a('0x31')]=_[_0x4d2a('0x2e')](_0x26efa5['query']);_0xe7cbaf[_0x4d2a('0x2f')]=_['intersection'](_0xe7cbaf[_0x4d2a('0x2d')],_0xe7cbaf[_0x4d2a('0x31')]);_0x12e346[_0x4d2a('0x32')]=_['intersection'](_0xe7cbaf[_0x4d2a('0x2d')],qs[_0x4d2a('0x33')](_0x26efa5[_0x4d2a('0x31')][_0x4d2a('0x33')]));_0x12e346[_0x4d2a('0x32')]=_0x12e346['attributes'][_0x4d2a('0x34')]?_0x12e346[_0x4d2a('0x32')]:_0xe7cbaf[_0x4d2a('0x2d')];_0x12e346[_0x4d2a('0x4d')]=qs[_0x4d2a('0x35')](_0x26efa5[_0x4d2a('0x31')]['sort']);_0x12e346[_0x4d2a('0x36')]=qs[_0x4d2a('0x2f')](_['pick'](_0x26efa5[_0x4d2a('0x31')],_0xe7cbaf[_0x4d2a('0x2f')]));if(_0x26efa5['query'][_0x4d2a('0x38')]){_0x12e346[_0x4d2a('0x36')]=_['merge'](_0x12e346['where'],{'$or':_[_0x4d2a('0x29')](_0x12e346['attributes'],function(_0x418fac){var _0x5da157={};_0x5da157[_0x418fac]={'$like':'%'+_0x26efa5['query']['filter']+'%'};return _0x5da157;})});}_0x12e346=_['merge']({},_0x12e346,_0x26efa5[_0x4d2a('0x3a')]);return _0x1bf131['getConditions'](_0x12e346);}})['then'](function(_0x1a3b6b){if(_0x1a3b6b){_0x3d105b=_0x1a3b6b[_0x4d2a('0x34')];if(!_0x26efa5[_0x4d2a('0x31')]['hasOwnProperty'](_0x4d2a('0x4e'))){_0x12e346['limit']=qs[_0x4d2a('0x1d')](_0x26efa5['query'][_0x4d2a('0x1d')]);_0x12e346[_0x4d2a('0x1b')]=qs[_0x4d2a('0x1b')](_0x26efa5[_0x4d2a('0x31')][_0x4d2a('0x1b')]);}return _0x1bf131[_0x4d2a('0x4a')](_0x12e346);}})[_0x4d2a('0x3b')](function(_0x11abea){if(_0x11abea){return _0x11abea?{'count':_0x3d105b,'rows':_0x11abea}:null;}})[_0x4d2a('0x3b')](respondWithResult(_0xda873,null))['catch'](handleError(_0xda873,null));};exports[_0x4d2a('0x4f')]=function(_0x497d0a,_0x3a8220,_0x3dc91d){return db['Action'][_0x4d2a('0x46')]({'where':{'id':_0x497d0a['params']['id']}})['then'](handleEntityNotFound(_0x3a8220,null))['then'](function(_0x249d84){if(_0x249d84){return _0x249d84['addActions'](_0x497d0a[_0x4d2a('0x44')][_0x4d2a('0x49')],_[_0x4d2a('0x48')](_0x497d0a[_0x4d2a('0x44')],['ids','id'])||{});}})['then'](respondWithResult(_0x3a8220,null))['catch'](handleError(_0x3a8220,null));};exports[_0x4d2a('0x50')]=function(_0x136ad0,_0xf3d8d0,_0x255b47){var _0x1e3e08={};var _0x47b76e={};var _0x23a48a;var _0x3c334a;return db[_0x4d2a('0x2a')]['findOne']({'where':{'id':_0x136ad0[_0x4d2a('0x40')]['id']}})[_0x4d2a('0x3b')](handleEntityNotFound(_0xf3d8d0,null))['then'](function(_0x248768){if(_0x248768){_0x23a48a=_0x248768;_0x47b76e[_0x4d2a('0x2d')]=_['keys'](db[_0x4d2a('0x51')][_0x4d2a('0x41')]);_0x47b76e['query']=_['keys'](_0x136ad0[_0x4d2a('0x31')]);_0x47b76e[_0x4d2a('0x2f')]=_[_0x4d2a('0x30')](_0x47b76e[_0x4d2a('0x2d')],_0x47b76e[_0x4d2a('0x31')]);_0x1e3e08[_0x4d2a('0x32')]=_[_0x4d2a('0x30')](_0x47b76e[_0x4d2a('0x2d')],qs[_0x4d2a('0x33')](_0x136ad0[_0x4d2a('0x31')][_0x4d2a('0x33')]));_0x1e3e08[_0x4d2a('0x32')]=_0x1e3e08[_0x4d2a('0x32')][_0x4d2a('0x34')]?_0x1e3e08[_0x4d2a('0x32')]:_0x47b76e['model'];_0x1e3e08[_0x4d2a('0x4d')]=qs[_0x4d2a('0x35')](_0x136ad0[_0x4d2a('0x31')][_0x4d2a('0x35')]);_0x1e3e08[_0x4d2a('0x36')]=qs[_0x4d2a('0x2f')](_[_0x4d2a('0x37')](_0x136ad0['query'],_0x47b76e[_0x4d2a('0x2f')]));if(_0x136ad0[_0x4d2a('0x31')][_0x4d2a('0x38')]){_0x1e3e08[_0x4d2a('0x36')]=_['merge'](_0x1e3e08['where'],{'$or':_[_0x4d2a('0x29')](_0x1e3e08[_0x4d2a('0x32')],function(_0x98df94){var _0x2db73f={};_0x2db73f[_0x98df94]={'$like':'%'+_0x136ad0[_0x4d2a('0x31')][_0x4d2a('0x38')]+'%'};return _0x2db73f;})});}_0x1e3e08=_[_0x4d2a('0x39')]({},_0x1e3e08,_0x136ad0['options']);return _0x23a48a[_0x4d2a('0x50')](_0x1e3e08);}})[_0x4d2a('0x3b')](function(_0xb280dd){if(_0xb280dd){_0x3c334a=_0xb280dd[_0x4d2a('0x34')];if(!_0x136ad0[_0x4d2a('0x31')][_0x4d2a('0x52')](_0x4d2a('0x4e'))){_0x1e3e08[_0x4d2a('0x1d')]=qs[_0x4d2a('0x1d')](_0x136ad0['query'][_0x4d2a('0x1d')]);_0x1e3e08['offset']=qs[_0x4d2a('0x1b')](_0x136ad0[_0x4d2a('0x31')]['offset']);}return _0x23a48a[_0x4d2a('0x50')](_0x1e3e08);}})[_0x4d2a('0x3b')](function(_0x197068){if(_0x197068){return _0x197068?{'count':_0x3c334a,'rows':_0x197068}:null;}})[_0x4d2a('0x3b')](respondWithResult(_0xf3d8d0,null))[_0x4d2a('0x42')](handleError(_0xf3d8d0,null));};