Built motion from commit b5996064.|2.6.21
[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 _0x99c9=['queue','ivr','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','CmHopperAdditionalPhone','getPreview','getVoiceQueues','outbound','dialOrderByScheduledAt','dialPreviewAutoRecallMe','sequelize','transaction','value','direction','prev','isEmpty','hopperIds','priority','scheduledAt','ASC','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','findOne','scheduledat','LOCK','UPDATE','CmContact','Contact','CmCompany','Company','CmList','dialActive','recallme','Queue','getOpenContacts','preview','sendStatus','getTimezones','timezones','push','utcOffset','moment','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','update','then','error','stack','name','send','index','map','CmHopper','fieldName','type','key','model','query','keys','filters','intersection','concat','$and','$gt','$gte','$lt','$lte','$ne','$eq','$between','$notBetween','$in','$like','$notLike','$notILike','$contains','$contained','$any','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','include','findAll','rows','show','params','includeAll','find','catch','create','body','describe','destroy','VoiceQueueId','CampaignId','VoiceQueue','Campaign','omit','dataValues','createdAt','state','statedesc','deleted','membername','user','UserId','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','phone'];(function(_0x4d965d,_0x31e502){var _0x4443b0=function(_0x5db4c0){while(--_0x5db4c0){_0x4d965d['push'](_0x4d965d['shift']());}};_0x4443b0(++_0x31e502);}(_0x99c9,0x13c));var _0x999c=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0x99c9[_0x599f41];return _0x2e4d58;};'use strict';var moment=require(_0x999c('0x0'));var _=require(_0x999c('0x1'));var qs=require(_0x999c('0x2'));var logger=require(_0x999c('0x3'))(_0x999c('0x4'));var shared=require(_0x999c('0x5'));var db=require(_0x999c('0x6'))['db'];function respondWithResult(_0x52dc75,_0x2a4e06){_0x2a4e06=_0x2a4e06||0xc8;return function(_0x140cd5){if(_0x140cd5){return _0x52dc75[_0x999c('0x7')](_0x2a4e06)[_0x999c('0x8')](_0x140cd5);}};}function respondWithFilteredResult(_0x2bdd73,_0x14df32){return function(_0x34f100){if(_0x34f100){var _0x651b7e=typeof _0x14df32[_0x999c('0x9')]===_0x999c('0xa')&&typeof _0x14df32[_0x999c('0xb')]===_0x999c('0xa');var _0x32984f=_0x34f100[_0x999c('0xc')];var _0x4dd585=_0x651b7e?0x0:_0x14df32[_0x999c('0x9')];var _0x2bf133=_0x651b7e?_0x34f100['count']:_0x14df32[_0x999c('0x9')]+_0x14df32[_0x999c('0xb')];var _0x97d9fd;if(_0x2bf133>=_0x32984f){_0x2bf133=_0x32984f;_0x97d9fd=0xc8;}else{_0x97d9fd=0xce;}_0x2bdd73[_0x999c('0x7')](_0x97d9fd);return _0x2bdd73[_0x999c('0xd')](_0x999c('0xe'),_0x4dd585+'-'+_0x2bf133+'/'+_0x32984f)[_0x999c('0x8')](_0x34f100);}return null;};}function saveUpdates(_0x3d7c6d,_0x2e5f7e){return function(_0x44a5bc){if(_0x44a5bc){return _0x44a5bc[_0x999c('0xf')](_0x3d7c6d)[_0x999c('0x10')](function(_0x4c3209){return _0x4c3209;});}return null;};}function handleEntityNotFound(_0x15f812,_0xd14862){return function(_0x4f2916){if(!_0x4f2916){_0x15f812['sendStatus'](0x194);}return _0x4f2916;};}function handleError(_0x5f5a20,_0x161434){_0x161434=_0x161434||0x1f4;return function(_0xb3e981){logger[_0x999c('0x11')](_0xb3e981[_0x999c('0x12')]);if(_0xb3e981[_0x999c('0x13')]){delete _0xb3e981['name'];}_0x5f5a20[_0x999c('0x7')](_0x161434)[_0x999c('0x14')](_0xb3e981);};}exports[_0x999c('0x15')]=function(_0xc05363,_0x110486){var _0x500048={},_0x1b327f={},_0x3fb85e={'count':0x0,'rows':[]};var _0x3a8a99=_[_0x999c('0x16')](db[_0x999c('0x17')]['rawAttributes'],function(_0x3630b8){return{'name':_0x3630b8[_0x999c('0x18')],'type':_0x3630b8[_0x999c('0x19')][_0x999c('0x1a')]};});_0x1b327f[_0x999c('0x1b')]=_[_0x999c('0x16')](_0x3a8a99,'name');_0x1b327f[_0x999c('0x1c')]=_[_0x999c('0x1d')](_0xc05363[_0x999c('0x1c')]);_0x1b327f[_0x999c('0x1e')]=_[_0x999c('0x1f')](_0x1b327f[_0x999c('0x1b')],_0x1b327f[_0x999c('0x1c')]);_0x1b327f[_0x999c('0x1e')]=_[_0x999c('0x20')](_0x1b327f[_0x999c('0x1e')],[_0x999c('0x21'),'$or',_0x999c('0x22'),_0x999c('0x23'),_0x999c('0x24'),_0x999c('0x25'),_0x999c('0x26'),_0x999c('0x27'),'$not',_0x999c('0x28'),_0x999c('0x29'),_0x999c('0x2a'),'$notIn',_0x999c('0x2b'),_0x999c('0x2c'),'$iLike',_0x999c('0x2d'),'$like','$overlap',_0x999c('0x2e'),_0x999c('0x2f'),_0x999c('0x30')]);_0x500048[_0x999c('0x31')]=_[_0x999c('0x1f')](_0x1b327f[_0x999c('0x1b')],qs[_0x999c('0x32')](_0xc05363[_0x999c('0x1c')][_0x999c('0x32')]));_0x500048[_0x999c('0x31')]=_0x500048['attributes'][_0x999c('0x33')]?_0x500048[_0x999c('0x31')]:_0x1b327f[_0x999c('0x1b')];if(!_0xc05363[_0x999c('0x1c')][_0x999c('0x34')](_0x999c('0x35'))){_0x500048[_0x999c('0xb')]=qs[_0x999c('0xb')](_0xc05363['query']['limit']);_0x500048[_0x999c('0x9')]=qs[_0x999c('0x9')](_0xc05363[_0x999c('0x1c')][_0x999c('0x9')]);}_0x500048['order']=qs[_0x999c('0x36')](_0xc05363[_0x999c('0x1c')][_0x999c('0x36')]);_0x500048[_0x999c('0x37')]=qs['filters'](_['pick'](_0xc05363[_0x999c('0x1c')],_0x1b327f[_0x999c('0x1e')]),_0x3a8a99);if(_0xc05363[_0x999c('0x1c')][_0x999c('0x38')]){_0x500048[_0x999c('0x37')]=_[_0x999c('0x39')](_0x500048[_0x999c('0x37')],{'$or':_['map'](_0x3a8a99,function(_0x5ad13e){if(_0x5ad13e['type']!==_0x999c('0x3a')){var _0x574eae={};_0x574eae[_0x5ad13e['name']]={'$like':'%'+_0xc05363['query']['filter']+'%'};return _0x574eae;}})});}_0x500048=_[_0x999c('0x39')]({},_0x500048,_0xc05363[_0x999c('0x3b')]);var _0x15dc10={'where':_0x500048[_0x999c('0x37')]};return db['CmHopper'][_0x999c('0xc')](_0x15dc10)[_0x999c('0x10')](function(_0x513aa4){_0x3fb85e['count']=_0x513aa4;if(_0xc05363[_0x999c('0x1c')]['includeAll']){_0x500048[_0x999c('0x3c')]=[{'all':!![]}];}return db['CmHopper'][_0x999c('0x3d')](_0x500048);})[_0x999c('0x10')](function(_0x1763f0){_0x3fb85e[_0x999c('0x3e')]=_0x1763f0;return _0x3fb85e;})['then'](respondWithFilteredResult(_0x110486,_0x500048))['catch'](handleError(_0x110486,null));};exports[_0x999c('0x3f')]=function(_0x391c2e,_0x37c40d){var _0xf26ba3={'raw':!![],'where':{'id':_0x391c2e[_0x999c('0x40')]['id']}},_0x5e21b6={};_0x5e21b6[_0x999c('0x1b')]=_[_0x999c('0x1d')](db[_0x999c('0x17')]['rawAttributes']);_0x5e21b6[_0x999c('0x1c')]=_['keys'](_0x391c2e[_0x999c('0x1c')]);_0x5e21b6[_0x999c('0x1e')]=_['intersection'](_0x5e21b6[_0x999c('0x1b')],_0x5e21b6[_0x999c('0x1c')]);_0xf26ba3[_0x999c('0x31')]=_[_0x999c('0x1f')](_0x5e21b6[_0x999c('0x1b')],qs[_0x999c('0x32')](_0x391c2e[_0x999c('0x1c')][_0x999c('0x32')]));_0xf26ba3['attributes']=_0xf26ba3['attributes']['length']?_0xf26ba3['attributes']:_0x5e21b6[_0x999c('0x1b')];if(_0x391c2e[_0x999c('0x1c')][_0x999c('0x41')]){_0xf26ba3[_0x999c('0x3c')]=[{'all':!![]}];}_0xf26ba3=_[_0x999c('0x39')]({},_0xf26ba3,_0x391c2e['options']);return db[_0x999c('0x17')][_0x999c('0x42')](_0xf26ba3)[_0x999c('0x10')](handleEntityNotFound(_0x37c40d,null))[_0x999c('0x10')](respondWithResult(_0x37c40d,null))[_0x999c('0x43')](handleError(_0x37c40d,null));};exports['create']=function(_0x40fca1,_0x2e8dd6){return db[_0x999c('0x17')][_0x999c('0x44')](_0x40fca1[_0x999c('0x45')],{})[_0x999c('0x10')](respondWithResult(_0x2e8dd6,0xc9))[_0x999c('0x43')](handleError(_0x2e8dd6,null));};exports[_0x999c('0xf')]=function(_0x41d2b2,_0x4e82a9){if(_0x41d2b2['body']['id']){delete _0x41d2b2[_0x999c('0x45')]['id'];}return db[_0x999c('0x17')][_0x999c('0x42')]({'where':{'id':_0x41d2b2[_0x999c('0x40')]['id']}})[_0x999c('0x10')](handleEntityNotFound(_0x4e82a9,null))[_0x999c('0x10')](saveUpdates(_0x41d2b2[_0x999c('0x45')],null))[_0x999c('0x10')](respondWithResult(_0x4e82a9,null))[_0x999c('0x43')](handleError(_0x4e82a9,null));};exports[_0x999c('0x46')]=function(_0x3457d6,_0x4ca662){return db[_0x999c('0x17')][_0x999c('0x46')]()[_0x999c('0x10')](respondWithResult(_0x4ca662,null))[_0x999c('0x43')](handleError(_0x4ca662,null));};exports[_0x999c('0x47')]=function(_0x386be6,_0x11f3bf){var _0x396e2c;var _0x55eb16=_0x386be6[_0x999c('0x40')]['id'];return db[_0x999c('0x17')][_0x999c('0x42')]({'where':{'id':_0x386be6[_0x999c('0x40')]['id']}})[_0x999c('0x10')](handleEntityNotFound(_0x11f3bf,null))[_0x999c('0x10')](function(_0x12eb3d){if(_0x12eb3d){return _0x12eb3d['destroy']()['then'](function(_0x1139f6){return _0x1139f6;});}})[_0x999c('0x10')](function(_0x37fb36){_0x396e2c=_0x37fb36;if(_0x37fb36){if(_0x37fb36[_0x999c('0x48')]||_0x37fb36[_0x999c('0x49')]){return db[_0x37fb36['VoiceQueueId']?_0x999c('0x4a'):_0x999c('0x4b')][_0x999c('0x42')]({'where':{'id':_0x37fb36[_0x999c('0x48')]?_0x37fb36['VoiceQueueId']:_0x37fb36[_0x999c('0x49')]},'attributes':['id','name'],'raw':!![]});}}})[_0x999c('0x10')](function(_0x1129e9){var _0x243913={};if(_0x1129e9){_[_0x999c('0x39')](_0x243913,_[_0x999c('0x4c')](_0x396e2c[_0x999c('0x4d')],[_0x999c('0x4e'),'updatedAt','id']));_0x243913[_0x999c('0x4f')]=0x15;_0x243913[_0x999c('0x50')]=_0x999c('0x51');_0x243913['campaign']=_0x1129e9[_0x999c('0x13')];_0x243913[_0x999c('0x52')]=_0x386be6[_0x999c('0x53')]['name'];_0x243913[_0x999c('0x54')]=_0x386be6['user']['id'];_0x243913[_0x999c('0x51')]=!![];_0x243913[_0x999c('0x55')]=moment()[_0x999c('0x56')](_0x999c('0x57'));_0x243913['calleridnum']=_0x396e2c[_0x999c('0x58')];_0x243913['campaigntype']=_0x396e2c['VoiceQueueId']?_0x999c('0x59'):_0x999c('0x5a');return db['CmContact'][_0x999c('0x42')]({'where':{'id':_0x243913['ContactId']},'attributes':[_0x999c('0x5b'),_0x999c('0x5c')]})['then'](function(_0x9ca1c1){if(!_[_0x999c('0x5d')](_0x11f3bf)&&!_[_0x999c('0x5d')](_0x9ca1c1[_0x999c('0x5b')])){_0x243913[_0x999c('0x5e')]=_0x9ca1c1[_0x999c('0x5b')];if(!_[_0x999c('0x5d')](_0x9ca1c1[_0x999c('0x5c')])){_0x243913[_0x999c('0x5e')]+='\x20'+_0x9ca1c1['lastName'];}}})[_0x999c('0x5f')](function(){return db[_0x999c('0x60')][_0x999c('0x44')](_0x243913);});}})[_0x999c('0x10')](function(_0x171e60){return db[_0x999c('0x61')]['destroy']({'where':{'CmHopperId':_0x55eb16}});})['then'](function(){return _0x11f3bf['status'](0xcc)['end']();})[_0x999c('0x43')](handleError(_0x11f3bf,null));};exports[_0x999c('0x62')]=function(_0x36fd71,_0x4d4236){var _0x3569e8=[];return db['CmContact'][_0x999c('0x46')]()['then'](function(_0x27c404){_0x3569e8=_[_0x999c('0x1d')](_0x27c404);return _0x36fd71[_0x999c('0x53')][_0x999c('0x63')]({'where':{'type':_0x999c('0x64'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id',_0x999c('0x65'),_0x999c('0x66')],'raw':!![]});})[_0x999c('0x10')](function(_0x27f9af){if(_0x27f9af&&_0x27f9af[_0x999c('0x33')]){return db[_0x999c('0x67')][_0x999c('0x68')](function(_0x4d4c33){var _0x30f93c={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x999c('0x56')](_0x999c('0x57'))},'VoiceQueueId':{'$in':_[_0x999c('0x16')](_0x27f9af,'id')},'$or':[{'UserId':null},{'UserId':_0x36fd71[_0x999c('0x53')]['id']}]};var _0xc6c0c3={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x27f9af)[_0x999c('0x38')](['dialPreviewAutoRecallMe',0x0])[_0x999c('0x16')]('id')[_0x999c('0x69')]()},'$or':[{'UserId':null},{'UserId':_0x36fd71['user']['id']}]};var _0x569ec9={'$or':[_0x30f93c,_0xc6c0c3]};var _0x25966e=[];if(_0x36fd71[_0x999c('0x45')][_0x999c('0x6a')]&&_0x36fd71['body'][_0x999c('0x6a')]===_0x999c('0x6b')){if(!_[_0x999c('0x6c')](_0x36fd71[_0x999c('0x45')][_0x999c('0x6d')])){_0x569ec9['id']={'$in':_0x36fd71[_0x999c('0x45')]['hopperIds']};}_0x25966e=[[_0x999c('0x6e'),'ASC'],[_0x999c('0x6f'),_0x27f9af[0x0][_0x999c('0x65')]===_0x999c('0x70')?_0x999c('0x71'):_0x999c('0x70')],db[_0x999c('0x67')][_0x999c('0x72')](_0x999c('0x73')),['id',_0x999c('0x71')]];}else{if(!_[_0x999c('0x6c')](_0x36fd71[_0x999c('0x45')][_0x999c('0x6d')])){_0x569ec9['id']={'$notIn':_0x36fd71[_0x999c('0x45')]['hopperIds']};}_0x25966e=[[_0x999c('0x6e'),_0x999c('0x71')],['scheduledAt',_0x27f9af[0x0][_0x999c('0x65')]],db[_0x999c('0x67')][_0x999c('0x72')]('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id',_0x999c('0x70')]];}return db[_0x999c('0x17')][_0x999c('0x74')]({'attributes':['id',_0x999c('0x75'),_0x999c('0x58'),'recallme'],'where':_0x569ec9,'order':_0x25966e,'transaction':_0x4d4c33,'lock':_0x4d4c33[_0x999c('0x76')][_0x999c('0x77')],'include':[{'model':db[_0x999c('0x78')],'as':_0x999c('0x79'),'attributes':_0x3569e8,'include':[{'model':db[_0x999c('0x7a')],'as':_0x999c('0x7b'),'attributes':['id',_0x999c('0x13')]}]},{'model':db[_0x999c('0x7c')],'as':'List','attributes':['id',_0x999c('0x13')]},{'model':db[_0x999c('0x4a')],'as':'Queue','attributes':['id','name',_0x999c('0x7d')]}]})[_0x999c('0x10')](function(_0x19a8e9){if(_0x19a8e9){return _0x19a8e9[_0x999c('0xf')]({'UserId':_0x36fd71['user']['id']},{'transaction':_0x4d4c33});}});});}})[_0x999c('0x10')](handleEntityNotFound(_0x4d4236,null))[_0x999c('0x10')](respondWithResult(_0x4d4236,null))[_0x999c('0x43')](handleError(_0x4d4236,null));};exports['getPreviewRecall']=function(_0x42261c,_0x4f6544,_0x2c1b7d){var _0x90eb9a=[];var _0x5d3c9f=_0x42261c[_0x999c('0x40')]['id'];var _0x587177=_0x42261c[_0x999c('0x53')]['id'];return db[_0x999c('0x78')][_0x999c('0x46')]()[_0x999c('0x10')](function(_0x1d27fe){_0x90eb9a=_[_0x999c('0x1d')](_0x1d27fe);return db[_0x999c('0x67')][_0x999c('0x68')](function(_0x22f536){const _0x1fa726={'id':_0x5d3c9f};return db[_0x999c('0x17')]['findOne']({'attributes':['id',_0x999c('0x75'),_0x999c('0x7e')],'where':_0x1fa726,'transaction':_0x22f536,'lock':_0x22f536[_0x999c('0x76')][_0x999c('0x77')],'include':[{'model':db[_0x999c('0x78')],'as':_0x999c('0x79'),'attributes':_0x90eb9a,'include':[{'model':db['CmCompany'],'as':'Company','attributes':['id',_0x999c('0x13')]}]},{'model':db[_0x999c('0x7c')],'as':'List','attributes':['id',_0x999c('0x13')]},{'model':db[_0x999c('0x4a')],'as':_0x999c('0x7f'),'attributes':['id','name',_0x999c('0x7d')]}]})['then'](function(_0xb2bd6){if(_0xb2bd6){return _0xb2bd6[_0x999c('0xf')]({'UserId':_0x587177},{'transaction':_0x22f536});}});});})[_0x999c('0x10')](handleEntityNotFound(_0x4f6544,null))[_0x999c('0x10')](respondWithResult(_0x4f6544,null))[_0x999c('0x43')](handleError(_0x4f6544,null));};exports[_0x999c('0x80')]=function(_0x1e8931,_0x417e2f){return _0x1e8931['user']['getVoiceQueues']({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x999c('0x81')},'attributes':['id'],'raw':!![]})[_0x999c('0x10')](function(_0x179493){if(_0x179493&&_0x179493[_0x999c('0x33')]){return db[_0x999c('0x17')][_0x999c('0xc')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x999c('0x56')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x999c('0x16')](_0x179493,'id')},'$or':[{'UserId':null},{'UserId':_0x1e8931[_0x999c('0x53')]['id']}]}});}return 0x0;})[_0x999c('0x10')](function(_0x103f75){if(!_[_0x999c('0x5d')](_0x103f75)&&_['isNumber'](_0x103f75)){return _0x417e2f[_0x999c('0x7')](0xc8)['json']({'contacts':_0x103f75});}else{logger[_0x999c('0x11')]('CmHopper,\x20%s,\x20%s,\x20%s','getOpenContacts',0x194,'entity\x20not\x20found');_0x417e2f[_0x999c('0x82')](0x194);}})['catch'](handleError(_0x417e2f,null));};exports[_0x999c('0x83')]=function(_0x38df92,_0xebac9f){var _0x57c1c6=shared[_0x999c('0x84')];var _0x3e2275=[];_[_0x999c('0x16')](_0x57c1c6,function(_0x2c7c28){_0x3e2275[_0x999c('0x85')]({'id':_0x2c7c28[_0x999c('0x13')],'name':_0x2c7c28[_0x999c('0x13')],'utcOffset':_0x2c7c28[_0x999c('0x86')]});});return _0xebac9f[_0x999c('0x7')](0xc8)[_0x999c('0x8')]({'tz':_0x3e2275});};exports['getTimezone']=function(_0x20888e,_0x353d2b){var _0x59d43e=shared[_0x999c('0x84')];var _0x4ddc1c={};if(!_[_0x999c('0x5d')](_0x59d43e[_0x20888e['body']['id']]))_0x4ddc1c=_0x59d43e[_0x20888e[_0x999c('0x45')]['id']];return _0x353d2b['status'](0xc8)[_0x999c('0x8')](_0x4ddc1c);};