cc8f87569c48de2195415ce2029539ade24edab0
[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 _0x4ab0=['find','catch','create','body','update','describe','destroy','VoiceQueueId','VoiceQueue','Campaign','CampaignId','omit','dataValues','updatedAt','state','statedesc','deleted','campaign','membername','user','UserId','deletedat','YYYY-MM-DD\x20HH:mm:ss','calleridnum','queue','ivr','CmContact','ContactId','firstName','lastName','isNil','finally','CmHopperFinal','end','getPreview','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','dialPreviewAutoRecallMe','sequelize','transaction','format','value','direction','prev','isEmpty','hopperIds','ASC','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','scheduledAt','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','phone','LOCK','UPDATE','Contact','Company','CmList','List','dialActive','recallme','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','getOpenContacts','entity\x20not\x20found','getTimezones','push','utcOffset','getTimezone','timezones','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','json','offset','limit','undefined','count','status','set','Content-Range','then','error','stack','name','send','index','map','CmHopper','rawAttributes','fieldName','key','query','filters','intersection','concat','$or','$gt','$gte','$lt','$lte','$ne','$eq','$not','$between','$in','$notIn','$like','$notLike','$contains','$contained','$any','attributes','fields','length','model','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','type','includeAll','include','findAll','rows','show','params','keys','options'];(function(_0x11d5a1,_0x560e85){var _0x4c1187=function(_0x455411){while(--_0x455411){_0x11d5a1['push'](_0x11d5a1['shift']());}};_0x4c1187(++_0x560e85);}(_0x4ab0,0xd5));var _0x04ab=function(_0xe21d41,_0x4ffb1a){_0xe21d41=_0xe21d41-0x0;var _0x204834=_0x4ab0[_0xe21d41];return _0x204834;};'use strict';var moment=require('moment');var _=require(_0x04ab('0x0'));var qs=require(_0x04ab('0x1'));var logger=require(_0x04ab('0x2'))(_0x04ab('0x3'));var shared=require(_0x04ab('0x4'));var db=require('../../mysqldb')['db'];function respondWithResult(_0x4c3a53,_0x45dfee){_0x45dfee=_0x45dfee||0xc8;return function(_0xb1bf2d){if(_0xb1bf2d){return _0x4c3a53['status'](_0x45dfee)[_0x04ab('0x5')](_0xb1bf2d);}};}function respondWithFilteredResult(_0x2c5730,_0x4edd2e){return function(_0x3f5901){if(_0x3f5901){var _0x293f1d=typeof _0x4edd2e[_0x04ab('0x6')]==='undefined'&&typeof _0x4edd2e[_0x04ab('0x7')]===_0x04ab('0x8');var _0x13fde9=_0x3f5901[_0x04ab('0x9')];var _0x4dc264=_0x293f1d?0x0:_0x4edd2e[_0x04ab('0x6')];var _0x3608b7=_0x293f1d?_0x3f5901[_0x04ab('0x9')]:_0x4edd2e[_0x04ab('0x6')]+_0x4edd2e['limit'];var _0x3f91fe;if(_0x3608b7>=_0x13fde9){_0x3608b7=_0x13fde9;_0x3f91fe=0xc8;}else{_0x3f91fe=0xce;}_0x2c5730[_0x04ab('0xa')](_0x3f91fe);return _0x2c5730[_0x04ab('0xb')](_0x04ab('0xc'),_0x4dc264+'-'+_0x3608b7+'/'+_0x13fde9)[_0x04ab('0x5')](_0x3f5901);}return null;};}function saveUpdates(_0x386d0a,_0x4a6b39){return function(_0x710503){if(_0x710503){return _0x710503['update'](_0x386d0a)[_0x04ab('0xd')](function(_0xef8710){return _0xef8710;});}return null;};}function handleEntityNotFound(_0x2abdf8,_0x428798){return function(_0x4f0da1){if(!_0x4f0da1){_0x2abdf8['sendStatus'](0x194);}return _0x4f0da1;};}function handleError(_0x58aef3,_0x103ca8){_0x103ca8=_0x103ca8||0x1f4;return function(_0x3cee44){logger[_0x04ab('0xe')](_0x3cee44[_0x04ab('0xf')]);if(_0x3cee44[_0x04ab('0x10')]){delete _0x3cee44[_0x04ab('0x10')];}_0x58aef3[_0x04ab('0xa')](_0x103ca8)[_0x04ab('0x11')](_0x3cee44);};}exports[_0x04ab('0x12')]=function(_0x205600,_0x5ce43c){var _0x45c328={},_0x83ab27={},_0x292eae={'count':0x0,'rows':[]};var _0xea243f=_[_0x04ab('0x13')](db[_0x04ab('0x14')][_0x04ab('0x15')],function(_0x1d3210){return{'name':_0x1d3210[_0x04ab('0x16')],'type':_0x1d3210['type'][_0x04ab('0x17')]};});_0x83ab27['model']=_[_0x04ab('0x13')](_0xea243f,_0x04ab('0x10'));_0x83ab27[_0x04ab('0x18')]=_['keys'](_0x205600[_0x04ab('0x18')]);_0x83ab27[_0x04ab('0x19')]=_[_0x04ab('0x1a')](_0x83ab27['model'],_0x83ab27['query']);_0x83ab27[_0x04ab('0x19')]=_[_0x04ab('0x1b')](_0x83ab27['filters'],['$and',_0x04ab('0x1c'),_0x04ab('0x1d'),_0x04ab('0x1e'),_0x04ab('0x1f'),_0x04ab('0x20'),_0x04ab('0x21'),_0x04ab('0x22'),_0x04ab('0x23'),_0x04ab('0x24'),'$notBetween',_0x04ab('0x25'),_0x04ab('0x26'),_0x04ab('0x27'),_0x04ab('0x28'),'$iLike','$notILike',_0x04ab('0x27'),'$overlap',_0x04ab('0x29'),_0x04ab('0x2a'),_0x04ab('0x2b')]);_0x45c328[_0x04ab('0x2c')]=_[_0x04ab('0x1a')](_0x83ab27['model'],qs['fields'](_0x205600[_0x04ab('0x18')][_0x04ab('0x2d')]));_0x45c328[_0x04ab('0x2c')]=_0x45c328[_0x04ab('0x2c')][_0x04ab('0x2e')]?_0x45c328[_0x04ab('0x2c')]:_0x83ab27[_0x04ab('0x2f')];if(!_0x205600[_0x04ab('0x18')][_0x04ab('0x30')](_0x04ab('0x31'))){_0x45c328[_0x04ab('0x7')]=qs[_0x04ab('0x7')](_0x205600[_0x04ab('0x18')]['limit']);_0x45c328[_0x04ab('0x6')]=qs[_0x04ab('0x6')](_0x205600['query'][_0x04ab('0x6')]);}_0x45c328[_0x04ab('0x32')]=qs['sort'](_0x205600[_0x04ab('0x18')][_0x04ab('0x33')]);_0x45c328['where']=qs[_0x04ab('0x19')](_[_0x04ab('0x34')](_0x205600[_0x04ab('0x18')],_0x83ab27[_0x04ab('0x19')]),_0xea243f);if(_0x205600[_0x04ab('0x18')][_0x04ab('0x35')]){_0x45c328['where']=_[_0x04ab('0x36')](_0x45c328[_0x04ab('0x37')],{'$or':_[_0x04ab('0x13')](_0xea243f,function(_0x4fb442){if(_0x4fb442[_0x04ab('0x38')]!=='VIRTUAL'){var _0x53c52b={};_0x53c52b[_0x4fb442[_0x04ab('0x10')]]={'$like':'%'+_0x205600[_0x04ab('0x18')]['filter']+'%'};return _0x53c52b;}})});}_0x45c328=_[_0x04ab('0x36')]({},_0x45c328,_0x205600['options']);var _0x3c66a8={'where':_0x45c328[_0x04ab('0x37')]};return db[_0x04ab('0x14')][_0x04ab('0x9')](_0x3c66a8)[_0x04ab('0xd')](function(_0x4018fa){_0x292eae[_0x04ab('0x9')]=_0x4018fa;if(_0x205600[_0x04ab('0x18')][_0x04ab('0x39')]){_0x45c328[_0x04ab('0x3a')]=[{'all':!![]}];}return db[_0x04ab('0x14')][_0x04ab('0x3b')](_0x45c328);})['then'](function(_0x574c6e){_0x292eae[_0x04ab('0x3c')]=_0x574c6e;return _0x292eae;})['then'](respondWithFilteredResult(_0x5ce43c,_0x45c328))['catch'](handleError(_0x5ce43c,null));};exports[_0x04ab('0x3d')]=function(_0x206f0d,_0x369e03){var _0x4327b9={'raw':!![],'where':{'id':_0x206f0d[_0x04ab('0x3e')]['id']}},_0x5b6937={};_0x5b6937[_0x04ab('0x2f')]=_[_0x04ab('0x3f')](db[_0x04ab('0x14')]['rawAttributes']);_0x5b6937[_0x04ab('0x18')]=_[_0x04ab('0x3f')](_0x206f0d[_0x04ab('0x18')]);_0x5b6937[_0x04ab('0x19')]=_[_0x04ab('0x1a')](_0x5b6937[_0x04ab('0x2f')],_0x5b6937[_0x04ab('0x18')]);_0x4327b9[_0x04ab('0x2c')]=_['intersection'](_0x5b6937['model'],qs[_0x04ab('0x2d')](_0x206f0d[_0x04ab('0x18')][_0x04ab('0x2d')]));_0x4327b9[_0x04ab('0x2c')]=_0x4327b9[_0x04ab('0x2c')]['length']?_0x4327b9[_0x04ab('0x2c')]:_0x5b6937[_0x04ab('0x2f')];if(_0x206f0d[_0x04ab('0x18')]['includeAll']){_0x4327b9[_0x04ab('0x3a')]=[{'all':!![]}];}_0x4327b9=_[_0x04ab('0x36')]({},_0x4327b9,_0x206f0d[_0x04ab('0x40')]);return db[_0x04ab('0x14')][_0x04ab('0x41')](_0x4327b9)[_0x04ab('0xd')](handleEntityNotFound(_0x369e03,null))[_0x04ab('0xd')](respondWithResult(_0x369e03,null))[_0x04ab('0x42')](handleError(_0x369e03,null));};exports[_0x04ab('0x43')]=function(_0x183464,_0x49999e){return db[_0x04ab('0x14')][_0x04ab('0x43')](_0x183464[_0x04ab('0x44')],{})[_0x04ab('0xd')](respondWithResult(_0x49999e,0xc9))[_0x04ab('0x42')](handleError(_0x49999e,null));};exports[_0x04ab('0x45')]=function(_0x4b4536,_0x272689){if(_0x4b4536[_0x04ab('0x44')]['id']){delete _0x4b4536[_0x04ab('0x44')]['id'];}return db[_0x04ab('0x14')]['find']({'where':{'id':_0x4b4536[_0x04ab('0x3e')]['id']}})[_0x04ab('0xd')](handleEntityNotFound(_0x272689,null))[_0x04ab('0xd')](saveUpdates(_0x4b4536[_0x04ab('0x44')],null))[_0x04ab('0xd')](respondWithResult(_0x272689,null))['catch'](handleError(_0x272689,null));};exports[_0x04ab('0x46')]=function(_0x15b995,_0x551f94){return db['CmHopper'][_0x04ab('0x46')]()[_0x04ab('0xd')](respondWithResult(_0x551f94,null))[_0x04ab('0x42')](handleError(_0x551f94,null));};exports[_0x04ab('0x47')]=function(_0x1c4aa2,_0x3a9056){var _0xae46c7;var _0x5d528f=_0x1c4aa2[_0x04ab('0x3e')]['id'];return db[_0x04ab('0x14')][_0x04ab('0x41')]({'where':{'id':_0x1c4aa2['params']['id']}})[_0x04ab('0xd')](handleEntityNotFound(_0x3a9056,null))[_0x04ab('0xd')](function(_0x4e92f5){if(_0x4e92f5){return _0x4e92f5[_0x04ab('0x47')]()['then'](function(_0xc9db25){return _0xc9db25;});}})['then'](function(_0x117963){_0xae46c7=_0x117963;if(_0x117963){if(_0x117963['VoiceQueueId']||_0x117963['CampaignId']){return db[_0x117963[_0x04ab('0x48')]?_0x04ab('0x49'):_0x04ab('0x4a')]['find']({'where':{'id':_0x117963['VoiceQueueId']?_0x117963[_0x04ab('0x48')]:_0x117963[_0x04ab('0x4b')]},'attributes':['id',_0x04ab('0x10')],'raw':!![]});}}})['then'](function(_0x2907b1){var _0x58e7d4={};if(_0x2907b1){_[_0x04ab('0x36')](_0x58e7d4,_[_0x04ab('0x4c')](_0xae46c7[_0x04ab('0x4d')],['createdAt',_0x04ab('0x4e'),'id']));_0x58e7d4[_0x04ab('0x4f')]=0x15;_0x58e7d4[_0x04ab('0x50')]=_0x04ab('0x51');_0x58e7d4[_0x04ab('0x52')]=_0x2907b1[_0x04ab('0x10')];_0x58e7d4[_0x04ab('0x53')]=_0x1c4aa2[_0x04ab('0x54')][_0x04ab('0x10')];_0x58e7d4[_0x04ab('0x55')]=_0x1c4aa2[_0x04ab('0x54')]['id'];_0x58e7d4['deleted']=!![];_0x58e7d4[_0x04ab('0x56')]=moment()['format'](_0x04ab('0x57'));_0x58e7d4[_0x04ab('0x58')]=_0xae46c7['phone'];_0x58e7d4['campaigntype']=_0xae46c7[_0x04ab('0x48')]?_0x04ab('0x59'):_0x04ab('0x5a');return db[_0x04ab('0x5b')][_0x04ab('0x41')]({'where':{'id':_0x58e7d4[_0x04ab('0x5c')]},'attributes':[_0x04ab('0x5d'),_0x04ab('0x5e')]})[_0x04ab('0xd')](function(_0x4936cf){if(!_[_0x04ab('0x5f')](_0x3a9056)&&!_[_0x04ab('0x5f')](_0x4936cf[_0x04ab('0x5d')])){_0x58e7d4['calleridname']=_0x4936cf[_0x04ab('0x5d')];if(!_[_0x04ab('0x5f')](_0x4936cf[_0x04ab('0x5e')])){_0x58e7d4['calleridname']+='\x20'+_0x4936cf[_0x04ab('0x5e')];}}})[_0x04ab('0x60')](function(){return db[_0x04ab('0x61')][_0x04ab('0x43')](_0x58e7d4);});}})['then'](function(_0x40cfb2){return db['CmHopperAdditionalPhone'][_0x04ab('0x47')]({'where':{'CmHopperId':_0x5d528f}});})[_0x04ab('0xd')](function(){return _0x3a9056['status'](0xcc)[_0x04ab('0x62')]();})['catch'](handleError(_0x3a9056,null));};exports[_0x04ab('0x63')]=function(_0x161e3f,_0x451ad5){var _0x275287=[];return db['CmContact'][_0x04ab('0x46')]()[_0x04ab('0xd')](function(_0x452529){_0x275287=_[_0x04ab('0x3f')](_0x452529);return _0x161e3f[_0x04ab('0x54')][_0x04ab('0x64')]({'where':{'type':_0x04ab('0x65'),'dialActive':!![],'dialMethod':_0x04ab('0x66')},'attributes':['id',_0x04ab('0x67'),_0x04ab('0x68')],'raw':!![]});})[_0x04ab('0xd')](function(_0x2a4f59){if(_0x2a4f59&&_0x2a4f59[_0x04ab('0x2e')]){return db[_0x04ab('0x69')][_0x04ab('0x6a')](function(_0xf83cf4){var _0x439d7f={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x04ab('0x6b')](_0x04ab('0x57'))},'VoiceQueueId':{'$in':_[_0x04ab('0x13')](_0x2a4f59,'id')},'$or':[{'UserId':null},{'UserId':_0x161e3f[_0x04ab('0x54')]['id']}]};var _0x192dae={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x2a4f59)['filter']([_0x04ab('0x68'),0x0])['map']('id')[_0x04ab('0x6c')]()},'$or':[{'UserId':null},{'UserId':_0x161e3f[_0x04ab('0x54')]['id']}]};var _0x2e6521={'$or':[_0x439d7f,_0x192dae]};var _0x596c41=[];if(_0x161e3f[_0x04ab('0x44')][_0x04ab('0x6d')]&&_0x161e3f[_0x04ab('0x44')]['direction']===_0x04ab('0x6e')){if(!_[_0x04ab('0x6f')](_0x161e3f[_0x04ab('0x44')]['hopperIds'])){_0x2e6521['id']={'$in':_0x161e3f[_0x04ab('0x44')][_0x04ab('0x70')]};}_0x596c41=[['priority',_0x04ab('0x71')],['scheduledAt',_0x2a4f59[0x0]['dialOrderByScheduledAt']===_0x04ab('0x71')?_0x04ab('0x72'):_0x04ab('0x71')],db[_0x04ab('0x69')][_0x04ab('0x73')](_0x04ab('0x74')),['id',_0x04ab('0x72')]];}else{if(!_['isEmpty'](_0x161e3f['body'][_0x04ab('0x70')])){_0x2e6521['id']={'$notIn':_0x161e3f[_0x04ab('0x44')][_0x04ab('0x70')]};}_0x596c41=[['priority',_0x04ab('0x72')],[_0x04ab('0x75'),_0x2a4f59[0x0][_0x04ab('0x67')]],db[_0x04ab('0x69')]['literal'](_0x04ab('0x76')),['id','ASC']];}return db[_0x04ab('0x14')][_0x04ab('0x77')]({'attributes':['id',_0x04ab('0x78'),_0x04ab('0x79'),'recallme'],'where':_0x2e6521,'order':_0x596c41,'transaction':_0xf83cf4,'lock':_0xf83cf4[_0x04ab('0x7a')][_0x04ab('0x7b')],'include':[{'model':db[_0x04ab('0x5b')],'as':_0x04ab('0x7c'),'attributes':_0x275287,'include':[{'model':db['CmCompany'],'as':_0x04ab('0x7d'),'attributes':['id','name']}]},{'model':db[_0x04ab('0x7e')],'as':_0x04ab('0x7f'),'attributes':['id','name']},{'model':db[_0x04ab('0x49')],'as':'Queue','attributes':['id',_0x04ab('0x10'),_0x04ab('0x80')]}]})['then'](function(_0x2c2894){if(_0x2c2894){return _0x2c2894[_0x04ab('0x45')]({'UserId':_0x161e3f[_0x04ab('0x54')]['id']},{'transaction':_0xf83cf4});}});});}})[_0x04ab('0xd')](handleEntityNotFound(_0x451ad5,null))['then'](respondWithResult(_0x451ad5,null))[_0x04ab('0x42')](handleError(_0x451ad5,null));};exports['getPreviewRecall']=function(_0x114b38,_0x24c6b9,_0x4a7e20){var _0x4ee4c8=[];var _0x15b182=_0x114b38[_0x04ab('0x3e')]['id'];var _0x5a9dbf=_0x114b38[_0x04ab('0x54')]['id'];return db[_0x04ab('0x5b')][_0x04ab('0x46')]()['then'](function(_0x161014){_0x4ee4c8=_[_0x04ab('0x3f')](_0x161014);return db[_0x04ab('0x69')]['transaction'](function(_0x3d81d4){const _0x434340={'id':_0x15b182};return db[_0x04ab('0x14')][_0x04ab('0x77')]({'attributes':['id',_0x04ab('0x78'),_0x04ab('0x81')],'where':_0x434340,'transaction':_0x3d81d4,'lock':_0x3d81d4[_0x04ab('0x7a')]['UPDATE'],'include':[{'model':db[_0x04ab('0x5b')],'as':_0x04ab('0x7c'),'attributes':_0x4ee4c8,'include':[{'model':db['CmCompany'],'as':_0x04ab('0x7d'),'attributes':['id',_0x04ab('0x10')]}]},{'model':db['CmList'],'as':_0x04ab('0x7f'),'attributes':['id',_0x04ab('0x10')]},{'model':db[_0x04ab('0x49')],'as':'Queue','attributes':['id','name',_0x04ab('0x80')]}]})['then'](function(_0x2f778a){if(_0x2f778a){return _0x2f778a[_0x04ab('0x45')]({'UserId':_0x5a9dbf},{'transaction':_0x3d81d4});}});});})[_0x04ab('0xd')](handleEntityNotFound(_0x24c6b9,null))['then'](respondWithResult(_0x24c6b9,null))[_0x04ab('0x42')](handleError(_0x24c6b9,null));};exports['getOpenContacts']=function(_0x2af9ce,_0x31879a){return _0x2af9ce['user'][_0x04ab('0x64')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x04ab('0x66')},'attributes':['id'],'raw':!![]})[_0x04ab('0xd')](function(_0x11cb01){if(_0x11cb01&&_0x11cb01['length']){return db[_0x04ab('0x14')][_0x04ab('0x9')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x04ab('0x6b')](_0x04ab('0x57'))},'VoiceQueueId':{'$in':_['map'](_0x11cb01,'id')},'$or':[{'UserId':null},{'UserId':_0x2af9ce[_0x04ab('0x54')]['id']}]}});}return 0x0;})[_0x04ab('0xd')](function(_0x34cff9){if(!_[_0x04ab('0x5f')](_0x34cff9)&&_[_0x04ab('0x82')](_0x34cff9)){return _0x31879a['status'](0xc8)['json']({'contacts':_0x34cff9});}else{logger['error'](_0x04ab('0x83'),_0x04ab('0x84'),0x194,_0x04ab('0x85'));_0x31879a['sendStatus'](0x194);}})[_0x04ab('0x42')](handleError(_0x31879a,null));};exports[_0x04ab('0x86')]=function(_0x2949f5,_0x5bf83b){var _0x1c321b=shared['timezones'];var _0x539620=[];_[_0x04ab('0x13')](_0x1c321b,function(_0xb707e1){_0x539620[_0x04ab('0x87')]({'id':_0xb707e1[_0x04ab('0x10')],'name':_0xb707e1['name'],'utcOffset':_0xb707e1[_0x04ab('0x88')]});});return _0x5bf83b[_0x04ab('0xa')](0xc8)[_0x04ab('0x5')]({'tz':_0x539620});};exports[_0x04ab('0x89')]=function(_0x3c081d,_0x120da6){var _0x1331af=shared[_0x04ab('0x8a')];var _0x12b7d3={};if(!_[_0x04ab('0x5f')](_0x1331af[_0x3c081d[_0x04ab('0x44')]['id']]))_0x12b7d3=_0x1331af[_0x3c081d[_0x04ab('0x44')]['id']];return _0x120da6[_0x04ab('0xa')](0xc8)[_0x04ab('0x5')](_0x12b7d3);};