Built motion from commit (unavailable).|2.4.3
[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 _0x066b=['VoiceQueueId','CampaignId','VoiceQueue','Campaign','omit','createdAt','updatedAt','state','deleted','campaign','membername','user','UserId','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','queue','ivr','CmContact','ContactId','firstName','isNil','lastName','calleridname','finally','CmHopperFinal','getPreview','outbound','preview','dialOrderByScheduledAt','sequelize','transaction','map','direction','prev','isEmpty','hopperIds','ASC','scheduledAt','DESC','COALESCE(CmHopper.UserId,\x200)\x20ASC','priority','literal','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','UPDATE','Contact','CmCompany','Company','CmList','List','getOpenContacts','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','eml-format','fast-json-patch','request-promise','moment','mustache','util','path','sox','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','end','status','json','count','offset','set','Content-Range','apply','save','then','destroy','sendStatus','stack','name','index','CmHopper','model','keys','filters','intersection','query','concat','$and','$or','$gt','$gte','$lt','$lte','$ne','$not','$between','$notIn','$notLike','$iLike','$notILike','$overlap','$contains','$contained','$any','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','type','key','VIRTUAL','field','options','includeAll','include','findAll','rows','show','params','rawAttributes','find','catch','create','body','update','describe'];(function(_0x29b609,_0x19d388){var _0x54c952=function(_0xb3c38d){while(--_0xb3c38d){_0x29b609['push'](_0x29b609['shift']());}};_0x54c952(++_0x19d388);}(_0x066b,0x15d));var _0xb066=function(_0x5a8473,_0x38aa21){_0x5a8473=_0x5a8473-0x0;var _0x5581b9=_0x066b[_0x5a8473];return _0x5581b9;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0xb066('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xb066('0x1'));var rp=require(_0xb066('0x2'));var moment=require(_0xb066('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xb066('0x4'));var util=require(_0xb066('0x5'));var path=require(_0xb066('0x6'));var sox=require(_0xb066('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var _=require(_0xb066('0x8'));var squel=require('squel');var crypto=require(_0xb066('0x9'));var jsforce=require(_0xb066('0xa'));var deskjs=require(_0xb066('0xb'));var toCsv=require(_0xb066('0xc'));var querystring=require(_0xb066('0xd'));var Papa=require(_0xb066('0xe'));var Redis=require('ioredis');var authService=require(_0xb066('0xf'));var qs=require(_0xb066('0x10'));var hardwareService=require(_0xb066('0x11'));var logger=require(_0xb066('0x12'))(_0xb066('0x13'));var utils=require(_0xb066('0x14'));var config=require(_0xb066('0x15'));var db=require(_0xb066('0x16'))['db'];function respondWithStatusCode(_0x5f195c,_0x4b7f2e){_0x4b7f2e=_0x4b7f2e||0xcc;return function(_0x39703d){if(_0x39703d){return _0x5f195c['sendStatus'](_0x4b7f2e);}return _0x5f195c['status'](_0x4b7f2e)[_0xb066('0x17')]();};}function respondWithResult(_0x80e597,_0x673f52){_0x673f52=_0x673f52||0xc8;return function(_0x5ae685){if(_0x5ae685){return _0x80e597[_0xb066('0x18')](_0x673f52)[_0xb066('0x19')](_0x5ae685);}};}function respondWithFilteredResult(_0x523a86,_0x2b5b23){return function(_0x5a17c4){if(_0x5a17c4){var _0x53836b=_0x5a17c4[_0xb066('0x1a')],_0x13d215=_0x2b5b23[_0xb066('0x1b')],_0x27cf66=_0x2b5b23[_0xb066('0x1b')]+_0x2b5b23['limit'],_0x2a4ff2;if(_0x27cf66>=_0x53836b){_0x27cf66=_0x53836b;_0x2a4ff2=0xc8;}else{_0x2a4ff2=0xce;}_0x523a86[_0xb066('0x18')](_0x2a4ff2);return _0x523a86[_0xb066('0x1c')](_0xb066('0x1d'),_0x13d215+'-'+_0x27cf66+'/'+_0x53836b)[_0xb066('0x19')](_0x5a17c4);}return null;};}function patchUpdates(_0x2a5535){return function(_0x32c804){try{jsonpatch[_0xb066('0x1e')](_0x32c804,_0x2a5535,!![]);}catch(_0x117613){return BPromise['reject'](_0x117613);}return _0x32c804[_0xb066('0x1f')]();};}function saveUpdates(_0x4c1e1d,_0x73bdaa){return function(_0x394489){if(_0x394489){return _0x394489['update'](_0x4c1e1d)[_0xb066('0x20')](function(_0x890db9){return _0x890db9;});}return null;};}function removeEntity(_0x30a523,_0x43e963){return function(_0x1a24ae){if(_0x1a24ae){return _0x1a24ae[_0xb066('0x21')]()[_0xb066('0x20')](function(){_0x30a523[_0xb066('0x18')](0xcc)[_0xb066('0x17')]();});}};}function handleEntityNotFound(_0x5b3dad,_0x5f3c05){return function(_0x505312){if(!_0x505312){_0x5b3dad[_0xb066('0x22')](0x194);}return _0x505312;};}function handleError(_0x5d5479,_0x5b705e){_0x5b705e=_0x5b705e||0x1f4;return function(_0x513174){logger['error'](_0x513174[_0xb066('0x23')]);if(_0x513174[_0xb066('0x24')]){delete _0x513174[_0xb066('0x24')];}_0x5d5479[_0xb066('0x18')](_0x5b705e)['send'](_0x513174);};}exports[_0xb066('0x25')]=function(_0x5c1855,_0x5c26f1){var _0x31ee86={},_0x14b06f={},_0x52fb99={'count':0x0,'rows':[]};var _0x2f8e0a=db[_0xb066('0x26')]['rawAttributes'];_0x14b06f[_0xb066('0x27')]=_[_0xb066('0x28')](_0x2f8e0a);_0x14b06f['query']=_['keys'](_0x5c1855['query']);_0x14b06f[_0xb066('0x29')]=_[_0xb066('0x2a')](_0x14b06f['model'],_0x14b06f[_0xb066('0x2b')]);_0x14b06f['filters']=_[_0xb066('0x2c')](_0x14b06f['filters'],[_0xb066('0x2d'),_0xb066('0x2e'),_0xb066('0x2f'),_0xb066('0x30'),_0xb066('0x31'),_0xb066('0x32'),_0xb066('0x33'),'$eq',_0xb066('0x34'),_0xb066('0x35'),'$notBetween','$in',_0xb066('0x36'),'$like',_0xb066('0x37'),_0xb066('0x38'),_0xb066('0x39'),'$like',_0xb066('0x3a'),_0xb066('0x3b'),_0xb066('0x3c'),_0xb066('0x3d')]);_0x31ee86['attributes']=_[_0xb066('0x2a')](_0x14b06f[_0xb066('0x27')],qs[_0xb066('0x3e')](_0x5c1855[_0xb066('0x2b')][_0xb066('0x3e')]));_0x31ee86[_0xb066('0x3f')]=_0x31ee86[_0xb066('0x3f')][_0xb066('0x40')]?_0x31ee86[_0xb066('0x3f')]:_0x14b06f[_0xb066('0x27')];if(!_0x5c1855['query'][_0xb066('0x41')](_0xb066('0x42'))){_0x31ee86[_0xb066('0x43')]=qs[_0xb066('0x43')](_0x5c1855[_0xb066('0x2b')]['limit']);_0x31ee86[_0xb066('0x1b')]=qs[_0xb066('0x1b')](_0x5c1855[_0xb066('0x2b')][_0xb066('0x1b')]);}_0x31ee86[_0xb066('0x44')]=qs['sort'](_0x5c1855[_0xb066('0x2b')][_0xb066('0x45')]);_0x31ee86[_0xb066('0x46')]=qs[_0xb066('0x29')](_[_0xb066('0x47')](_0x5c1855['query'],_0x14b06f['filters']));if(_0x5c1855[_0xb066('0x2b')][_0xb066('0x48')]){_0x31ee86[_0xb066('0x46')]=_[_0xb066('0x49')](_0x31ee86[_0xb066('0x46')],{'$or':_['map'](_0x2f8e0a,function(_0x5a5dc6){if(_0x5a5dc6[_0xb066('0x4a')][_0xb066('0x4b')]!==_0xb066('0x4c')){var _0x3ffa7b={};_0x3ffa7b[_0x5a5dc6[_0xb066('0x4d')]]={'$like':'%'+_0x5c1855[_0xb066('0x2b')][_0xb066('0x48')]+'%'};return _0x3ffa7b;}})});}_0x31ee86=_['merge']({},_0x31ee86,_0x5c1855[_0xb066('0x4e')]);var _0x151f05={'where':_0x31ee86['where']};return db['CmHopper'][_0xb066('0x1a')](_0x151f05)[_0xb066('0x20')](function(_0x2a8e4d){_0x52fb99[_0xb066('0x1a')]=_0x2a8e4d;if(_0x5c1855[_0xb066('0x2b')][_0xb066('0x4f')]){_0x31ee86[_0xb066('0x50')]=[{'all':!![]}];}return db['CmHopper'][_0xb066('0x51')](_0x31ee86);})[_0xb066('0x20')](function(_0x4c6432){_0x52fb99[_0xb066('0x52')]=_0x4c6432;return _0x52fb99;})[_0xb066('0x20')](respondWithFilteredResult(_0x5c26f1,_0x31ee86))['catch'](handleError(_0x5c26f1,null));};exports[_0xb066('0x53')]=function(_0x3bf265,_0x42a0bc){var _0x469329={'raw':!![],'where':{'id':_0x3bf265[_0xb066('0x54')]['id']}},_0x2ff238={};_0x2ff238[_0xb066('0x27')]=_[_0xb066('0x28')](db[_0xb066('0x26')][_0xb066('0x55')]);_0x2ff238['query']=_[_0xb066('0x28')](_0x3bf265['query']);_0x2ff238[_0xb066('0x29')]=_[_0xb066('0x2a')](_0x2ff238[_0xb066('0x27')],_0x2ff238[_0xb066('0x2b')]);_0x469329['attributes']=_[_0xb066('0x2a')](_0x2ff238[_0xb066('0x27')],qs[_0xb066('0x3e')](_0x3bf265[_0xb066('0x2b')][_0xb066('0x3e')]));_0x469329[_0xb066('0x3f')]=_0x469329[_0xb066('0x3f')][_0xb066('0x40')]?_0x469329[_0xb066('0x3f')]:_0x2ff238[_0xb066('0x27')];if(_0x3bf265[_0xb066('0x2b')]['includeAll']){_0x469329['include']=[{'all':!![]}];}_0x469329=_[_0xb066('0x49')]({},_0x469329,_0x3bf265[_0xb066('0x4e')]);return db[_0xb066('0x26')][_0xb066('0x56')](_0x469329)['then'](handleEntityNotFound(_0x42a0bc,null))[_0xb066('0x20')](respondWithResult(_0x42a0bc,null))[_0xb066('0x57')](handleError(_0x42a0bc,null));};exports[_0xb066('0x58')]=function(_0x586c34,_0x57bbb4){return db[_0xb066('0x26')][_0xb066('0x58')](_0x586c34[_0xb066('0x59')],{})[_0xb066('0x20')](respondWithResult(_0x57bbb4,0xc9))['catch'](handleError(_0x57bbb4,null));};exports[_0xb066('0x5a')]=function(_0x495df4,_0x28af43){if(_0x495df4[_0xb066('0x59')]['id']){delete _0x495df4[_0xb066('0x59')]['id'];}return db[_0xb066('0x26')][_0xb066('0x56')]({'where':{'id':_0x495df4['params']['id']}})['then'](handleEntityNotFound(_0x28af43,null))['then'](saveUpdates(_0x495df4[_0xb066('0x59')],null))[_0xb066('0x20')](respondWithResult(_0x28af43,null))['catch'](handleError(_0x28af43,null));};exports[_0xb066('0x5b')]=function(_0x22f9b6,_0x166707){return db[_0xb066('0x26')]['describe']()['then'](respondWithResult(_0x166707,null))[_0xb066('0x57')](handleError(_0x166707,null));};exports[_0xb066('0x21')]=function(_0x4c50b5,_0x3a8bd6){var _0x2c9fc4;return db[_0xb066('0x26')][_0xb066('0x56')]({'where':{'id':_0x4c50b5[_0xb066('0x54')]['id']}})[_0xb066('0x20')](handleEntityNotFound(_0x3a8bd6,null))[_0xb066('0x20')](function(_0x5a3582){if(_0x5a3582){return _0x5a3582['destroy']()[_0xb066('0x20')](function(_0x31a5b5){return _0x31a5b5;});}})['then'](function(_0x362ee9){_0x2c9fc4=_0x362ee9;if(_0x362ee9){if(_0x362ee9[_0xb066('0x5c')]||_0x362ee9[_0xb066('0x5d')]){return db[_0x362ee9[_0xb066('0x5c')]?_0xb066('0x5e'):_0xb066('0x5f')][_0xb066('0x56')]({'where':{'id':_0x362ee9['VoiceQueueId']?_0x362ee9['VoiceQueueId']:_0x362ee9[_0xb066('0x5d')]},'attributes':['id',_0xb066('0x24')],'raw':!![]});}}})[_0xb066('0x20')](function(_0x28ea82){var _0xa2cd5={};if(_0x28ea82){_['merge'](_0xa2cd5,_[_0xb066('0x60')](_0x2c9fc4['dataValues'],[_0xb066('0x61'),_0xb066('0x62'),'id']));_0xa2cd5[_0xb066('0x63')]=0x15;_0xa2cd5['statedesc']=_0xb066('0x64');_0xa2cd5[_0xb066('0x65')]=_0x28ea82[_0xb066('0x24')];_0xa2cd5[_0xb066('0x66')]=_0x4c50b5[_0xb066('0x67')][_0xb066('0x24')];_0xa2cd5[_0xb066('0x68')]=_0x4c50b5['user']['id'];_0xa2cd5[_0xb066('0x64')]=!![];_0xa2cd5[_0xb066('0x69')]=moment()[_0xb066('0x6a')](_0xb066('0x6b'));_0xa2cd5[_0xb066('0x6c')]=_0x2c9fc4['phone'];_0xa2cd5['campaigntype']=_0x2c9fc4['VoiceQueueId']?_0xb066('0x6d'):_0xb066('0x6e');return db[_0xb066('0x6f')]['find']({'where':{'id':_0xa2cd5[_0xb066('0x70')]},'attributes':[_0xb066('0x71'),'lastName']})[_0xb066('0x20')](function(_0x1ef66){if(!_[_0xb066('0x72')](_0x3a8bd6)&&!_['isNil'](_0x1ef66['firstName'])){_0xa2cd5['calleridname']=_0x1ef66[_0xb066('0x71')];if(!_[_0xb066('0x72')](_0x1ef66[_0xb066('0x73')])){_0xa2cd5[_0xb066('0x74')]+='\x20'+_0x1ef66['lastName'];}}})[_0xb066('0x75')](function(){return db[_0xb066('0x76')][_0xb066('0x58')](_0xa2cd5);});}})[_0xb066('0x20')](function(){return _0x3a8bd6['status'](0xcc)['end']();})[_0xb066('0x57')](handleError(_0x3a8bd6,null));};exports[_0xb066('0x77')]=function(_0x33e71f,_0x502504,_0xca8916){var _0x169b44=[];return db['CmContact'][_0xb066('0x5b')]()[_0xb066('0x20')](function(_0x5aaac0){_0x169b44=_[_0xb066('0x28')](_0x5aaac0);return _0x33e71f['user']['getVoiceQueues']({'where':{'type':_0xb066('0x78'),'dialActive':!![],'dialMethod':_0xb066('0x79')},'attributes':['id',_0xb066('0x7a')],'raw':!![]});})[_0xb066('0x20')](function(_0xb0b198){if(_0xb0b198&&_0xb0b198[_0xb066('0x40')]){return db[_0xb066('0x7b')][_0xb066('0x7c')](function(_0x3a6c23){var _0x2c370e={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xb066('0x6a')](_0xb066('0x6b'))},'VoiceQueueId':{'$in':_[_0xb066('0x7d')](_0xb0b198,'id')},'$or':[{'UserId':null},{'UserId':_0x33e71f[_0xb066('0x67')]['id']}]};var _0x5830f0=[];if(_0x33e71f['body']['direction']&&_0x33e71f['body'][_0xb066('0x7e')]===_0xb066('0x7f')){if(!_[_0xb066('0x80')](_0x33e71f[_0xb066('0x59')][_0xb066('0x81')])){_0x2c370e['id']={'$in':_0x33e71f[_0xb066('0x59')][_0xb066('0x81')]};}_0x5830f0=[['priority',_0xb066('0x82')],[_0xb066('0x83'),_0xb0b198[0x0][_0xb066('0x7a')]==='ASC'?_0xb066('0x84'):'ASC'],db['sequelize']['literal'](_0xb066('0x85')),['id','DESC']];}else{if(!_[_0xb066('0x80')](_0x33e71f['body'][_0xb066('0x81')])){_0x2c370e['id']={'$notIn':_0x33e71f[_0xb066('0x59')][_0xb066('0x81')]};}_0x5830f0=[[_0xb066('0x86'),_0xb066('0x84')],[_0xb066('0x83'),_0xb0b198[0x0][_0xb066('0x7a')]],db[_0xb066('0x7b')][_0xb066('0x87')](_0xb066('0x88')),['id',_0xb066('0x82')]];}return db[_0xb066('0x26')][_0xb066('0x89')]({'attributes':['id','scheduledat'],'where':_0x2c370e,'order':_0x5830f0,'transaction':_0x3a6c23,'lock':_0x3a6c23['LOCK'][_0xb066('0x8a')],'include':[{'model':db[_0xb066('0x6f')],'as':_0xb066('0x8b'),'attributes':_0x169b44,'include':[{'model':db[_0xb066('0x8c')],'as':_0xb066('0x8d'),'attributes':['id',_0xb066('0x24')]}]},{'model':db[_0xb066('0x8e')],'as':_0xb066('0x8f'),'attributes':['id','name']},{'model':db['VoiceQueue'],'as':'Queue','attributes':['id','name','dialActive']}]})[_0xb066('0x20')](function(_0x4c6b57){if(_0x4c6b57){return _0x4c6b57[_0xb066('0x5a')]({'UserId':_0x33e71f[_0xb066('0x67')]['id']},{'transaction':_0x3a6c23});}});});}})[_0xb066('0x20')](handleEntityNotFound(_0x502504,null))[_0xb066('0x20')](respondWithResult(_0x502504,null))['catch'](handleError(_0x502504,null));};exports[_0xb066('0x90')]=function(_0x39721b,_0x508bd8,_0x1f6dce){return _0x39721b[_0xb066('0x67')]['getVoiceQueues']({'where':{'type':_0xb066('0x78'),'dialActive':!![],'dialMethod':_0xb066('0x79')},'attributes':['id'],'raw':!![]})[_0xb066('0x20')](function(_0x37ec4d){if(_0x37ec4d&&_0x37ec4d[_0xb066('0x40')]){return db[_0xb066('0x26')][_0xb066('0x1a')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0xb066('0x6b'))},'VoiceQueueId':{'$in':_[_0xb066('0x7d')](_0x37ec4d,'id')},'$or':[{'UserId':null},{'UserId':_0x39721b['user']['id']}]}});}return 0x0;})[_0xb066('0x20')](function(_0x333beb){if(!_[_0xb066('0x72')](_0x333beb)&&_['isNumber'](_0x333beb)){return _0x508bd8[_0xb066('0x18')](0xc8)[_0xb066('0x19')]({'contacts':_0x333beb});}else{logger['error'](_0xb066('0x91'),'getOpenContacts',0x194,_0xb066('0x92'));_0x508bd8['sendStatus'](0x194);}})[_0xb066('0x57')](handleError(_0x508bd8,null));};