f8ef1d9bf970b66e07139f3795df6b45c005a867
[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 _0xbeea=['phone','campaigntype','queue','ivr','ContactId','firstName','lastName','isNil','calleridname','end','getPreview','CmContact','getVoiceQueues','outbound','dialOrderByScheduledAt','dialPreviewAutoRecallMe','sequelize','transaction','direction','isEmpty','hopperIds','priority','scheduledAt','ASC','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','Contact','Company','List','dialActive','update','CmCompany','Queue','getOpenContacts','preview','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','timezones','push','utcOffset','getTimezone','moment','../../components/parsers/qs','../../config/logger','api','../../mysqldb','status','json','offset','limit','count','Content-Range','sendStatus','error','stack','name','send','rawAttributes','type','key','model','map','keys','filters','concat','$and','$or','$gt','$gte','$lte','$ne','$eq','$not','$notBetween','$in','$like','$notLike','$iLike','$notILike','$overlap','$contains','$contained','$any','attributes','intersection','fields','query','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','CmHopper','then','includeAll','include','findAll','rows','catch','params','find','create','body','describe','destroy','CampaignId','VoiceQueue','Campaign','VoiceQueueId','omit','createdAt','updatedAt','state','deleted','campaign','membername','UserId','user','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum'];(function(_0x7007a1,_0x4137dc){var _0x47b44b=function(_0x21f704){while(--_0x21f704){_0x7007a1['push'](_0x7007a1['shift']());}};_0x47b44b(++_0x4137dc);}(_0xbeea,0xb1));var _0xabee=function(_0x44b3ee,_0x3dec88){_0x44b3ee=_0x44b3ee-0x0;var _0x3da25e=_0xbeea[_0x44b3ee];return _0x3da25e;};'use strict';var moment=require(_0xabee('0x0'));var _=require('lodash');var qs=require(_0xabee('0x1'));var logger=require(_0xabee('0x2'))(_0xabee('0x3'));var shared=require('../../config/environment');var db=require(_0xabee('0x4'))['db'];function respondWithResult(_0x59e264,_0x58afa7){_0x58afa7=_0x58afa7||0xc8;return function(_0x33571e){if(_0x33571e){return _0x59e264[_0xabee('0x5')](_0x58afa7)[_0xabee('0x6')](_0x33571e);}};}function respondWithFilteredResult(_0x1ea258,_0x58c9ef){return function(_0x5bb218){if(_0x5bb218){var _0x238317=typeof _0x58c9ef[_0xabee('0x7')]==='undefined'&&typeof _0x58c9ef[_0xabee('0x8')]==='undefined';var _0x14a78d=_0x5bb218[_0xabee('0x9')];var _0x2a1c06=_0x238317?0x0:_0x58c9ef[_0xabee('0x7')];var _0x33a862=_0x238317?_0x5bb218[_0xabee('0x9')]:_0x58c9ef['offset']+_0x58c9ef[_0xabee('0x8')];var _0x3bbb18;if(_0x33a862>=_0x14a78d){_0x33a862=_0x14a78d;_0x3bbb18=0xc8;}else{_0x3bbb18=0xce;}_0x1ea258[_0xabee('0x5')](_0x3bbb18);return _0x1ea258['set'](_0xabee('0xa'),_0x2a1c06+'-'+_0x33a862+'/'+_0x14a78d)[_0xabee('0x6')](_0x5bb218);}return null;};}function saveUpdates(_0x16d6a5,_0x49fb73){return function(_0x5915a1){if(_0x5915a1){return _0x5915a1['update'](_0x16d6a5)['then'](function(_0x57abc2){return _0x57abc2;});}return null;};}function handleEntityNotFound(_0x113c5c,_0x370a4e){return function(_0x38ba29){if(!_0x38ba29){_0x113c5c[_0xabee('0xb')](0x194);}return _0x38ba29;};}function handleError(_0x38cf66,_0x5e94ff){_0x5e94ff=_0x5e94ff||0x1f4;return function(_0x177670){logger[_0xabee('0xc')](_0x177670[_0xabee('0xd')]);if(_0x177670[_0xabee('0xe')]){delete _0x177670[_0xabee('0xe')];}_0x38cf66[_0xabee('0x5')](_0x5e94ff)[_0xabee('0xf')](_0x177670);};}exports['index']=function(_0x33e3c0,_0x112bb9){var _0x447ed3={},_0x471b24={},_0x150bdb={'count':0x0,'rows':[]};var _0xcf2973=_['map'](db['CmHopper'][_0xabee('0x10')],function(_0x593923){return{'name':_0x593923['fieldName'],'type':_0x593923[_0xabee('0x11')][_0xabee('0x12')]};});_0x471b24[_0xabee('0x13')]=_[_0xabee('0x14')](_0xcf2973,_0xabee('0xe'));_0x471b24['query']=_[_0xabee('0x15')](_0x33e3c0['query']);_0x471b24['filters']=_['intersection'](_0x471b24[_0xabee('0x13')],_0x471b24['query']);_0x471b24[_0xabee('0x16')]=_[_0xabee('0x17')](_0x471b24[_0xabee('0x16')],[_0xabee('0x18'),_0xabee('0x19'),_0xabee('0x1a'),_0xabee('0x1b'),'$lt',_0xabee('0x1c'),_0xabee('0x1d'),_0xabee('0x1e'),_0xabee('0x1f'),'$between',_0xabee('0x20'),_0xabee('0x21'),'$notIn',_0xabee('0x22'),_0xabee('0x23'),_0xabee('0x24'),_0xabee('0x25'),'$like',_0xabee('0x26'),_0xabee('0x27'),_0xabee('0x28'),_0xabee('0x29')]);_0x447ed3[_0xabee('0x2a')]=_[_0xabee('0x2b')](_0x471b24[_0xabee('0x13')],qs[_0xabee('0x2c')](_0x33e3c0[_0xabee('0x2d')]['fields']));_0x447ed3[_0xabee('0x2a')]=_0x447ed3['attributes'][_0xabee('0x2e')]?_0x447ed3[_0xabee('0x2a')]:_0x471b24[_0xabee('0x13')];if(!_0x33e3c0[_0xabee('0x2d')]['hasOwnProperty'](_0xabee('0x2f'))){_0x447ed3['limit']=qs[_0xabee('0x8')](_0x33e3c0['query'][_0xabee('0x8')]);_0x447ed3['offset']=qs['offset'](_0x33e3c0[_0xabee('0x2d')][_0xabee('0x7')]);}_0x447ed3[_0xabee('0x30')]=qs[_0xabee('0x31')](_0x33e3c0[_0xabee('0x2d')][_0xabee('0x31')]);_0x447ed3[_0xabee('0x32')]=qs[_0xabee('0x16')](_['pick'](_0x33e3c0[_0xabee('0x2d')],_0x471b24[_0xabee('0x16')]),_0xcf2973);if(_0x33e3c0[_0xabee('0x2d')][_0xabee('0x33')]){_0x447ed3[_0xabee('0x32')]=_[_0xabee('0x34')](_0x447ed3[_0xabee('0x32')],{'$or':_[_0xabee('0x14')](_0xcf2973,function(_0x41c4a3){if(_0x41c4a3[_0xabee('0x11')]!==_0xabee('0x35')){var _0x3112fd={};_0x3112fd[_0x41c4a3[_0xabee('0xe')]]={'$like':'%'+_0x33e3c0[_0xabee('0x2d')][_0xabee('0x33')]+'%'};return _0x3112fd;}})});}_0x447ed3=_[_0xabee('0x34')]({},_0x447ed3,_0x33e3c0[_0xabee('0x36')]);var _0x491279={'where':_0x447ed3['where']};return db[_0xabee('0x37')][_0xabee('0x9')](_0x491279)[_0xabee('0x38')](function(_0x153c0b){_0x150bdb['count']=_0x153c0b;if(_0x33e3c0[_0xabee('0x2d')][_0xabee('0x39')]){_0x447ed3[_0xabee('0x3a')]=[{'all':!![]}];}return db['CmHopper'][_0xabee('0x3b')](_0x447ed3);})['then'](function(_0x186333){_0x150bdb[_0xabee('0x3c')]=_0x186333;return _0x150bdb;})[_0xabee('0x38')](respondWithFilteredResult(_0x112bb9,_0x447ed3))[_0xabee('0x3d')](handleError(_0x112bb9,null));};exports['show']=function(_0x48d6ca,_0x417281){var _0xb76b1d={'raw':!![],'where':{'id':_0x48d6ca[_0xabee('0x3e')]['id']}},_0xa2ae67={};_0xa2ae67[_0xabee('0x13')]=_['keys'](db[_0xabee('0x37')][_0xabee('0x10')]);_0xa2ae67['query']=_[_0xabee('0x15')](_0x48d6ca[_0xabee('0x2d')]);_0xa2ae67['filters']=_[_0xabee('0x2b')](_0xa2ae67[_0xabee('0x13')],_0xa2ae67[_0xabee('0x2d')]);_0xb76b1d[_0xabee('0x2a')]=_[_0xabee('0x2b')](_0xa2ae67[_0xabee('0x13')],qs[_0xabee('0x2c')](_0x48d6ca['query'][_0xabee('0x2c')]));_0xb76b1d[_0xabee('0x2a')]=_0xb76b1d[_0xabee('0x2a')]['length']?_0xb76b1d[_0xabee('0x2a')]:_0xa2ae67[_0xabee('0x13')];if(_0x48d6ca['query'][_0xabee('0x39')]){_0xb76b1d[_0xabee('0x3a')]=[{'all':!![]}];}_0xb76b1d=_['merge']({},_0xb76b1d,_0x48d6ca[_0xabee('0x36')]);return db[_0xabee('0x37')][_0xabee('0x3f')](_0xb76b1d)[_0xabee('0x38')](handleEntityNotFound(_0x417281,null))[_0xabee('0x38')](respondWithResult(_0x417281,null))[_0xabee('0x3d')](handleError(_0x417281,null));};exports[_0xabee('0x40')]=function(_0x5a5fa7,_0x2aa2f0){return db[_0xabee('0x37')][_0xabee('0x40')](_0x5a5fa7['body'],{})[_0xabee('0x38')](respondWithResult(_0x2aa2f0,0xc9))[_0xabee('0x3d')](handleError(_0x2aa2f0,null));};exports['update']=function(_0x57c65c,_0x4b458f){if(_0x57c65c[_0xabee('0x41')]['id']){delete _0x57c65c[_0xabee('0x41')]['id'];}return db['CmHopper']['find']({'where':{'id':_0x57c65c[_0xabee('0x3e')]['id']}})[_0xabee('0x38')](handleEntityNotFound(_0x4b458f,null))[_0xabee('0x38')](saveUpdates(_0x57c65c[_0xabee('0x41')],null))[_0xabee('0x38')](respondWithResult(_0x4b458f,null))[_0xabee('0x3d')](handleError(_0x4b458f,null));};exports[_0xabee('0x42')]=function(_0x307d34,_0xfb2b6f){return db[_0xabee('0x37')][_0xabee('0x42')]()[_0xabee('0x38')](respondWithResult(_0xfb2b6f,null))[_0xabee('0x3d')](handleError(_0xfb2b6f,null));};exports[_0xabee('0x43')]=function(_0x3e277d,_0x252f60){var _0x1b5cf2;var _0x34dca8=_0x3e277d['params']['id'];return db[_0xabee('0x37')][_0xabee('0x3f')]({'where':{'id':_0x3e277d['params']['id']}})['then'](handleEntityNotFound(_0x252f60,null))[_0xabee('0x38')](function(_0x3ecfff){if(_0x3ecfff){return _0x3ecfff[_0xabee('0x43')]()[_0xabee('0x38')](function(_0xe2433f){return _0xe2433f;});}})[_0xabee('0x38')](function(_0x37e589){_0x1b5cf2=_0x37e589;if(_0x37e589){if(_0x37e589['VoiceQueueId']||_0x37e589[_0xabee('0x44')]){return db[_0x37e589['VoiceQueueId']?_0xabee('0x45'):_0xabee('0x46')]['find']({'where':{'id':_0x37e589[_0xabee('0x47')]?_0x37e589[_0xabee('0x47')]:_0x37e589[_0xabee('0x44')]},'attributes':['id','name'],'raw':!![]});}}})[_0xabee('0x38')](function(_0x4f36a4){var _0x1fc0da={};if(_0x4f36a4){_[_0xabee('0x34')](_0x1fc0da,_[_0xabee('0x48')](_0x1b5cf2['dataValues'],[_0xabee('0x49'),_0xabee('0x4a'),'id']));_0x1fc0da[_0xabee('0x4b')]=0x15;_0x1fc0da['statedesc']=_0xabee('0x4c');_0x1fc0da[_0xabee('0x4d')]=_0x4f36a4[_0xabee('0xe')];_0x1fc0da[_0xabee('0x4e')]=_0x3e277d['user'][_0xabee('0xe')];_0x1fc0da[_0xabee('0x4f')]=_0x3e277d[_0xabee('0x50')]['id'];_0x1fc0da['deleted']=!![];_0x1fc0da[_0xabee('0x51')]=moment()[_0xabee('0x52')](_0xabee('0x53'));_0x1fc0da[_0xabee('0x54')]=_0x1b5cf2[_0xabee('0x55')];_0x1fc0da[_0xabee('0x56')]=_0x1b5cf2[_0xabee('0x47')]?_0xabee('0x57'):_0xabee('0x58');return db['CmContact']['find']({'where':{'id':_0x1fc0da[_0xabee('0x59')]},'attributes':[_0xabee('0x5a'),_0xabee('0x5b')]})[_0xabee('0x38')](function(_0x30f70c){if(!_[_0xabee('0x5c')](_0x252f60)&&!_['isNil'](_0x30f70c[_0xabee('0x5a')])){_0x1fc0da[_0xabee('0x5d')]=_0x30f70c[_0xabee('0x5a')];if(!_['isNil'](_0x30f70c['lastName'])){_0x1fc0da[_0xabee('0x5d')]+='\x20'+_0x30f70c['lastName'];}}})['finally'](function(){return db['CmHopperFinal'][_0xabee('0x40')](_0x1fc0da);});}})['then'](function(_0x449530){return db['CmHopperAdditionalPhone'][_0xabee('0x43')]({'where':{'CmHopperId':_0x34dca8}});})['then'](function(){return _0x252f60[_0xabee('0x5')](0xcc)[_0xabee('0x5e')]();})[_0xabee('0x3d')](handleError(_0x252f60,null));};exports[_0xabee('0x5f')]=function(_0x553cfb,_0xc4a70d){var _0x5d52fd=[];return db[_0xabee('0x60')][_0xabee('0x42')]()[_0xabee('0x38')](function(_0x3a41cd){_0x5d52fd=_[_0xabee('0x15')](_0x3a41cd);return _0x553cfb[_0xabee('0x50')][_0xabee('0x61')]({'where':{'type':_0xabee('0x62'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id',_0xabee('0x63'),_0xabee('0x64')],'raw':!![]});})['then'](function(_0x1d9fc3){if(_0x1d9fc3&&_0x1d9fc3['length']){return db[_0xabee('0x65')][_0xabee('0x66')](function(_0x230d3a){var _0x3d4fef={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0xabee('0x53'))},'VoiceQueueId':{'$in':_[_0xabee('0x14')](_0x1d9fc3,'id')},'$or':[{'UserId':null},{'UserId':_0x553cfb[_0xabee('0x50')]['id']}]};var _0x47a0d2={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x1d9fc3)[_0xabee('0x33')]([_0xabee('0x64'),0x0])['map']('id')['value']()},'$or':[{'UserId':null},{'UserId':_0x553cfb[_0xabee('0x50')]['id']}]};var _0x1e0082={'$or':[_0x3d4fef,_0x47a0d2]};var _0x4a7bef=[];if(_0x553cfb[_0xabee('0x41')]['direction']&&_0x553cfb[_0xabee('0x41')][_0xabee('0x67')]==='prev'){if(!_[_0xabee('0x68')](_0x553cfb[_0xabee('0x41')][_0xabee('0x69')])){_0x1e0082['id']={'$in':_0x553cfb[_0xabee('0x41')][_0xabee('0x69')]};}_0x4a7bef=[[_0xabee('0x6a'),'ASC'],[_0xabee('0x6b'),_0x1d9fc3[0x0][_0xabee('0x63')]===_0xabee('0x6c')?_0xabee('0x6d'):'ASC'],db[_0xabee('0x65')][_0xabee('0x6e')]('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id',_0xabee('0x6d')]];}else{if(!_[_0xabee('0x68')](_0x553cfb[_0xabee('0x41')]['hopperIds'])){_0x1e0082['id']={'$notIn':_0x553cfb[_0xabee('0x41')][_0xabee('0x69')]};}_0x4a7bef=[[_0xabee('0x6a'),_0xabee('0x6d')],['scheduledAt',_0x1d9fc3[0x0][_0xabee('0x63')]],db['sequelize'][_0xabee('0x6e')](_0xabee('0x6f')),['id',_0xabee('0x6c')]];}return db[_0xabee('0x37')][_0xabee('0x70')]({'attributes':['id',_0xabee('0x71'),_0xabee('0x55'),'recallme'],'where':_0x1e0082,'order':_0x4a7bef,'transaction':_0x230d3a,'lock':_0x230d3a[_0xabee('0x72')]['UPDATE'],'include':[{'model':db[_0xabee('0x60')],'as':_0xabee('0x73'),'attributes':_0x5d52fd,'include':[{'model':db['CmCompany'],'as':_0xabee('0x74'),'attributes':['id',_0xabee('0xe')]}]},{'model':db['CmList'],'as':_0xabee('0x75'),'attributes':['id',_0xabee('0xe')]},{'model':db[_0xabee('0x45')],'as':'Queue','attributes':['id',_0xabee('0xe'),_0xabee('0x76')]}]})['then'](function(_0x446f9b){if(_0x446f9b){return _0x446f9b[_0xabee('0x77')]({'UserId':_0x553cfb['user']['id']},{'transaction':_0x230d3a});}});});}})[_0xabee('0x38')](handleEntityNotFound(_0xc4a70d,null))[_0xabee('0x38')](respondWithResult(_0xc4a70d,null))[_0xabee('0x3d')](handleError(_0xc4a70d,null));};exports['getPreviewRecall']=function(_0x5e4e68,_0x2e2c08,_0xfc581){var _0x112861=[];var _0x19d112=_0x5e4e68[_0xabee('0x3e')]['id'];var _0x3a9913=_0x5e4e68[_0xabee('0x50')]['id'];return db[_0xabee('0x60')][_0xabee('0x42')]()[_0xabee('0x38')](function(_0x414f81){_0x112861=_[_0xabee('0x15')](_0x414f81);return db['sequelize']['transaction'](function(_0x22f073){const _0x43af53={'id':_0x19d112};return db[_0xabee('0x37')]['findOne']({'attributes':['id',_0xabee('0x71'),'recallme'],'where':_0x43af53,'transaction':_0x22f073,'lock':_0x22f073[_0xabee('0x72')]['UPDATE'],'include':[{'model':db[_0xabee('0x60')],'as':_0xabee('0x73'),'attributes':_0x112861,'include':[{'model':db[_0xabee('0x78')],'as':_0xabee('0x74'),'attributes':['id','name']}]},{'model':db['CmList'],'as':_0xabee('0x75'),'attributes':['id','name']},{'model':db['VoiceQueue'],'as':_0xabee('0x79'),'attributes':['id',_0xabee('0xe'),_0xabee('0x76')]}]})[_0xabee('0x38')](function(_0x235463){if(_0x235463){return _0x235463[_0xabee('0x77')]({'UserId':_0x3a9913},{'transaction':_0x22f073});}});});})[_0xabee('0x38')](handleEntityNotFound(_0x2e2c08,null))['then'](respondWithResult(_0x2e2c08,null))['catch'](handleError(_0x2e2c08,null));};exports[_0xabee('0x7a')]=function(_0x398870,_0x5c49e6){return _0x398870[_0xabee('0x50')][_0xabee('0x61')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0xabee('0x7b')},'attributes':['id'],'raw':!![]})[_0xabee('0x38')](function(_0x5eb87b){if(_0x5eb87b&&_0x5eb87b[_0xabee('0x2e')]){return db['CmHopper'][_0xabee('0x9')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xabee('0x52')](_0xabee('0x53'))},'VoiceQueueId':{'$in':_[_0xabee('0x14')](_0x5eb87b,'id')},'$or':[{'UserId':null},{'UserId':_0x398870[_0xabee('0x50')]['id']}]}});}return 0x0;})[_0xabee('0x38')](function(_0xe8c89d){if(!_[_0xabee('0x5c')](_0xe8c89d)&&_[_0xabee('0x7c')](_0xe8c89d)){return _0x5c49e6[_0xabee('0x5')](0xc8)[_0xabee('0x6')]({'contacts':_0xe8c89d});}else{logger[_0xabee('0xc')](_0xabee('0x7d'),'getOpenContacts',0x194,_0xabee('0x7e'));_0x5c49e6[_0xabee('0xb')](0x194);}})[_0xabee('0x3d')](handleError(_0x5c49e6,null));};exports['getTimezones']=function(_0x4d72b9,_0x5ed061){var _0x56b37d=shared[_0xabee('0x7f')];var _0x1a6a66=[];_[_0xabee('0x14')](_0x56b37d,function(_0x4433b8){_0x1a6a66[_0xabee('0x80')]({'id':_0x4433b8[_0xabee('0xe')],'name':_0x4433b8[_0xabee('0xe')],'utcOffset':_0x4433b8[_0xabee('0x81')]});});return _0x5ed061[_0xabee('0x5')](0xc8)['json']({'tz':_0x1a6a66});};exports[_0xabee('0x82')]=function(_0x529640,_0x191634){var _0x50a6db=shared['timezones'];var _0x3ded8f={};if(!_[_0xabee('0x5c')](_0x50a6db[_0x529640[_0xabee('0x41')]['id']]))_0x3ded8f=_0x50a6db[_0x529640[_0xabee('0x41')]['id']];return _0x191634['status'](0xc8)[_0xabee('0x6')](_0x3ded8f);};