Built motion from commit 9e1399f3.|2.5.37
[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 _0xc392=['fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','then','destroy','sendStatus','error','stack','name','send','index','map','Automation','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','create','catch','body','addConditions','find','ids','omit','findOne','Condition','pick','getConditions','addActions','Action','getActions','eml-format','rimraf'];(function(_0x4cbd8e,_0x533cf1){var _0x36816a=function(_0x59edbd){while(--_0x59edbd){_0x4cbd8e['push'](_0x4cbd8e['shift']());}};_0x36816a(++_0x533cf1);}(_0xc392,0xb0));var _0x2c39=function(_0x14c0a7,_0xb44cb){_0x14c0a7=_0x14c0a7-0x0;var _0x585b82=_0xc392[_0x14c0a7];return _0x585b82;};'use strict';var emlformat=require(_0x2c39('0x0'));var rimraf=require(_0x2c39('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2c39('0x2'));var rp=require(_0x2c39('0x3'));var moment=require(_0x2c39('0x4'));var BPromise=require(_0x2c39('0x5'));var Mustache=require(_0x2c39('0x6'));var util=require(_0x2c39('0x7'));var path=require('path');var sox=require(_0x2c39('0x8'));var csv=require(_0x2c39('0x9'));var ejs=require(_0x2c39('0xa'));var fs=require('fs');var fs_extra=require(_0x2c39('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x2c39('0xc'));var jsforce=require(_0x2c39('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x2c39('0x9'));var querystring=require(_0x2c39('0xe'));var Papa=require(_0x2c39('0xf'));var Redis=require(_0x2c39('0x10'));var authService=require(_0x2c39('0x11'));var qs=require(_0x2c39('0x12'));var as=require(_0x2c39('0x13'));var hardwareService=require(_0x2c39('0x14'));var logger=require(_0x2c39('0x15'))(_0x2c39('0x16'));var utils=require(_0x2c39('0x17'));var config=require(_0x2c39('0x18'));var licenseUtil=require(_0x2c39('0x19'));var db=require(_0x2c39('0x1a'))['db'];function respondWithStatusCode(_0x5e7167,_0x4bb153){_0x4bb153=_0x4bb153||0xcc;return function(_0x3ada78){if(_0x3ada78){return _0x5e7167['sendStatus'](_0x4bb153);}return _0x5e7167['status'](_0x4bb153)[_0x2c39('0x1b')]();};}function respondWithResult(_0x3334d8,_0x47aad0){_0x47aad0=_0x47aad0||0xc8;return function(_0x35a7d3){if(_0x35a7d3){return _0x3334d8[_0x2c39('0x1c')](_0x47aad0)[_0x2c39('0x1d')](_0x35a7d3);}};}function respondWithFilteredResult(_0x2d34e6,_0x597672){return function(_0x5c16ff){if(_0x5c16ff){var _0x1b580a=typeof _0x597672[_0x2c39('0x1e')]==='undefined'&&typeof _0x597672['limit']===_0x2c39('0x1f');var _0x4fd4ea=_0x5c16ff['count'];var _0x4e90a1=_0x1b580a?0x0:_0x597672['offset'];var _0x24541e=_0x1b580a?_0x5c16ff[_0x2c39('0x20')]:_0x597672[_0x2c39('0x1e')]+_0x597672[_0x2c39('0x21')];var _0x35bd19;if(_0x24541e>=_0x4fd4ea){_0x24541e=_0x4fd4ea;_0x35bd19=0xc8;}else{_0x35bd19=0xce;}_0x2d34e6[_0x2c39('0x1c')](_0x35bd19);return _0x2d34e6[_0x2c39('0x22')](_0x2c39('0x23'),_0x4e90a1+'-'+_0x24541e+'/'+_0x4fd4ea)['json'](_0x5c16ff);}return null;};}function patchUpdates(_0x494002){return function(_0x3c0195){try{jsonpatch[_0x2c39('0x24')](_0x3c0195,_0x494002,!![]);}catch(_0x11cc48){return BPromise[_0x2c39('0x25')](_0x11cc48);}return _0x3c0195['save']();};}function saveUpdates(_0x27c272,_0x4e2d1e){return function(_0x26e3fa){if(_0x26e3fa){return _0x26e3fa['update'](_0x27c272)[_0x2c39('0x26')](function(_0x112c7b){return _0x112c7b;});}return null;};}function removeEntity(_0x3e93d8,_0x208bda){return function(_0x11acba){if(_0x11acba){return _0x11acba[_0x2c39('0x27')]()[_0x2c39('0x26')](function(){_0x3e93d8[_0x2c39('0x1c')](0xcc)[_0x2c39('0x1b')]();});}};}function handleEntityNotFound(_0x2b896c,_0x391f11){return function(_0x47805c){if(!_0x47805c){_0x2b896c[_0x2c39('0x28')](0x194);}return _0x47805c;};}function handleError(_0x570ef4,_0x275bdd){_0x275bdd=_0x275bdd||0x1f4;return function(_0x403071){logger[_0x2c39('0x29')](_0x403071[_0x2c39('0x2a')]);if(_0x403071[_0x2c39('0x2b')]){delete _0x403071['name'];}_0x570ef4[_0x2c39('0x1c')](_0x275bdd)[_0x2c39('0x2c')](_0x403071);};}exports[_0x2c39('0x2d')]=function(_0x56adda,_0x4eefb4){var _0x4f13a7={},_0x5383e2={},_0x50c847={'count':0x0,'rows':[]};var _0x37276f=_[_0x2c39('0x2e')](db[_0x2c39('0x2f')][_0x2c39('0x30')],function(_0x4fd163){return{'name':_0x4fd163[_0x2c39('0x31')],'type':_0x4fd163[_0x2c39('0x32')][_0x2c39('0x33')]};});_0x5383e2[_0x2c39('0x34')]=_[_0x2c39('0x2e')](_0x37276f,'name');_0x5383e2['query']=_[_0x2c39('0x35')](_0x56adda[_0x2c39('0x36')]);_0x5383e2['filters']=_[_0x2c39('0x37')](_0x5383e2['model'],_0x5383e2[_0x2c39('0x36')]);_0x4f13a7[_0x2c39('0x38')]=_[_0x2c39('0x37')](_0x5383e2[_0x2c39('0x34')],qs[_0x2c39('0x39')](_0x56adda[_0x2c39('0x36')][_0x2c39('0x39')]));_0x4f13a7[_0x2c39('0x38')]=_0x4f13a7['attributes'][_0x2c39('0x3a')]?_0x4f13a7['attributes']:_0x5383e2['model'];if(!_0x56adda[_0x2c39('0x36')][_0x2c39('0x3b')](_0x2c39('0x3c'))){_0x4f13a7[_0x2c39('0x21')]=qs[_0x2c39('0x21')](_0x56adda[_0x2c39('0x36')][_0x2c39('0x21')]);_0x4f13a7[_0x2c39('0x1e')]=qs['offset'](_0x56adda[_0x2c39('0x36')][_0x2c39('0x1e')]);}_0x4f13a7[_0x2c39('0x3d')]=qs[_0x2c39('0x3e')](_0x56adda['query']['sort']);_0x4f13a7[_0x2c39('0x3f')]=qs[_0x2c39('0x40')](_['pick'](_0x56adda[_0x2c39('0x36')],_0x5383e2[_0x2c39('0x40')]),_0x37276f);if(_0x56adda[_0x2c39('0x36')][_0x2c39('0x41')]){_0x4f13a7[_0x2c39('0x3f')]=_[_0x2c39('0x42')](_0x4f13a7[_0x2c39('0x3f')],{'$or':_['map'](_0x37276f,function(_0x52fc39){if(_0x52fc39[_0x2c39('0x32')]!==_0x2c39('0x43')){var _0x110ba9={};_0x110ba9[_0x52fc39[_0x2c39('0x2b')]]={'$like':'%'+_0x56adda[_0x2c39('0x36')][_0x2c39('0x41')]+'%'};return _0x110ba9;}})});}_0x4f13a7=_[_0x2c39('0x42')]({},_0x4f13a7,_0x56adda[_0x2c39('0x44')]);var _0x199095={'where':_0x4f13a7[_0x2c39('0x3f')]};return db[_0x2c39('0x2f')][_0x2c39('0x20')](_0x199095)['then'](function(_0x345d79){_0x50c847[_0x2c39('0x20')]=_0x345d79;if(_0x56adda[_0x2c39('0x36')][_0x2c39('0x45')]){_0x4f13a7[_0x2c39('0x46')]=[{'all':!![]}];}return db['Automation'][_0x2c39('0x47')](_0x4f13a7);})[_0x2c39('0x26')](function(_0x17253d){_0x50c847[_0x2c39('0x48')]=_0x17253d;return _0x50c847;})[_0x2c39('0x26')](respondWithFilteredResult(_0x4eefb4,_0x4f13a7))['catch'](handleError(_0x4eefb4,null));};exports[_0x2c39('0x49')]=function(_0x3733e9,_0x1e1a48){var _0x5e6f76={'raw':![],'where':{'id':_0x3733e9[_0x2c39('0x4a')]['id']}},_0x23b98f={};_0x23b98f['model']=_['keys'](db[_0x2c39('0x2f')]['rawAttributes']);_0x23b98f[_0x2c39('0x36')]=_[_0x2c39('0x35')](_0x3733e9[_0x2c39('0x36')]);_0x23b98f[_0x2c39('0x40')]=_[_0x2c39('0x37')](_0x23b98f['model'],_0x23b98f['query']);_0x5e6f76[_0x2c39('0x38')]=_['intersection'](_0x23b98f[_0x2c39('0x34')],qs[_0x2c39('0x39')](_0x3733e9[_0x2c39('0x36')][_0x2c39('0x39')]));_0x5e6f76[_0x2c39('0x38')]=_0x5e6f76[_0x2c39('0x38')]['length']?_0x5e6f76[_0x2c39('0x38')]:_0x23b98f[_0x2c39('0x34')];if(_0x3733e9[_0x2c39('0x36')][_0x2c39('0x45')]){_0x5e6f76[_0x2c39('0x46')]=[{'all':!![]}];}_0x5e6f76=_[_0x2c39('0x42')]({},_0x5e6f76,_0x3733e9['options']);return db[_0x2c39('0x2f')]['find'](_0x5e6f76)[_0x2c39('0x26')](handleEntityNotFound(_0x1e1a48,null))['then'](respondWithResult(_0x1e1a48,null))['catch'](handleError(_0x1e1a48,null));};exports[_0x2c39('0x4b')]=function(_0x3f52c0,_0x123bc9){return db[_0x2c39('0x2f')][_0x2c39('0x4b')](_0x3f52c0['body'],{})[_0x2c39('0x26')](respondWithResult(_0x123bc9,0xc9))[_0x2c39('0x4c')](handleError(_0x123bc9,null));};exports['update']=function(_0x257dd2,_0x56b822){if(_0x257dd2[_0x2c39('0x4d')]['id']){delete _0x257dd2[_0x2c39('0x4d')]['id'];}return db[_0x2c39('0x2f')]['find']({'where':{'id':_0x257dd2['params']['id']}})[_0x2c39('0x26')](handleEntityNotFound(_0x56b822,null))[_0x2c39('0x26')](saveUpdates(_0x257dd2['body'],null))[_0x2c39('0x26')](respondWithResult(_0x56b822,null))[_0x2c39('0x4c')](handleError(_0x56b822,null));};exports[_0x2c39('0x27')]=function(_0x4a3907,_0x5c759f){return db[_0x2c39('0x2f')]['find']({'where':{'id':_0x4a3907[_0x2c39('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5c759f,null))[_0x2c39('0x26')](removeEntity(_0x5c759f,null))[_0x2c39('0x4c')](handleError(_0x5c759f,null));};exports[_0x2c39('0x4e')]=function(_0x1e1ece,_0x1367cd,_0x3ce671){return db['Condition'][_0x2c39('0x4f')]({'where':{'id':_0x1e1ece[_0x2c39('0x4a')]['id']}})[_0x2c39('0x26')](handleEntityNotFound(_0x1367cd,null))[_0x2c39('0x26')](function(_0x16bae7){if(_0x16bae7){return _0x16bae7[_0x2c39('0x4e')](_0x1e1ece[_0x2c39('0x4d')][_0x2c39('0x50')],_[_0x2c39('0x51')](_0x1e1ece[_0x2c39('0x4d')],[_0x2c39('0x50'),'id'])||{});}})['then'](respondWithResult(_0x1367cd,null))[_0x2c39('0x4c')](handleError(_0x1367cd,null));};exports['getConditions']=function(_0x634433,_0x22b277,_0x46b1e8){var _0x2d5e62={};var _0x236e66={};var _0xc097da;var _0x520a0b;return db[_0x2c39('0x2f')][_0x2c39('0x52')]({'where':{'id':_0x634433[_0x2c39('0x4a')]['id']}})[_0x2c39('0x26')](handleEntityNotFound(_0x22b277,null))[_0x2c39('0x26')](function(_0x45231b){if(_0x45231b){_0xc097da=_0x45231b;_0x236e66[_0x2c39('0x34')]=_[_0x2c39('0x35')](db[_0x2c39('0x53')][_0x2c39('0x30')]);_0x236e66[_0x2c39('0x36')]=_[_0x2c39('0x35')](_0x634433[_0x2c39('0x36')]);_0x236e66[_0x2c39('0x40')]=_['intersection'](_0x236e66[_0x2c39('0x34')],_0x236e66[_0x2c39('0x36')]);_0x2d5e62[_0x2c39('0x38')]=_['intersection'](_0x236e66[_0x2c39('0x34')],qs[_0x2c39('0x39')](_0x634433[_0x2c39('0x36')][_0x2c39('0x39')]));_0x2d5e62[_0x2c39('0x38')]=_0x2d5e62['attributes']['length']?_0x2d5e62[_0x2c39('0x38')]:_0x236e66[_0x2c39('0x34')];_0x2d5e62['order']=qs[_0x2c39('0x3e')](_0x634433[_0x2c39('0x36')][_0x2c39('0x3e')]);_0x2d5e62['where']=qs[_0x2c39('0x40')](_[_0x2c39('0x54')](_0x634433['query'],_0x236e66[_0x2c39('0x40')]));if(_0x634433['query']['filter']){_0x2d5e62[_0x2c39('0x3f')]=_[_0x2c39('0x42')](_0x2d5e62[_0x2c39('0x3f')],{'$or':_[_0x2c39('0x2e')](_0x2d5e62[_0x2c39('0x38')],function(_0x2808bc){var _0x58d3b3={};_0x58d3b3[_0x2808bc]={'$like':'%'+_0x634433['query'][_0x2c39('0x41')]+'%'};return _0x58d3b3;})});}_0x2d5e62=_[_0x2c39('0x42')]({},_0x2d5e62,_0x634433[_0x2c39('0x44')]);return _0xc097da['getConditions'](_0x2d5e62);}})[_0x2c39('0x26')](function(_0x271108){if(_0x271108){_0x520a0b=_0x271108[_0x2c39('0x3a')];if(!_0x634433[_0x2c39('0x36')][_0x2c39('0x3b')](_0x2c39('0x3c'))){_0x2d5e62[_0x2c39('0x21')]=qs[_0x2c39('0x21')](_0x634433['query'][_0x2c39('0x21')]);_0x2d5e62[_0x2c39('0x1e')]=qs[_0x2c39('0x1e')](_0x634433[_0x2c39('0x36')][_0x2c39('0x1e')]);}return _0xc097da[_0x2c39('0x55')](_0x2d5e62);}})['then'](function(_0x215585){if(_0x215585){return _0x215585?{'count':_0x520a0b,'rows':_0x215585}:null;}})[_0x2c39('0x26')](respondWithResult(_0x22b277,null))['catch'](handleError(_0x22b277,null));};exports[_0x2c39('0x56')]=function(_0x50a9fc,_0xaf2d6d,_0x2c7ecb){return db[_0x2c39('0x57')]['find']({'where':{'id':_0x50a9fc[_0x2c39('0x4a')]['id']}})[_0x2c39('0x26')](handleEntityNotFound(_0xaf2d6d,null))[_0x2c39('0x26')](function(_0x33e25e){if(_0x33e25e){return _0x33e25e[_0x2c39('0x56')](_0x50a9fc[_0x2c39('0x4d')][_0x2c39('0x50')],_[_0x2c39('0x51')](_0x50a9fc[_0x2c39('0x4d')],['ids','id'])||{});}})['then'](respondWithResult(_0xaf2d6d,null))[_0x2c39('0x4c')](handleError(_0xaf2d6d,null));};exports[_0x2c39('0x58')]=function(_0x16a19b,_0x2a8d08,_0x3080a8){var _0x1d7b4d={};var _0x2e58db={};var _0x38c6a2;var _0x16e6b4;return db['Automation'][_0x2c39('0x52')]({'where':{'id':_0x16a19b[_0x2c39('0x4a')]['id']}})[_0x2c39('0x26')](handleEntityNotFound(_0x2a8d08,null))[_0x2c39('0x26')](function(_0x362b1f){if(_0x362b1f){_0x38c6a2=_0x362b1f;_0x2e58db['model']=_[_0x2c39('0x35')](db[_0x2c39('0x57')][_0x2c39('0x30')]);_0x2e58db['query']=_['keys'](_0x16a19b[_0x2c39('0x36')]);_0x2e58db[_0x2c39('0x40')]=_[_0x2c39('0x37')](_0x2e58db[_0x2c39('0x34')],_0x2e58db[_0x2c39('0x36')]);_0x1d7b4d['attributes']=_[_0x2c39('0x37')](_0x2e58db['model'],qs[_0x2c39('0x39')](_0x16a19b[_0x2c39('0x36')]['fields']));_0x1d7b4d[_0x2c39('0x38')]=_0x1d7b4d[_0x2c39('0x38')]['length']?_0x1d7b4d[_0x2c39('0x38')]:_0x2e58db[_0x2c39('0x34')];_0x1d7b4d[_0x2c39('0x3d')]=qs['sort'](_0x16a19b[_0x2c39('0x36')][_0x2c39('0x3e')]);_0x1d7b4d['where']=qs['filters'](_[_0x2c39('0x54')](_0x16a19b[_0x2c39('0x36')],_0x2e58db['filters']));if(_0x16a19b['query'][_0x2c39('0x41')]){_0x1d7b4d['where']=_['merge'](_0x1d7b4d[_0x2c39('0x3f')],{'$or':_[_0x2c39('0x2e')](_0x1d7b4d['attributes'],function(_0x1033de){var _0x13fb67={};_0x13fb67[_0x1033de]={'$like':'%'+_0x16a19b[_0x2c39('0x36')][_0x2c39('0x41')]+'%'};return _0x13fb67;})});}_0x1d7b4d=_['merge']({},_0x1d7b4d,_0x16a19b[_0x2c39('0x44')]);return _0x38c6a2[_0x2c39('0x58')](_0x1d7b4d);}})[_0x2c39('0x26')](function(_0x4240fe){if(_0x4240fe){_0x16e6b4=_0x4240fe['length'];if(!_0x16a19b['query'][_0x2c39('0x3b')]('nolimit')){_0x1d7b4d[_0x2c39('0x21')]=qs['limit'](_0x16a19b[_0x2c39('0x36')]['limit']);_0x1d7b4d[_0x2c39('0x1e')]=qs[_0x2c39('0x1e')](_0x16a19b[_0x2c39('0x36')][_0x2c39('0x1e')]);}return _0x38c6a2[_0x2c39('0x58')](_0x1d7b4d);}})['then'](function(_0x253a8f){if(_0x253a8f){return _0x253a8f?{'count':_0x16e6b4,'rows':_0x253a8f}:null;}})['then'](respondWithResult(_0x2a8d08,null))[_0x2c39('0x4c')](handleError(_0x2a8d08,null));};