bf82cfa051b9738759940c7818e3c8800e34018d
[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 _0x7a59=['$eq','$between','$notBetween','$in','$notIn','$like','$notLike','$notILike','$contains','$contained','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','show','model','keys','rawAttributes','find','catch','create','body','params','describe','destroy','CampaignId','VoiceQueueId','VoiceQueue','dataValues','createdAt','updatedAt','campaign','membername','UserId','user','deleted','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','phone','CmContact','firstName','lastName','isNil','calleridname','CmHopperFinal','CmHopperAdditionalPhone','end','getPreview','outbound','preview','sequelize','dialPreviewAutoRecallMe','value','direction','hopperIds','priority','ASC','scheduledAt','dialOrderByScheduledAt','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','isEmpty','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','recallme','UPDATE','Contact','CmCompany','Company','List','Queue','transaction','LOCK','CmList','dialActive','getVoiceQueues','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','getOpenContacts','entity\x20not\x20found','getTimezones','timezones','push','utcOffset','getTimezone','moment','../../config/logger','api','../../config/environment','../../mysqldb','status','json','offset','undefined','limit','count','set','update','then','sendStatus','error','stack','name','send','map','CmHopper','fieldName','type','query','filters','intersection','$and','$or','$gt','$gte','$lt','$lte','$ne'];(function(_0x3987a1,_0x447793){var _0xe2596e=function(_0x546925){while(--_0x546925){_0x3987a1['push'](_0x3987a1['shift']());}};_0xe2596e(++_0x447793);}(_0x7a59,0x16e));var _0x97a5=function(_0x9dfc10,_0x19c2d5){_0x9dfc10=_0x9dfc10-0x0;var _0x4f938a=_0x7a59[_0x9dfc10];return _0x4f938a;};'use strict';var moment=require(_0x97a5('0x0'));var _=require('lodash');var qs=require('../../components/parsers/qs');var logger=require(_0x97a5('0x1'))(_0x97a5('0x2'));var shared=require(_0x97a5('0x3'));var db=require(_0x97a5('0x4'))['db'];function respondWithResult(_0x281bfd,_0x5e2db0){_0x5e2db0=_0x5e2db0||0xc8;return function(_0x3ba155){if(_0x3ba155){return _0x281bfd[_0x97a5('0x5')](_0x5e2db0)[_0x97a5('0x6')](_0x3ba155);}};}function respondWithFilteredResult(_0x48201b,_0x438520){return function(_0x52d32f){if(_0x52d32f){var _0x2663b9=typeof _0x438520[_0x97a5('0x7')]===_0x97a5('0x8')&&typeof _0x438520[_0x97a5('0x9')]===_0x97a5('0x8');var _0x5a51bc=_0x52d32f[_0x97a5('0xa')];var _0x101c3f=_0x2663b9?0x0:_0x438520[_0x97a5('0x7')];var _0x388bd7=_0x2663b9?_0x52d32f[_0x97a5('0xa')]:_0x438520['offset']+_0x438520['limit'];var _0x11d2eb;if(_0x388bd7>=_0x5a51bc){_0x388bd7=_0x5a51bc;_0x11d2eb=0xc8;}else{_0x11d2eb=0xce;}_0x48201b[_0x97a5('0x5')](_0x11d2eb);return _0x48201b[_0x97a5('0xb')]('Content-Range',_0x101c3f+'-'+_0x388bd7+'/'+_0x5a51bc)[_0x97a5('0x6')](_0x52d32f);}return null;};}function saveUpdates(_0x350720,_0x55305a){return function(_0x4f85a0){if(_0x4f85a0){return _0x4f85a0[_0x97a5('0xc')](_0x350720)[_0x97a5('0xd')](function(_0x50d291){return _0x50d291;});}return null;};}function handleEntityNotFound(_0x595437,_0x51d5e2){return function(_0x5a4471){if(!_0x5a4471){_0x595437[_0x97a5('0xe')](0x194);}return _0x5a4471;};}function handleError(_0x3dfb08,_0x3603e4){_0x3603e4=_0x3603e4||0x1f4;return function(_0x4d8ba7){logger[_0x97a5('0xf')](_0x4d8ba7[_0x97a5('0x10')]);if(_0x4d8ba7['name']){delete _0x4d8ba7[_0x97a5('0x11')];}_0x3dfb08['status'](_0x3603e4)[_0x97a5('0x12')](_0x4d8ba7);};}exports['index']=function(_0x4b7a38,_0x52ce92){var _0x32b00d={},_0x5c5740={},_0x79a5f7={'count':0x0,'rows':[]};var _0x9863ea=_[_0x97a5('0x13')](db[_0x97a5('0x14')]['rawAttributes'],function(_0x57dc28){return{'name':_0x57dc28[_0x97a5('0x15')],'type':_0x57dc28[_0x97a5('0x16')]['key']};});_0x5c5740['model']=_[_0x97a5('0x13')](_0x9863ea,_0x97a5('0x11'));_0x5c5740[_0x97a5('0x17')]=_['keys'](_0x4b7a38[_0x97a5('0x17')]);_0x5c5740[_0x97a5('0x18')]=_[_0x97a5('0x19')](_0x5c5740['model'],_0x5c5740[_0x97a5('0x17')]);_0x5c5740[_0x97a5('0x18')]=_['concat'](_0x5c5740[_0x97a5('0x18')],[_0x97a5('0x1a'),_0x97a5('0x1b'),_0x97a5('0x1c'),_0x97a5('0x1d'),_0x97a5('0x1e'),_0x97a5('0x1f'),_0x97a5('0x20'),_0x97a5('0x21'),'$not',_0x97a5('0x22'),_0x97a5('0x23'),_0x97a5('0x24'),_0x97a5('0x25'),_0x97a5('0x26'),_0x97a5('0x27'),'$iLike',_0x97a5('0x28'),_0x97a5('0x26'),'$overlap',_0x97a5('0x29'),_0x97a5('0x2a'),'$any']);_0x32b00d[_0x97a5('0x2b')]=_[_0x97a5('0x19')](_0x5c5740['model'],qs[_0x97a5('0x2c')](_0x4b7a38['query'][_0x97a5('0x2c')]));_0x32b00d[_0x97a5('0x2b')]=_0x32b00d[_0x97a5('0x2b')][_0x97a5('0x2d')]?_0x32b00d['attributes']:_0x5c5740['model'];if(!_0x4b7a38[_0x97a5('0x17')][_0x97a5('0x2e')](_0x97a5('0x2f'))){_0x32b00d['limit']=qs[_0x97a5('0x9')](_0x4b7a38[_0x97a5('0x17')]['limit']);_0x32b00d[_0x97a5('0x7')]=qs[_0x97a5('0x7')](_0x4b7a38['query'][_0x97a5('0x7')]);}_0x32b00d[_0x97a5('0x30')]=qs[_0x97a5('0x31')](_0x4b7a38['query'][_0x97a5('0x31')]);_0x32b00d[_0x97a5('0x32')]=qs[_0x97a5('0x18')](_[_0x97a5('0x33')](_0x4b7a38[_0x97a5('0x17')],_0x5c5740[_0x97a5('0x18')]),_0x9863ea);if(_0x4b7a38[_0x97a5('0x17')]['filter']){_0x32b00d[_0x97a5('0x32')]=_[_0x97a5('0x34')](_0x32b00d[_0x97a5('0x32')],{'$or':_[_0x97a5('0x13')](_0x9863ea,function(_0x369d7b){if(_0x369d7b[_0x97a5('0x16')]!==_0x97a5('0x35')){var _0x59ba99={};_0x59ba99[_0x369d7b[_0x97a5('0x11')]]={'$like':'%'+_0x4b7a38[_0x97a5('0x17')][_0x97a5('0x36')]+'%'};return _0x59ba99;}})});}_0x32b00d=_[_0x97a5('0x34')]({},_0x32b00d,_0x4b7a38[_0x97a5('0x37')]);var _0x49b19a={'where':_0x32b00d[_0x97a5('0x32')]};return db[_0x97a5('0x14')][_0x97a5('0xa')](_0x49b19a)[_0x97a5('0xd')](function(_0x2aec4e){_0x79a5f7['count']=_0x2aec4e;if(_0x4b7a38['query'][_0x97a5('0x38')]){_0x32b00d[_0x97a5('0x39')]=[{'all':!![]}];}return db[_0x97a5('0x14')][_0x97a5('0x3a')](_0x32b00d);})[_0x97a5('0xd')](function(_0x3dd209){_0x79a5f7['rows']=_0x3dd209;return _0x79a5f7;})[_0x97a5('0xd')](respondWithFilteredResult(_0x52ce92,_0x32b00d))['catch'](handleError(_0x52ce92,null));};exports[_0x97a5('0x3b')]=function(_0x1bde97,_0x30fc3b){var _0x798318={'raw':!![],'where':{'id':_0x1bde97['params']['id']}},_0x341cba={};_0x341cba[_0x97a5('0x3c')]=_[_0x97a5('0x3d')](db[_0x97a5('0x14')][_0x97a5('0x3e')]);_0x341cba[_0x97a5('0x17')]=_['keys'](_0x1bde97['query']);_0x341cba[_0x97a5('0x18')]=_[_0x97a5('0x19')](_0x341cba[_0x97a5('0x3c')],_0x341cba[_0x97a5('0x17')]);_0x798318['attributes']=_[_0x97a5('0x19')](_0x341cba['model'],qs[_0x97a5('0x2c')](_0x1bde97[_0x97a5('0x17')][_0x97a5('0x2c')]));_0x798318['attributes']=_0x798318[_0x97a5('0x2b')][_0x97a5('0x2d')]?_0x798318['attributes']:_0x341cba[_0x97a5('0x3c')];if(_0x1bde97[_0x97a5('0x17')][_0x97a5('0x38')]){_0x798318[_0x97a5('0x39')]=[{'all':!![]}];}_0x798318=_[_0x97a5('0x34')]({},_0x798318,_0x1bde97[_0x97a5('0x37')]);return db[_0x97a5('0x14')][_0x97a5('0x3f')](_0x798318)[_0x97a5('0xd')](handleEntityNotFound(_0x30fc3b,null))[_0x97a5('0xd')](respondWithResult(_0x30fc3b,null))[_0x97a5('0x40')](handleError(_0x30fc3b,null));};exports[_0x97a5('0x41')]=function(_0x5d54cc,_0x5c73f){return db[_0x97a5('0x14')][_0x97a5('0x41')](_0x5d54cc['body'],{})[_0x97a5('0xd')](respondWithResult(_0x5c73f,0xc9))[_0x97a5('0x40')](handleError(_0x5c73f,null));};exports[_0x97a5('0xc')]=function(_0x218f2b,_0x4b816){if(_0x218f2b['body']['id']){delete _0x218f2b[_0x97a5('0x42')]['id'];}return db[_0x97a5('0x14')][_0x97a5('0x3f')]({'where':{'id':_0x218f2b[_0x97a5('0x43')]['id']}})[_0x97a5('0xd')](handleEntityNotFound(_0x4b816,null))['then'](saveUpdates(_0x218f2b[_0x97a5('0x42')],null))['then'](respondWithResult(_0x4b816,null))[_0x97a5('0x40')](handleError(_0x4b816,null));};exports[_0x97a5('0x44')]=function(_0x330f6a,_0x4b3c38){return db[_0x97a5('0x14')][_0x97a5('0x44')]()[_0x97a5('0xd')](respondWithResult(_0x4b3c38,null))[_0x97a5('0x40')](handleError(_0x4b3c38,null));};exports[_0x97a5('0x45')]=function(_0x42ced6,_0x49b215){var _0x318469;var _0x7edab1=_0x42ced6[_0x97a5('0x43')]['id'];return db[_0x97a5('0x14')]['find']({'where':{'id':_0x42ced6[_0x97a5('0x43')]['id']}})[_0x97a5('0xd')](handleEntityNotFound(_0x49b215,null))['then'](function(_0x257a5d){if(_0x257a5d){return _0x257a5d[_0x97a5('0x45')]()[_0x97a5('0xd')](function(_0x56890f){return _0x56890f;});}})[_0x97a5('0xd')](function(_0x34d934){_0x318469=_0x34d934;if(_0x34d934){if(_0x34d934['VoiceQueueId']||_0x34d934[_0x97a5('0x46')]){return db[_0x34d934[_0x97a5('0x47')]?_0x97a5('0x48'):'Campaign'][_0x97a5('0x3f')]({'where':{'id':_0x34d934[_0x97a5('0x47')]?_0x34d934[_0x97a5('0x47')]:_0x34d934['CampaignId']},'attributes':['id','name'],'raw':!![]});}}})[_0x97a5('0xd')](function(_0x7c4886){var _0x3ccb26={};if(_0x7c4886){_[_0x97a5('0x34')](_0x3ccb26,_['omit'](_0x318469[_0x97a5('0x49')],[_0x97a5('0x4a'),_0x97a5('0x4b'),'id']));_0x3ccb26['state']=0x15;_0x3ccb26['statedesc']='deleted';_0x3ccb26[_0x97a5('0x4c')]=_0x7c4886[_0x97a5('0x11')];_0x3ccb26[_0x97a5('0x4d')]=_0x42ced6['user'][_0x97a5('0x11')];_0x3ccb26[_0x97a5('0x4e')]=_0x42ced6[_0x97a5('0x4f')]['id'];_0x3ccb26[_0x97a5('0x50')]=!![];_0x3ccb26[_0x97a5('0x51')]=moment()[_0x97a5('0x52')](_0x97a5('0x53'));_0x3ccb26['calleridnum']=_0x318469[_0x97a5('0x54')];_0x3ccb26['campaigntype']=_0x318469[_0x97a5('0x47')]?'queue':'ivr';return db[_0x97a5('0x55')][_0x97a5('0x3f')]({'where':{'id':_0x3ccb26['ContactId']},'attributes':[_0x97a5('0x56'),_0x97a5('0x57')]})['then'](function(_0x116ded){if(!_['isNil'](_0x49b215)&&!_[_0x97a5('0x58')](_0x116ded['firstName'])){_0x3ccb26[_0x97a5('0x59')]=_0x116ded['firstName'];if(!_[_0x97a5('0x58')](_0x116ded[_0x97a5('0x57')])){_0x3ccb26['calleridname']+='\x20'+_0x116ded[_0x97a5('0x57')];}}})['finally'](function(){return db[_0x97a5('0x5a')]['create'](_0x3ccb26);});}})['then'](function(_0x537e29){return db[_0x97a5('0x5b')][_0x97a5('0x45')]({'where':{'CmHopperId':_0x7edab1}});})[_0x97a5('0xd')](function(){return _0x49b215[_0x97a5('0x5')](0xcc)[_0x97a5('0x5c')]();})[_0x97a5('0x40')](handleError(_0x49b215,null));};exports[_0x97a5('0x5d')]=function(_0xbfde6,_0x522e6f){var _0x5bec31=[];return db['CmContact'][_0x97a5('0x44')]()['then'](function(_0x5ba758){_0x5bec31=_[_0x97a5('0x3d')](_0x5ba758);return _0xbfde6[_0x97a5('0x4f')]['getVoiceQueues']({'where':{'type':_0x97a5('0x5e'),'dialActive':!![],'dialMethod':_0x97a5('0x5f')},'attributes':['id','dialOrderByScheduledAt','dialPreviewAutoRecallMe'],'raw':!![]});})[_0x97a5('0xd')](function(_0x2b7156){if(_0x2b7156&&_0x2b7156[_0x97a5('0x2d')]){return db[_0x97a5('0x60')]['transaction'](function(_0x30d166){var _0x270991={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x97a5('0x52')](_0x97a5('0x53'))},'VoiceQueueId':{'$in':_[_0x97a5('0x13')](_0x2b7156,'id')},'$or':[{'UserId':null},{'UserId':_0xbfde6['user']['id']}]};var _0x4914ca={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x2b7156)[_0x97a5('0x36')]([_0x97a5('0x61'),0x0])['map']('id')[_0x97a5('0x62')]()},'$or':[{'UserId':null},{'UserId':_0xbfde6[_0x97a5('0x4f')]['id']}]};var _0x31460b={'$or':[_0x270991,_0x4914ca]};var _0x3ba5db=[];if(_0xbfde6['body'][_0x97a5('0x63')]&&_0xbfde6['body']['direction']==='prev'){if(!_['isEmpty'](_0xbfde6[_0x97a5('0x42')][_0x97a5('0x64')])){_0x31460b['id']={'$in':_0xbfde6[_0x97a5('0x42')][_0x97a5('0x64')]};}_0x3ba5db=[[_0x97a5('0x65'),_0x97a5('0x66')],[_0x97a5('0x67'),_0x2b7156[0x0][_0x97a5('0x68')]==='ASC'?_0x97a5('0x69'):_0x97a5('0x66')],db['sequelize'][_0x97a5('0x6a')](_0x97a5('0x6b')),['id','DESC']];}else{if(!_[_0x97a5('0x6c')](_0xbfde6[_0x97a5('0x42')]['hopperIds'])){_0x31460b['id']={'$notIn':_0xbfde6[_0x97a5('0x42')][_0x97a5('0x64')]};}_0x3ba5db=[['priority','DESC'],[_0x97a5('0x67'),_0x2b7156[0x0]['dialOrderByScheduledAt']],db[_0x97a5('0x60')]['literal'](_0x97a5('0x6d')),['id',_0x97a5('0x66')]];}return db[_0x97a5('0x14')][_0x97a5('0x6e')]({'attributes':['id',_0x97a5('0x6f'),_0x97a5('0x54'),_0x97a5('0x70')],'where':_0x31460b,'order':_0x3ba5db,'transaction':_0x30d166,'lock':_0x30d166['LOCK'][_0x97a5('0x71')],'include':[{'model':db[_0x97a5('0x55')],'as':_0x97a5('0x72'),'attributes':_0x5bec31,'include':[{'model':db[_0x97a5('0x73')],'as':_0x97a5('0x74'),'attributes':['id','name']}]},{'model':db['CmList'],'as':_0x97a5('0x75'),'attributes':['id',_0x97a5('0x11')]},{'model':db['VoiceQueue'],'as':_0x97a5('0x76'),'attributes':['id',_0x97a5('0x11'),'dialActive']}]})[_0x97a5('0xd')](function(_0x5df8b3){if(_0x5df8b3){return _0x5df8b3[_0x97a5('0xc')]({'UserId':_0xbfde6[_0x97a5('0x4f')]['id']},{'transaction':_0x30d166});}});});}})[_0x97a5('0xd')](handleEntityNotFound(_0x522e6f,null))[_0x97a5('0xd')](respondWithResult(_0x522e6f,null))[_0x97a5('0x40')](handleError(_0x522e6f,null));};exports['getPreviewRecall']=function(_0x2df3f0,_0x552e76,_0x3abe99){var _0x4f30fb=[];var _0x140320=_0x2df3f0[_0x97a5('0x43')]['id'];var _0x50979b=_0x2df3f0[_0x97a5('0x4f')]['id'];return db[_0x97a5('0x55')][_0x97a5('0x44')]()['then'](function(_0x274d85){_0x4f30fb=_[_0x97a5('0x3d')](_0x274d85);return db[_0x97a5('0x60')][_0x97a5('0x77')](function(_0x1981b9){const _0x360df4={'id':_0x140320};return db[_0x97a5('0x14')][_0x97a5('0x6e')]({'attributes':['id',_0x97a5('0x6f'),_0x97a5('0x70')],'where':_0x360df4,'transaction':_0x1981b9,'lock':_0x1981b9[_0x97a5('0x78')][_0x97a5('0x71')],'include':[{'model':db['CmContact'],'as':_0x97a5('0x72'),'attributes':_0x4f30fb,'include':[{'model':db[_0x97a5('0x73')],'as':_0x97a5('0x74'),'attributes':['id','name']}]},{'model':db[_0x97a5('0x79')],'as':'List','attributes':['id',_0x97a5('0x11')]},{'model':db[_0x97a5('0x48')],'as':_0x97a5('0x76'),'attributes':['id',_0x97a5('0x11'),_0x97a5('0x7a')]}]})['then'](function(_0x16eb72){if(_0x16eb72){return _0x16eb72[_0x97a5('0xc')]({'UserId':_0x50979b},{'transaction':_0x1981b9});}});});})[_0x97a5('0xd')](handleEntityNotFound(_0x552e76,null))[_0x97a5('0xd')](respondWithResult(_0x552e76,null))['catch'](handleError(_0x552e76,null));};exports['getOpenContacts']=function(_0x4fb59c,_0x14bab0){return _0x4fb59c[_0x97a5('0x4f')][_0x97a5('0x7b')]({'where':{'type':_0x97a5('0x5e'),'dialActive':!![],'dialMethod':_0x97a5('0x5f')},'attributes':['id'],'raw':!![]})[_0x97a5('0xd')](function(_0x277b35){if(_0x277b35&&_0x277b35[_0x97a5('0x2d')]){return db[_0x97a5('0x14')][_0x97a5('0xa')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x97a5('0x52')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x97a5('0x13')](_0x277b35,'id')},'$or':[{'UserId':null},{'UserId':_0x4fb59c[_0x97a5('0x4f')]['id']}]}});}return 0x0;})[_0x97a5('0xd')](function(_0x1995a7){if(!_['isNil'](_0x1995a7)&&_[_0x97a5('0x7c')](_0x1995a7)){return _0x14bab0[_0x97a5('0x5')](0xc8)['json']({'contacts':_0x1995a7});}else{logger[_0x97a5('0xf')](_0x97a5('0x7d'),_0x97a5('0x7e'),0x194,_0x97a5('0x7f'));_0x14bab0[_0x97a5('0xe')](0x194);}})[_0x97a5('0x40')](handleError(_0x14bab0,null));};exports[_0x97a5('0x80')]=function(_0x484282,_0x2c8fee){var _0x568396=shared[_0x97a5('0x81')];var _0x5a0b6d=[];_[_0x97a5('0x13')](_0x568396,function(_0xe46572){_0x5a0b6d[_0x97a5('0x82')]({'id':_0xe46572[_0x97a5('0x11')],'name':_0xe46572[_0x97a5('0x11')],'utcOffset':_0xe46572[_0x97a5('0x83')]});});return _0x2c8fee['status'](0xc8)['json']({'tz':_0x5a0b6d});};exports[_0x97a5('0x84')]=function(_0x59facf,_0x4eacff){var _0x162d93=shared[_0x97a5('0x81')];var _0x377257={};if(!_[_0x97a5('0x58')](_0x162d93[_0x59facf[_0x97a5('0x42')]['id']]))_0x377257=_0x162d93[_0x59facf[_0x97a5('0x42')]['id']];return _0x4eacff['status'](0xc8)[_0x97a5('0x6')](_0x377257);};