86b5a9cc19d8dbd0dafc756fb07b53fe78e7e8f5
[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 _0x45f7=['map','Automation','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','merge','VIRTUAL','filter','includeAll','findAll','catch','show','keys','find','create','body','params','addConditions','Condition','ids','omit','getConditions','findOne','order','pick','options','addActions','Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','then','sendStatus','error','stack','name','send','index'];(function(_0x3e69fd,_0x33192e){var _0xa1031c=function(_0x1d5ce9){while(--_0x1d5ce9){_0x3e69fd['push'](_0x3e69fd['shift']());}};_0xa1031c(++_0x33192e);}(_0x45f7,0xdd));var _0x745f=function(_0x3b5ad9,_0x223867){_0x3b5ad9=_0x3b5ad9-0x0;var _0x611ae9=_0x45f7[_0x3b5ad9];return _0x611ae9;};'use strict';var emlformat=require(_0x745f('0x0'));var rimraf=require(_0x745f('0x1'));var zipdir=require(_0x745f('0x2'));var jsonpatch=require(_0x745f('0x3'));var rp=require(_0x745f('0x4'));var moment=require(_0x745f('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x745f('0x6'));var util=require(_0x745f('0x7'));var path=require(_0x745f('0x8'));var sox=require(_0x745f('0x9'));var csv=require('to-csv');var ejs=require(_0x745f('0xa'));var fs=require('fs');var fs_extra=require(_0x745f('0xb'));var _=require(_0x745f('0xc'));var squel=require(_0x745f('0xd'));var crypto=require(_0x745f('0xe'));var jsforce=require(_0x745f('0xf'));var deskjs=require(_0x745f('0x10'));var toCsv=require(_0x745f('0x11'));var querystring=require(_0x745f('0x12'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x745f('0x13'));var qs=require(_0x745f('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x745f('0x15'));var logger=require(_0x745f('0x16'))(_0x745f('0x17'));var utils=require(_0x745f('0x18'));var config=require(_0x745f('0x19'));var licenseUtil=require(_0x745f('0x1a'));var db=require(_0x745f('0x1b'))['db'];function respondWithStatusCode(_0xa26244,_0x24db77){_0x24db77=_0x24db77||0xcc;return function(_0x480fbd){if(_0x480fbd){return _0xa26244['sendStatus'](_0x24db77);}return _0xa26244['status'](_0x24db77)[_0x745f('0x1c')]();};}function respondWithResult(_0x342ee8,_0x54b203){_0x54b203=_0x54b203||0xc8;return function(_0x15e265){if(_0x15e265){return _0x342ee8[_0x745f('0x1d')](_0x54b203)['json'](_0x15e265);}};}function respondWithFilteredResult(_0xc0c79d,_0x27b637){return function(_0x366ff6){if(_0x366ff6){var _0x685bd0=typeof _0x27b637[_0x745f('0x1e')]===_0x745f('0x1f')&&typeof _0x27b637[_0x745f('0x20')]===_0x745f('0x1f');var _0x1f8457=_0x366ff6['count'];var _0xfa6e10=_0x685bd0?0x0:_0x27b637[_0x745f('0x1e')];var _0x2d3665=_0x685bd0?_0x366ff6[_0x745f('0x21')]:_0x27b637[_0x745f('0x1e')]+_0x27b637[_0x745f('0x20')];var _0x37a1cd;if(_0x2d3665>=_0x1f8457){_0x2d3665=_0x1f8457;_0x37a1cd=0xc8;}else{_0x37a1cd=0xce;}_0xc0c79d[_0x745f('0x1d')](_0x37a1cd);return _0xc0c79d[_0x745f('0x22')](_0x745f('0x23'),_0xfa6e10+'-'+_0x2d3665+'/'+_0x1f8457)[_0x745f('0x24')](_0x366ff6);}return null;};}function patchUpdates(_0x2bbea2){return function(_0x59d71e){try{jsonpatch[_0x745f('0x25')](_0x59d71e,_0x2bbea2,!![]);}catch(_0x9935db){return BPromise[_0x745f('0x26')](_0x9935db);}return _0x59d71e[_0x745f('0x27')]();};}function saveUpdates(_0x426b67,_0x24ade3){return function(_0x20fdb3){if(_0x20fdb3){return _0x20fdb3[_0x745f('0x28')](_0x426b67)['then'](function(_0x54e9b3){return _0x54e9b3;});}return null;};}function removeEntity(_0x4cf567,_0x26a1bb){return function(_0xa172a9){if(_0xa172a9){return _0xa172a9[_0x745f('0x29')]()[_0x745f('0x2a')](function(){_0x4cf567['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xcd90f9,_0x36d2dc){return function(_0xd31505){if(!_0xd31505){_0xcd90f9[_0x745f('0x2b')](0x194);}return _0xd31505;};}function handleError(_0x2858ca,_0x242b41){_0x242b41=_0x242b41||0x1f4;return function(_0x9b9e9b){logger[_0x745f('0x2c')](_0x9b9e9b[_0x745f('0x2d')]);if(_0x9b9e9b[_0x745f('0x2e')]){delete _0x9b9e9b['name'];}_0x2858ca[_0x745f('0x1d')](_0x242b41)[_0x745f('0x2f')](_0x9b9e9b);};}exports[_0x745f('0x30')]=function(_0x169f42,_0x3ead16){var _0x58c26a={},_0x555cff={},_0x43df1e={'count':0x0,'rows':[]};var _0x4a35a4=_[_0x745f('0x31')](db[_0x745f('0x32')][_0x745f('0x33')],function(_0x181ffa){return{'name':_0x181ffa[_0x745f('0x34')],'type':_0x181ffa[_0x745f('0x35')][_0x745f('0x36')]};});_0x555cff[_0x745f('0x37')]=_[_0x745f('0x31')](_0x4a35a4,_0x745f('0x2e'));_0x555cff['query']=_['keys'](_0x169f42[_0x745f('0x38')]);_0x555cff[_0x745f('0x39')]=_[_0x745f('0x3a')](_0x555cff[_0x745f('0x37')],_0x555cff[_0x745f('0x38')]);_0x58c26a[_0x745f('0x3b')]=_[_0x745f('0x3a')](_0x555cff['model'],qs['fields'](_0x169f42[_0x745f('0x38')][_0x745f('0x3c')]));_0x58c26a[_0x745f('0x3b')]=_0x58c26a[_0x745f('0x3b')][_0x745f('0x3d')]?_0x58c26a[_0x745f('0x3b')]:_0x555cff[_0x745f('0x37')];if(!_0x169f42[_0x745f('0x38')][_0x745f('0x3e')](_0x745f('0x3f'))){_0x58c26a[_0x745f('0x20')]=qs['limit'](_0x169f42[_0x745f('0x38')][_0x745f('0x20')]);_0x58c26a[_0x745f('0x1e')]=qs[_0x745f('0x1e')](_0x169f42['query'][_0x745f('0x1e')]);}_0x58c26a['order']=qs[_0x745f('0x40')](_0x169f42['query'][_0x745f('0x40')]);_0x58c26a['where']=qs[_0x745f('0x39')](_['pick'](_0x169f42[_0x745f('0x38')],_0x555cff['filters']),_0x4a35a4);if(_0x169f42['query']['filter']){_0x58c26a[_0x745f('0x41')]=_[_0x745f('0x42')](_0x58c26a['where'],{'$or':_['map'](_0x4a35a4,function(_0x4cbb39){if(_0x4cbb39['type']!==_0x745f('0x43')){var _0xde108d={};_0xde108d[_0x4cbb39[_0x745f('0x2e')]]={'$like':'%'+_0x169f42[_0x745f('0x38')][_0x745f('0x44')]+'%'};return _0xde108d;}})});}_0x58c26a=_['merge']({},_0x58c26a,_0x169f42['options']);var _0x1de5d2={'where':_0x58c26a[_0x745f('0x41')]};return db[_0x745f('0x32')]['count'](_0x1de5d2)[_0x745f('0x2a')](function(_0x4060d2){_0x43df1e[_0x745f('0x21')]=_0x4060d2;if(_0x169f42['query'][_0x745f('0x45')]){_0x58c26a['include']=[{'all':!![]}];}return db[_0x745f('0x32')][_0x745f('0x46')](_0x58c26a);})[_0x745f('0x2a')](function(_0x4ad4da){_0x43df1e['rows']=_0x4ad4da;return _0x43df1e;})['then'](respondWithFilteredResult(_0x3ead16,_0x58c26a))[_0x745f('0x47')](handleError(_0x3ead16,null));};exports[_0x745f('0x48')]=function(_0x3a46ce,_0x22024e){var _0x41f70b={'raw':![],'where':{'id':_0x3a46ce['params']['id']}},_0x2b4a88={};_0x2b4a88[_0x745f('0x37')]=_[_0x745f('0x49')](db[_0x745f('0x32')][_0x745f('0x33')]);_0x2b4a88[_0x745f('0x38')]=_[_0x745f('0x49')](_0x3a46ce[_0x745f('0x38')]);_0x2b4a88[_0x745f('0x39')]=_[_0x745f('0x3a')](_0x2b4a88['model'],_0x2b4a88[_0x745f('0x38')]);_0x41f70b[_0x745f('0x3b')]=_['intersection'](_0x2b4a88[_0x745f('0x37')],qs[_0x745f('0x3c')](_0x3a46ce[_0x745f('0x38')]['fields']));_0x41f70b['attributes']=_0x41f70b['attributes']['length']?_0x41f70b[_0x745f('0x3b')]:_0x2b4a88[_0x745f('0x37')];if(_0x3a46ce[_0x745f('0x38')][_0x745f('0x45')]){_0x41f70b['include']=[{'all':!![]}];}_0x41f70b=_[_0x745f('0x42')]({},_0x41f70b,_0x3a46ce['options']);return db[_0x745f('0x32')][_0x745f('0x4a')](_0x41f70b)[_0x745f('0x2a')](handleEntityNotFound(_0x22024e,null))[_0x745f('0x2a')](respondWithResult(_0x22024e,null))[_0x745f('0x47')](handleError(_0x22024e,null));};exports[_0x745f('0x4b')]=function(_0x1c4e6d,_0x27b2b0){return db[_0x745f('0x32')][_0x745f('0x4b')](_0x1c4e6d[_0x745f('0x4c')],{})[_0x745f('0x2a')](respondWithResult(_0x27b2b0,0xc9))[_0x745f('0x47')](handleError(_0x27b2b0,null));};exports[_0x745f('0x28')]=function(_0x2c45d3,_0x713f50){if(_0x2c45d3[_0x745f('0x4c')]['id']){delete _0x2c45d3[_0x745f('0x4c')]['id'];}return db['Automation'][_0x745f('0x4a')]({'where':{'id':_0x2c45d3[_0x745f('0x4d')]['id']}})[_0x745f('0x2a')](handleEntityNotFound(_0x713f50,null))[_0x745f('0x2a')](saveUpdates(_0x2c45d3['body'],null))['then'](respondWithResult(_0x713f50,null))[_0x745f('0x47')](handleError(_0x713f50,null));};exports[_0x745f('0x29')]=function(_0x5e1980,_0x4cdb60){return db[_0x745f('0x32')][_0x745f('0x4a')]({'where':{'id':_0x5e1980[_0x745f('0x4d')]['id']}})[_0x745f('0x2a')](handleEntityNotFound(_0x4cdb60,null))[_0x745f('0x2a')](removeEntity(_0x4cdb60,null))[_0x745f('0x47')](handleError(_0x4cdb60,null));};exports[_0x745f('0x4e')]=function(_0x28de47,_0x8dd7d8,_0x5705d9){return db[_0x745f('0x4f')][_0x745f('0x4a')]({'where':{'id':_0x28de47[_0x745f('0x4d')]['id']}})[_0x745f('0x2a')](handleEntityNotFound(_0x8dd7d8,null))[_0x745f('0x2a')](function(_0x3bfced){if(_0x3bfced){return _0x3bfced[_0x745f('0x4e')](_0x28de47[_0x745f('0x4c')][_0x745f('0x50')],_[_0x745f('0x51')](_0x28de47['body'],[_0x745f('0x50'),'id'])||{});}})[_0x745f('0x2a')](respondWithResult(_0x8dd7d8,null))[_0x745f('0x47')](handleError(_0x8dd7d8,null));};exports[_0x745f('0x52')]=function(_0x2dbc47,_0x4136a0,_0x343ab2){var _0x3a0956={};var _0x2418aa={};var _0x404228;var _0x1a6632;return db[_0x745f('0x32')][_0x745f('0x53')]({'where':{'id':_0x2dbc47[_0x745f('0x4d')]['id']}})[_0x745f('0x2a')](handleEntityNotFound(_0x4136a0,null))[_0x745f('0x2a')](function(_0x43dc3c){if(_0x43dc3c){_0x404228=_0x43dc3c;_0x2418aa['model']=_[_0x745f('0x49')](db[_0x745f('0x4f')]['rawAttributes']);_0x2418aa[_0x745f('0x38')]=_[_0x745f('0x49')](_0x2dbc47[_0x745f('0x38')]);_0x2418aa[_0x745f('0x39')]=_[_0x745f('0x3a')](_0x2418aa[_0x745f('0x37')],_0x2418aa[_0x745f('0x38')]);_0x3a0956[_0x745f('0x3b')]=_['intersection'](_0x2418aa[_0x745f('0x37')],qs['fields'](_0x2dbc47[_0x745f('0x38')][_0x745f('0x3c')]));_0x3a0956[_0x745f('0x3b')]=_0x3a0956[_0x745f('0x3b')]['length']?_0x3a0956[_0x745f('0x3b')]:_0x2418aa[_0x745f('0x37')];_0x3a0956[_0x745f('0x54')]=qs[_0x745f('0x40')](_0x2dbc47[_0x745f('0x38')][_0x745f('0x40')]);_0x3a0956['where']=qs[_0x745f('0x39')](_[_0x745f('0x55')](_0x2dbc47[_0x745f('0x38')],_0x2418aa[_0x745f('0x39')]));if(_0x2dbc47['query'][_0x745f('0x44')]){_0x3a0956['where']=_[_0x745f('0x42')](_0x3a0956[_0x745f('0x41')],{'$or':_['map'](_0x3a0956['attributes'],function(_0x4f62c4){var _0x431cf0={};_0x431cf0[_0x4f62c4]={'$like':'%'+_0x2dbc47[_0x745f('0x38')][_0x745f('0x44')]+'%'};return _0x431cf0;})});}_0x3a0956=_[_0x745f('0x42')]({},_0x3a0956,_0x2dbc47[_0x745f('0x56')]);return _0x404228[_0x745f('0x52')](_0x3a0956);}})[_0x745f('0x2a')](function(_0x5c9669){if(_0x5c9669){_0x1a6632=_0x5c9669[_0x745f('0x3d')];if(!_0x2dbc47[_0x745f('0x38')][_0x745f('0x3e')](_0x745f('0x3f'))){_0x3a0956[_0x745f('0x20')]=qs['limit'](_0x2dbc47[_0x745f('0x38')][_0x745f('0x20')]);_0x3a0956[_0x745f('0x1e')]=qs[_0x745f('0x1e')](_0x2dbc47['query'][_0x745f('0x1e')]);}return _0x404228['getConditions'](_0x3a0956);}})['then'](function(_0x35103c){if(_0x35103c){return _0x35103c?{'count':_0x1a6632,'rows':_0x35103c}:null;}})['then'](respondWithResult(_0x4136a0,null))[_0x745f('0x47')](handleError(_0x4136a0,null));};exports[_0x745f('0x57')]=function(_0x42329d,_0xe0b9c2,_0x2b79bc){return db[_0x745f('0x58')][_0x745f('0x4a')]({'where':{'id':_0x42329d[_0x745f('0x4d')]['id']}})[_0x745f('0x2a')](handleEntityNotFound(_0xe0b9c2,null))[_0x745f('0x2a')](function(_0x2999d3){if(_0x2999d3){return _0x2999d3[_0x745f('0x57')](_0x42329d[_0x745f('0x4c')]['ids'],_[_0x745f('0x51')](_0x42329d[_0x745f('0x4c')],[_0x745f('0x50'),'id'])||{});}})[_0x745f('0x2a')](respondWithResult(_0xe0b9c2,null))[_0x745f('0x47')](handleError(_0xe0b9c2,null));};exports[_0x745f('0x59')]=function(_0x53bc49,_0x2e87fe,_0x9f5303){var _0x47c415={};var _0x2b1c3a={};var _0x20e50d;var _0x2a52f2;return db[_0x745f('0x32')][_0x745f('0x53')]({'where':{'id':_0x53bc49['params']['id']}})[_0x745f('0x2a')](handleEntityNotFound(_0x2e87fe,null))[_0x745f('0x2a')](function(_0x410091){if(_0x410091){_0x20e50d=_0x410091;_0x2b1c3a[_0x745f('0x37')]=_['keys'](db[_0x745f('0x58')][_0x745f('0x33')]);_0x2b1c3a[_0x745f('0x38')]=_['keys'](_0x53bc49['query']);_0x2b1c3a[_0x745f('0x39')]=_[_0x745f('0x3a')](_0x2b1c3a['model'],_0x2b1c3a[_0x745f('0x38')]);_0x47c415[_0x745f('0x3b')]=_[_0x745f('0x3a')](_0x2b1c3a[_0x745f('0x37')],qs[_0x745f('0x3c')](_0x53bc49['query'][_0x745f('0x3c')]));_0x47c415[_0x745f('0x3b')]=_0x47c415[_0x745f('0x3b')][_0x745f('0x3d')]?_0x47c415[_0x745f('0x3b')]:_0x2b1c3a['model'];_0x47c415[_0x745f('0x54')]=qs[_0x745f('0x40')](_0x53bc49[_0x745f('0x38')][_0x745f('0x40')]);_0x47c415['where']=qs['filters'](_[_0x745f('0x55')](_0x53bc49[_0x745f('0x38')],_0x2b1c3a['filters']));if(_0x53bc49[_0x745f('0x38')][_0x745f('0x44')]){_0x47c415[_0x745f('0x41')]=_[_0x745f('0x42')](_0x47c415[_0x745f('0x41')],{'$or':_['map'](_0x47c415['attributes'],function(_0x4ceb83){var _0x25198b={};_0x25198b[_0x4ceb83]={'$like':'%'+_0x53bc49[_0x745f('0x38')][_0x745f('0x44')]+'%'};return _0x25198b;})});}_0x47c415=_[_0x745f('0x42')]({},_0x47c415,_0x53bc49['options']);return _0x20e50d[_0x745f('0x59')](_0x47c415);}})['then'](function(_0x1e7bc9){if(_0x1e7bc9){_0x2a52f2=_0x1e7bc9[_0x745f('0x3d')];if(!_0x53bc49[_0x745f('0x38')][_0x745f('0x3e')](_0x745f('0x3f'))){_0x47c415[_0x745f('0x20')]=qs[_0x745f('0x20')](_0x53bc49[_0x745f('0x38')][_0x745f('0x20')]);_0x47c415[_0x745f('0x1e')]=qs['offset'](_0x53bc49[_0x745f('0x38')][_0x745f('0x1e')]);}return _0x20e50d[_0x745f('0x59')](_0x47c415);}})[_0x745f('0x2a')](function(_0x2eb27c){if(_0x2eb27c){return _0x2eb27c?{'count':_0x2a52f2,'rows':_0x2eb27c}:null;}})['then'](respondWithResult(_0x2e87fe,null))[_0x745f('0x47')](handleError(_0x2e87fe,null));};