Built motion from commit (unavailable).|2.3.1
[motion2.git] / server / api / cmHopper / cmHopper.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 _0xb5d3=['transaction','format','YYYY-MM-DD\x20HH:mm:ss','direction','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','literal','DESC','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','UPDATE','CmCompany','Company','CmList','List','VoiceQueue','dialActive','getOpenContacts','isNumber','html-pdf','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','json','count','limit','apply','reject','save','then','error','stack','name','index','CmHopper','rawAttributes','model','keys','query','filters','intersection','$and','$or','$gt','$gte','$lt','$lte','$eq','$notBetween','$notIn','$like','$notLike','$iLike','$notILike','$contains','$contained','$any','attributes','fields','length','hasOwnProperty','nolimit','offset','sort','pick','where','merge','map','key','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','update','describe','destroy','VoiceQueueId','CampaignId','Campaign','omit','dataValues','createdAt','updatedAt','deleted','user','UserId','deletedat','phone','campaigntype','CmContact','ContactId','firstName','lastName','isNil','calleridname','finally','getPreview','getVoiceQueues','outbound','dialOrderByScheduledAt','sequelize'];(function(_0x470f62,_0x103ee2){var _0x9c64cb=function(_0x24c759){while(--_0x24c759){_0x470f62['push'](_0x470f62['shift']());}};_0x9c64cb(++_0x103ee2);}(_0xb5d3,0x1a8));var _0x3b5d=function(_0x128450,_0x5869ba){_0x128450=_0x128450-0x0;var _0x4d80ed=_0xb5d3[_0x128450];return _0x4d80ed;};'use strict';var pdf=require(_0x3b5d('0x0'));var emlformat=require(_0x3b5d('0x1'));var rimraf=require('rimraf');var zipdir=require(_0x3b5d('0x2'));var jsonpatch=require(_0x3b5d('0x3'));var rp=require(_0x3b5d('0x4'));var moment=require('moment');var BPromise=require(_0x3b5d('0x5'));var Mustache=require(_0x3b5d('0x6'));var util=require(_0x3b5d('0x7'));var path=require('path');var sox=require(_0x3b5d('0x8'));var csv=require(_0x3b5d('0x9'));var ejs=require(_0x3b5d('0xa'));var fs=require('fs');var _=require(_0x3b5d('0xb'));var squel=require(_0x3b5d('0xc'));var crypto=require(_0x3b5d('0xd'));var jsforce=require(_0x3b5d('0xe'));var deskjs=require(_0x3b5d('0xf'));var toCsv=require(_0x3b5d('0x9'));var querystring=require('querystring');var Papa=require(_0x3b5d('0x10'));var authService=require('../../components/auth/service');var hardwareService=require('../../config/license/hardware');var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require(_0x3b5d('0x11'))('api');var utils=require(_0x3b5d('0x12'));var config=require('../../config/environment');var db=require(_0x3b5d('0x13'))['db'];function respondWithStatusCode(_0x57f22f,_0x1ae0b6){_0x1ae0b6=_0x1ae0b6||0xcc;return function(_0x51ee85){if(_0x51ee85){return _0x57f22f[_0x3b5d('0x14')](_0x1ae0b6);}return _0x57f22f[_0x3b5d('0x15')](_0x1ae0b6)[_0x3b5d('0x16')]();};}function respondWithResult(_0x5869d2,_0x31b4a3){_0x31b4a3=_0x31b4a3||0xc8;return function(_0x5512fd){if(_0x5512fd){return _0x5869d2[_0x3b5d('0x15')](_0x31b4a3)[_0x3b5d('0x17')](_0x5512fd);}};}function respondWithFilteredResult(_0xbdadb2,_0x486baa){return function(_0x6904a4){if(_0x6904a4){var _0x365688=_0x6904a4[_0x3b5d('0x18')],_0x10ea4b=_0x486baa['offset'],_0x3ea0f4=_0x486baa['offset']+_0x486baa[_0x3b5d('0x19')],_0x482396;if(_0x3ea0f4>=_0x365688){_0x3ea0f4=_0x365688;_0x482396=0xc8;}else{_0x482396=0xce;}_0xbdadb2['status'](_0x482396);return _0xbdadb2['set']('Content-Range',_0x10ea4b+'-'+_0x3ea0f4+'/'+_0x365688)['json'](_0x6904a4);}return null;};}function patchUpdates(_0x5207cc){return function(_0x44ebc8){try{jsonpatch[_0x3b5d('0x1a')](_0x44ebc8,_0x5207cc,!![]);}catch(_0x2928d6){return BPromise[_0x3b5d('0x1b')](_0x2928d6);}return _0x44ebc8[_0x3b5d('0x1c')]();};}function saveUpdates(_0x4a68d6,_0x136f79){return function(_0x266ca5){if(_0x266ca5){return _0x266ca5['update'](_0x4a68d6)[_0x3b5d('0x1d')](function(_0x51274f){return _0x51274f;});}return null;};}function removeEntity(_0x559ffe,_0xbb0cd6){return function(_0x2c71c7){if(_0x2c71c7){return _0x2c71c7['destroy']()[_0x3b5d('0x1d')](function(){_0x559ffe[_0x3b5d('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x28adda,_0x376eb7){return function(_0x539296){if(!_0x539296){_0x28adda[_0x3b5d('0x14')](0x194);}return _0x539296;};}function handleError(_0x16159a,_0x4a4cd7){_0x4a4cd7=_0x4a4cd7||0x1f4;return function(_0x5b6a11){logger[_0x3b5d('0x1e')](_0x5b6a11[_0x3b5d('0x1f')]);if(_0x5b6a11[_0x3b5d('0x20')]){delete _0x5b6a11[_0x3b5d('0x20')];}_0x16159a[_0x3b5d('0x15')](_0x4a4cd7)['send'](_0x5b6a11);};}exports[_0x3b5d('0x21')]=function(_0xb9f5fd,_0x39e1a8){var _0x5047f9={},_0x5df434={},_0x49e799={'count':0x0,'rows':[]};var _0x1b98ae=db[_0x3b5d('0x22')][_0x3b5d('0x23')];_0x5df434[_0x3b5d('0x24')]=_[_0x3b5d('0x25')](_0x1b98ae);_0x5df434[_0x3b5d('0x26')]=_[_0x3b5d('0x25')](_0xb9f5fd[_0x3b5d('0x26')]);_0x5df434[_0x3b5d('0x27')]=_[_0x3b5d('0x28')](_0x5df434[_0x3b5d('0x24')],_0x5df434['query']);_0x5df434[_0x3b5d('0x27')]=_['concat'](_0x5df434[_0x3b5d('0x27')],[_0x3b5d('0x29'),_0x3b5d('0x2a'),_0x3b5d('0x2b'),_0x3b5d('0x2c'),_0x3b5d('0x2d'),_0x3b5d('0x2e'),'$ne',_0x3b5d('0x2f'),'$not','$between',_0x3b5d('0x30'),'$in',_0x3b5d('0x31'),_0x3b5d('0x32'),_0x3b5d('0x33'),_0x3b5d('0x34'),_0x3b5d('0x35'),_0x3b5d('0x32'),'$overlap',_0x3b5d('0x36'),_0x3b5d('0x37'),_0x3b5d('0x38')]);_0x5047f9[_0x3b5d('0x39')]=_[_0x3b5d('0x28')](_0x5df434[_0x3b5d('0x24')],qs[_0x3b5d('0x3a')](_0xb9f5fd[_0x3b5d('0x26')]['fields']));_0x5047f9[_0x3b5d('0x39')]=_0x5047f9[_0x3b5d('0x39')][_0x3b5d('0x3b')]?_0x5047f9['attributes']:_0x5df434[_0x3b5d('0x24')];if(!_0xb9f5fd['query'][_0x3b5d('0x3c')](_0x3b5d('0x3d'))){_0x5047f9[_0x3b5d('0x19')]=qs['limit'](_0xb9f5fd['query'][_0x3b5d('0x19')]);_0x5047f9['offset']=qs[_0x3b5d('0x3e')](_0xb9f5fd[_0x3b5d('0x26')][_0x3b5d('0x3e')]);}_0x5047f9['order']=qs['sort'](_0xb9f5fd[_0x3b5d('0x26')][_0x3b5d('0x3f')]);_0x5047f9['where']=qs[_0x3b5d('0x27')](_[_0x3b5d('0x40')](_0xb9f5fd['query'],_0x5df434[_0x3b5d('0x27')]));if(_0xb9f5fd[_0x3b5d('0x26')]['filter']){_0x5047f9[_0x3b5d('0x41')]=_[_0x3b5d('0x42')](_0x5047f9['where'],{'$or':_[_0x3b5d('0x43')](_0x1b98ae,function(_0x4cf141){if(_0x4cf141['type'][_0x3b5d('0x44')]!==_0x3b5d('0x45')){var _0x2e9114={};_0x2e9114[_0x4cf141['field']]={'$like':'%'+_0xb9f5fd['query']['filter']+'%'};return _0x2e9114;}})});}_0x5047f9=_[_0x3b5d('0x42')]({},_0x5047f9,_0xb9f5fd[_0x3b5d('0x46')]);var _0x32ecc1={'where':_0x5047f9[_0x3b5d('0x41')]};return db[_0x3b5d('0x22')][_0x3b5d('0x18')](_0x32ecc1)[_0x3b5d('0x1d')](function(_0x256ff4){_0x49e799[_0x3b5d('0x18')]=_0x256ff4;if(_0xb9f5fd[_0x3b5d('0x26')][_0x3b5d('0x47')]){_0x5047f9[_0x3b5d('0x48')]=[{'all':!![]}];}return db[_0x3b5d('0x22')][_0x3b5d('0x49')](_0x5047f9);})[_0x3b5d('0x1d')](function(_0x4a322b){_0x49e799['rows']=_0x4a322b;return _0x49e799;})[_0x3b5d('0x1d')](respondWithFilteredResult(_0x39e1a8,_0x5047f9))[_0x3b5d('0x4a')](handleError(_0x39e1a8,null));};exports[_0x3b5d('0x4b')]=function(_0x20137b,_0x2fcdf7){var _0x2f8d60={'raw':!![],'where':{'id':_0x20137b[_0x3b5d('0x4c')]['id']}},_0x536cc9={};_0x536cc9[_0x3b5d('0x24')]=_[_0x3b5d('0x25')](db[_0x3b5d('0x22')][_0x3b5d('0x23')]);_0x536cc9[_0x3b5d('0x26')]=_[_0x3b5d('0x25')](_0x20137b['query']);_0x536cc9[_0x3b5d('0x27')]=_['intersection'](_0x536cc9[_0x3b5d('0x24')],_0x536cc9[_0x3b5d('0x26')]);_0x2f8d60['attributes']=_[_0x3b5d('0x28')](_0x536cc9[_0x3b5d('0x24')],qs['fields'](_0x20137b[_0x3b5d('0x26')]['fields']));_0x2f8d60['attributes']=_0x2f8d60[_0x3b5d('0x39')][_0x3b5d('0x3b')]?_0x2f8d60[_0x3b5d('0x39')]:_0x536cc9[_0x3b5d('0x24')];if(_0x20137b['query'][_0x3b5d('0x47')]){_0x2f8d60[_0x3b5d('0x48')]=[{'all':!![]}];}_0x2f8d60=_[_0x3b5d('0x42')]({},_0x2f8d60,_0x20137b[_0x3b5d('0x46')]);return db[_0x3b5d('0x22')][_0x3b5d('0x4d')](_0x2f8d60)['then'](handleEntityNotFound(_0x2fcdf7,null))[_0x3b5d('0x1d')](respondWithResult(_0x2fcdf7,null))[_0x3b5d('0x4a')](handleError(_0x2fcdf7,null));};exports['create']=function(_0xe221c5,_0x8074bd){return db[_0x3b5d('0x22')][_0x3b5d('0x4e')](_0xe221c5[_0x3b5d('0x4f')],{})[_0x3b5d('0x1d')](respondWithResult(_0x8074bd,0xc9))['catch'](handleError(_0x8074bd,null));};exports[_0x3b5d('0x50')]=function(_0x9af657,_0x16e28e){if(_0x9af657[_0x3b5d('0x4f')]['id']){delete _0x9af657[_0x3b5d('0x4f')]['id'];}return db[_0x3b5d('0x22')][_0x3b5d('0x4d')]({'where':{'id':_0x9af657['params']['id']}})[_0x3b5d('0x1d')](handleEntityNotFound(_0x16e28e,null))['then'](saveUpdates(_0x9af657[_0x3b5d('0x4f')],null))[_0x3b5d('0x1d')](respondWithResult(_0x16e28e,null))[_0x3b5d('0x4a')](handleError(_0x16e28e,null));};exports[_0x3b5d('0x51')]=function(_0x28a71d,_0x4e16c5){return db[_0x3b5d('0x22')][_0x3b5d('0x51')]()['then'](respondWithResult(_0x4e16c5,null))[_0x3b5d('0x4a')](handleError(_0x4e16c5,null));};exports[_0x3b5d('0x52')]=function(_0x12dbe4,_0x19623f){var _0x53a134;return db[_0x3b5d('0x22')][_0x3b5d('0x4d')]({'where':{'id':_0x12dbe4[_0x3b5d('0x4c')]['id']}})[_0x3b5d('0x1d')](handleEntityNotFound(_0x19623f,null))['then'](function(_0x50af6f){if(_0x50af6f){return _0x50af6f[_0x3b5d('0x52')]()[_0x3b5d('0x1d')](function(_0xe8d4c1){return _0xe8d4c1;});}})[_0x3b5d('0x1d')](function(_0x3219d0){_0x53a134=_0x3219d0;if(_0x3219d0){if(_0x3219d0[_0x3b5d('0x53')]||_0x3219d0[_0x3b5d('0x54')]){return db[_0x3219d0['VoiceQueueId']?'VoiceQueue':_0x3b5d('0x55')][_0x3b5d('0x4d')]({'where':{'id':_0x3219d0[_0x3b5d('0x53')]?_0x3219d0[_0x3b5d('0x53')]:_0x3219d0[_0x3b5d('0x54')]},'attributes':['id',_0x3b5d('0x20')],'raw':!![]});}}})[_0x3b5d('0x1d')](function(_0x580a11){var _0xa0aa0a={};if(_0x580a11){_['merge'](_0xa0aa0a,_[_0x3b5d('0x56')](_0x53a134[_0x3b5d('0x57')],[_0x3b5d('0x58'),_0x3b5d('0x59'),'id']));_0xa0aa0a['state']=0x15;_0xa0aa0a['statedesc']=_0x3b5d('0x5a');_0xa0aa0a['campaign']=_0x580a11['name'];_0xa0aa0a['membername']=_0x12dbe4[_0x3b5d('0x5b')][_0x3b5d('0x20')];_0xa0aa0a[_0x3b5d('0x5c')]=_0x12dbe4[_0x3b5d('0x5b')]['id'];_0xa0aa0a['deleted']=!![];_0xa0aa0a[_0x3b5d('0x5d')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0xa0aa0a['calleridnum']=_0x53a134[_0x3b5d('0x5e')];_0xa0aa0a[_0x3b5d('0x5f')]=_0x53a134['VoiceQueueId']?'queue':'ivr';return db[_0x3b5d('0x60')][_0x3b5d('0x4d')]({'where':{'id':_0xa0aa0a[_0x3b5d('0x61')]},'attributes':[_0x3b5d('0x62'),_0x3b5d('0x63')]})[_0x3b5d('0x1d')](function(_0x5c1376){if(!_[_0x3b5d('0x64')](_0x19623f)&&!_['isNil'](_0x5c1376['firstName'])){_0xa0aa0a[_0x3b5d('0x65')]=_0x5c1376['firstName'];if(!_['isNil'](_0x5c1376[_0x3b5d('0x63')])){_0xa0aa0a['calleridname']+='\x20'+_0x5c1376[_0x3b5d('0x63')];}}})[_0x3b5d('0x66')](function(){return db['CmHopperFinal']['create'](_0xa0aa0a);});}})['then'](function(){return _0x19623f[_0x3b5d('0x15')](0xcc)[_0x3b5d('0x16')]();})[_0x3b5d('0x4a')](handleError(_0x19623f,null));};exports[_0x3b5d('0x67')]=function(_0x169dcd,_0x4620c3,_0x331428){var _0x460bd8=[];return db['CmContact'][_0x3b5d('0x51')]()[_0x3b5d('0x1d')](function(_0x20888a){_0x460bd8=_['keys'](_0x20888a);return _0x169dcd[_0x3b5d('0x5b')][_0x3b5d('0x68')]({'where':{'type':_0x3b5d('0x69'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id',_0x3b5d('0x6a')],'raw':!![]});})[_0x3b5d('0x1d')](function(_0x5124e0){if(_0x5124e0&&_0x5124e0[_0x3b5d('0x3b')]){return db[_0x3b5d('0x6b')][_0x3b5d('0x6c')](function(_0x194a4b){var _0x1053a8={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x3b5d('0x6d')](_0x3b5d('0x6e'))},'VoiceQueueId':{'$in':_[_0x3b5d('0x43')](_0x5124e0,'id')},'$or':[{'UserId':null},{'UserId':_0x169dcd[_0x3b5d('0x5b')]['id']}]};var _0x21a786=[];if(_0x169dcd[_0x3b5d('0x4f')][_0x3b5d('0x6f')]&&_0x169dcd[_0x3b5d('0x4f')][_0x3b5d('0x6f')]===_0x3b5d('0x70')){if(!_[_0x3b5d('0x71')](_0x169dcd[_0x3b5d('0x4f')][_0x3b5d('0x72')])){_0x1053a8['id']={'$in':_0x169dcd[_0x3b5d('0x4f')]['hopperIds']};}_0x21a786=[[_0x3b5d('0x73'),_0x3b5d('0x74')],[_0x3b5d('0x75'),_0x5124e0[0x0][_0x3b5d('0x6a')]===_0x3b5d('0x74')?'DESC':'ASC'],db[_0x3b5d('0x6b')][_0x3b5d('0x76')]('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id',_0x3b5d('0x77')]];}else{if(!_[_0x3b5d('0x71')](_0x169dcd['body'][_0x3b5d('0x72')])){_0x1053a8['id']={'$notIn':_0x169dcd[_0x3b5d('0x4f')][_0x3b5d('0x72')]};}_0x21a786=[[_0x3b5d('0x73'),_0x3b5d('0x77')],[_0x3b5d('0x75'),_0x5124e0[0x0]['dialOrderByScheduledAt']],db[_0x3b5d('0x6b')][_0x3b5d('0x76')](_0x3b5d('0x78')),['id','ASC']];}return db[_0x3b5d('0x22')][_0x3b5d('0x79')]({'attributes':['id',_0x3b5d('0x7a')],'where':_0x1053a8,'order':_0x21a786,'transaction':_0x194a4b,'lock':_0x194a4b[_0x3b5d('0x7b')][_0x3b5d('0x7c')],'include':[{'model':db[_0x3b5d('0x60')],'as':'Contact','attributes':_0x460bd8,'include':[{'model':db[_0x3b5d('0x7d')],'as':_0x3b5d('0x7e'),'attributes':['id',_0x3b5d('0x20')]}]},{'model':db[_0x3b5d('0x7f')],'as':_0x3b5d('0x80'),'attributes':['id',_0x3b5d('0x20')]},{'model':db[_0x3b5d('0x81')],'as':'Queue','attributes':['id',_0x3b5d('0x20'),_0x3b5d('0x82')]}]})[_0x3b5d('0x1d')](function(_0xaa59db){if(_0xaa59db){return _0xaa59db['update']({'UserId':_0x169dcd[_0x3b5d('0x5b')]['id']},{'transaction':_0x194a4b});}});});}})[_0x3b5d('0x1d')](handleEntityNotFound(_0x4620c3,null))[_0x3b5d('0x1d')](respondWithResult(_0x4620c3,null))['catch'](handleError(_0x4620c3,null));};exports[_0x3b5d('0x83')]=function(_0x3df6d3,_0x2e0305,_0x7e3389){return _0x3df6d3['user'][_0x3b5d('0x68')]({'where':{'type':_0x3b5d('0x69'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id'],'raw':!![]})['then'](function(_0x48b1af){if(_0x48b1af&&_0x48b1af['length']){return db[_0x3b5d('0x22')][_0x3b5d('0x18')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x3b5d('0x6d')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_['map'](_0x48b1af,'id')},'$or':[{'UserId':null},{'UserId':_0x3df6d3[_0x3b5d('0x5b')]['id']}]}});}return 0x0;})['then'](function(_0x33243f){if(!_['isNil'](_0x33243f)&&_[_0x3b5d('0x84')](_0x33243f)){return _0x2e0305[_0x3b5d('0x15')](0xc8)[_0x3b5d('0x17')]({'contacts':_0x33243f});}else{logger[_0x3b5d('0x1e')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x3b5d('0x83'),0x194,'entity\x20not\x20found');_0x2e0305[_0x3b5d('0x14')](0x194);}})[_0x3b5d('0x4a')](handleError(_0x2e0305,null));};