Built motion from commit (unavailable).|2.5.4
[motion2.git] / server / config / socketio.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 _0x688a=['User','role','agent','name','telephone','type','ivr','UserProfileSection','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','findAll','Telephones','Trunks','IvrCampaigns','resourceId','map','where','%s:queue:%s','length','format','user:%s','query','handshake','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','then','admin','include','push','VoiceQueue','ChatQueue','MailQueue','WhatsappQueue','Trunk','Campaign','user','voice:inbound','voice:outbound','userProfileId','FaxQueue','SmsQueue','MailQueues','OpenchannelQueues','OpenchannelQueue','WhatsappQueues','getVoiceQueues','getChatQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','fax','sms','mail','openchannel','telephone:%s','trunk:%s','leave','removeChatInteractions','emit','removeMailInteractions','user_has_fax_interactions:remove','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','catch','log','join','connection','setMaxListeners','request','remotePort','connectedAt','SocketIO\x20','nsp','address','disconnect','CONNECTED','lodash','util','bluebird','./environment','Agents'];(function(_0x56b9bc,_0x55d39c){var _0x163bf7=function(_0x5f0228){while(--_0x5f0228){_0x56b9bc['push'](_0x56b9bc['shift']());}};_0x163bf7(++_0x55d39c);}(_0x688a,0x124));var _0xa688=function(_0x2fab67,_0x2e63c4){_0x2fab67=_0x2fab67-0x0;var _0x3dfbab=_0x688a[_0x2fab67];return _0x3dfbab;};'use strict';var _=require(_0xa688('0x0'));var util=require(_0xa688('0x1'));var BPromise=require(_0xa688('0x2'));var db=require('../mysqldb')['db'];var config=require(_0xa688('0x3'));var queryQueues={'attributes':['id','name'],'include':[{'as':_0xa688('0x4'),'model':db[_0xa688('0x5')],'attributes':['id','name',_0xa688('0x6')],'raw':!![],'where':{'role':_0xa688('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xa688('0x8')],'where':{'role':_0xa688('0x9')}};var queryTrunks={'raw':!![],'attributes':['id',_0xa688('0x8')]};var queryAgents={'raw':!![],'attributes':['id',_0xa688('0x8')],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id','name',_0xa688('0xa')],'where':{'type':_0xa688('0xb')}};function getAssociatedResources(_0x1ab9f2,_0x5c3bc6,_0x4d3b92){return db[_0xa688('0xc')]['findOne']({'where':{'name':_0x1ab9f2,'userProfileId':_0x5c3bc6},'raw':!![]})['then'](function(_0x442638){if(_0x442638){if(_0x442638[_0xa688('0xd')]){switch(_0x1ab9f2){case _0xa688('0xe'):case _0xa688('0xf'):case _0xa688('0x10'):case _0xa688('0x11'):case'MailQueues':case'OpenchannelQueues':case'WhatsappQueues':return db[_0x4d3b92][_0xa688('0x12')](queryQueues);case _0xa688('0x13'):return db[_0x4d3b92]['findAll'](queryTelephones);case _0xa688('0x14'):return db[_0x4d3b92]['findAll'](queryTrunks);case _0xa688('0x15'):return db[_0x4d3b92][_0xa688('0x12')](queryCampaigns);}}else{return db['UserProfileResource']['findAll']({'attributes':[_0xa688('0x16')],'where':{'sectionId':_0x442638['id']},'raw':!![]})['then'](function(_0x1a55c2){if(_0x1a55c2){var _0x5b8b1f={'where':{'id':_[_0xa688('0x17')](_0x1a55c2,_0xa688('0x16'))},'raw':!![]};switch(_0x4d3b92){case _0xa688('0x5'):_0x5b8b1f[_0xa688('0x18')][_0xa688('0x6')]=_0xa688('0x9');break;case'Campaign':_0x5b8b1f['where'][_0xa688('0xa')]=_0xa688('0xb');break;}return db[_0x4d3b92]['findAll'](_0x5b8b1f);}else{return[];}});}}else{return[];}})['then'](function(_0x934baa){return _0x934baa;});}function joinOrLeaveQueues(_0x2085bf,_0x545c52,_0x37e9af,_0x598168){_0x2085bf[_0x545c52](util['format'](_0xa688('0x19'),_0x37e9af,_0x598168[_0xa688('0x8')]));if(_0x598168[_0xa688('0x4')]){for(var _0x27f12e=0x0;_0x27f12e<_0x598168[_0xa688('0x4')][_0xa688('0x1a')];_0x27f12e+=0x1){_0x2085bf[_0x545c52](util[_0xa688('0x1b')](_0xa688('0x1c'),_0x598168[_0xa688('0x4')][_0x27f12e][_0xa688('0x8')]));}}}function joinOrLeave(_0x3134ca,_0x301560,_0x42643){var _0x11133b;if(_0x3134ca['handshake'][_0xa688('0x1d')]['id']){db[_0xa688('0x5')]['find']({'attributes':['id',_0xa688('0x8'),_0xa688('0x6'),'userProfileId'],'where':{'id':_0x3134ca[_0xa688('0x1e')][_0xa688('0x1d')]['id']},'include':[{'model':db[_0xa688('0x1f')],'as':_0xa688('0x20'),'attributes':['id'],'raw':!![]},{'model':db[_0xa688('0x21')],'as':_0xa688('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0xa688('0x23')],'as':_0xa688('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0xa688('0x25')],'as':_0xa688('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0xa688('0x27')],'as':_0xa688('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0xa688('0x29')],'as':_0xa688('0x2a'),'attributes':['id'],'raw':!![]}]})[_0xa688('0x2b')](function(_0x5d1657){if(_0x5d1657){_0x11133b=_0x5d1657;_0x3134ca[_0x301560](util[_0xa688('0x1b')](_0xa688('0x1c'),_0x5d1657[_0xa688('0x8')]));var _0x1f9d59=[];switch(_0x5d1657[_0xa688('0x6')]){case _0xa688('0x2c'):_0x3134ca[_0x301560]('voice:inbound');_0x3134ca[_0x301560]('voice:outbound');if(queryQueues['hasOwnProperty'](_0xa688('0x2d'))){delete queryQueues['include'];}_0x1f9d59[_0xa688('0x2e')](db[_0xa688('0x2f')][_0xa688('0x12')](queryQueues));_0x1f9d59[_0xa688('0x2e')](db[_0xa688('0x30')][_0xa688('0x12')](queryQueues));_0x1f9d59[_0xa688('0x2e')](db['FaxQueue']['findAll'](queryQueues));_0x1f9d59['push'](db['SmsQueue'][_0xa688('0x12')](queryQueues));_0x1f9d59[_0xa688('0x2e')](db[_0xa688('0x31')]['findAll'](queryQueues));_0x1f9d59[_0xa688('0x2e')](db['OpenchannelQueue']['findAll'](queryQueues));_0x1f9d59['push'](db[_0xa688('0x32')][_0xa688('0x12')](queryQueues));_0x1f9d59[_0xa688('0x2e')](db['User']['findAll'](queryTelephones));_0x1f9d59[_0xa688('0x2e')](db[_0xa688('0x33')][_0xa688('0x12')](queryTrunks));_0x1f9d59[_0xa688('0x2e')](db[_0xa688('0x34')]['findAll'](queryCampaigns));_0x1f9d59['push'](db[_0xa688('0x5')]['findAll'](queryAgents));break;case _0xa688('0x35'):_0x3134ca[_0x301560](_0xa688('0x36'));_0x3134ca[_0x301560](_0xa688('0x37'));_0x1f9d59[_0xa688('0x2e')](getAssociatedResources('VoiceQueues',_0x5d1657[_0xa688('0x38')],'VoiceQueue'));_0x1f9d59['push'](getAssociatedResources(_0xa688('0xf'),_0x5d1657['userProfileId'],_0xa688('0x30')));_0x1f9d59['push'](getAssociatedResources(_0xa688('0x10'),_0x5d1657[_0xa688('0x38')],_0xa688('0x39')));_0x1f9d59['push'](getAssociatedResources(_0xa688('0x11'),_0x5d1657[_0xa688('0x38')],_0xa688('0x3a')));_0x1f9d59[_0xa688('0x2e')](getAssociatedResources(_0xa688('0x3b'),_0x5d1657[_0xa688('0x38')],_0xa688('0x31')));_0x1f9d59[_0xa688('0x2e')](getAssociatedResources(_0xa688('0x3c'),_0x5d1657[_0xa688('0x38')],_0xa688('0x3d')));_0x1f9d59['push'](getAssociatedResources(_0xa688('0x3e'),_0x5d1657['userProfileId'],_0xa688('0x32')));_0x1f9d59[_0xa688('0x2e')](getAssociatedResources(_0xa688('0x13'),_0x5d1657[_0xa688('0x38')],'User'));_0x1f9d59[_0xa688('0x2e')](getAssociatedResources(_0xa688('0x14'),_0x5d1657['userProfileId'],_0xa688('0x33')));_0x1f9d59[_0xa688('0x2e')](getAssociatedResources(_0xa688('0x15'),_0x5d1657[_0xa688('0x38')],_0xa688('0x34')));_0x1f9d59[_0xa688('0x2e')](db[_0xa688('0x5')][_0xa688('0x12')](queryAgents));break;case _0xa688('0x7'):_0x3134ca[_0x301560]('voice:inbound');_0x3134ca[_0x301560](_0xa688('0x37'));_0x1f9d59[_0xa688('0x2e')](_0x5d1657[_0xa688('0x3f')]({'attributes':['id',_0xa688('0x8')]}));_0x1f9d59[_0xa688('0x2e')](_0x5d1657[_0xa688('0x40')]({'attributes':['id',_0xa688('0x8')]}));_0x1f9d59[_0xa688('0x2e')](_0x5d1657['getFaxQueues']({'attributes':['id',_0xa688('0x8')]}));_0x1f9d59[_0xa688('0x2e')](_0x5d1657[_0xa688('0x41')]({'attributes':['id',_0xa688('0x8')]}));_0x1f9d59['push'](_0x5d1657[_0xa688('0x42')]({'attributes':['id',_0xa688('0x8')]}));_0x1f9d59['push'](_0x5d1657[_0xa688('0x43')]({'attributes':['id',_0xa688('0x8')]}));_0x1f9d59[_0xa688('0x2e')](_0x5d1657[_0xa688('0x44')]({'attributes':['id',_0xa688('0x8')]}));break;}return BPromise[_0xa688('0x45')](_0x1f9d59);}})['then'](function(_0x900203){if(_0x900203&&_0x900203[_0xa688('0x1a')]){for(var _0x2f4621=0x0;_0x2f4621<_0x900203[_0xa688('0x1a')];_0x2f4621+=0x1){for(var _0x1bcb64=0x0;_0x1bcb64<_0x900203[_0x2f4621]['length'];_0x1bcb64+=0x1){switch(_0x2f4621){case 0x0:joinOrLeaveQueues(_0x3134ca,_0x301560,_0xa688('0x46'),_0x900203[_0x2f4621][_0x1bcb64]);break;case 0x1:joinOrLeaveQueues(_0x3134ca,_0x301560,_0xa688('0x47'),_0x900203[_0x2f4621][_0x1bcb64]);break;case 0x2:joinOrLeaveQueues(_0x3134ca,_0x301560,_0xa688('0x48'),_0x900203[_0x2f4621][_0x1bcb64]);break;case 0x3:joinOrLeaveQueues(_0x3134ca,_0x301560,_0xa688('0x49'),_0x900203[_0x2f4621][_0x1bcb64]);break;case 0x4:joinOrLeaveQueues(_0x3134ca,_0x301560,_0xa688('0x4a'),_0x900203[_0x2f4621][_0x1bcb64]);break;case 0x5:joinOrLeaveQueues(_0x3134ca,_0x301560,_0xa688('0x4b'),_0x900203[_0x2f4621][_0x1bcb64]);break;case 0x6:joinOrLeaveQueues(_0x3134ca,_0x301560,'whatsapp',_0x900203[_0x2f4621][_0x1bcb64]);break;case 0x7:_0x3134ca[_0x301560](util[_0xa688('0x1b')](_0xa688('0x4c'),_0x900203[_0x2f4621][_0x1bcb64][_0xa688('0x8')]));break;case 0x8:_0x3134ca[_0x301560](util[_0xa688('0x1b')](_0xa688('0x4d'),_0x900203[_0x2f4621][_0x1bcb64][_0xa688('0x8')]));break;case 0x9:_0x3134ca[_0x301560](util[_0xa688('0x1b')]('campaign:%s:%s',_0x900203[_0x2f4621][_0x1bcb64][_0xa688('0xa')],_0x900203[_0x2f4621][_0x1bcb64][_0xa688('0x8')]));break;case 0xa:_0x3134ca[_0x301560](util[_0xa688('0x1b')](_0xa688('0x1c'),_0x900203[_0x2f4621][_0x1bcb64]['name']));break;}}}}})[_0xa688('0x2b')](function(){if(_0x301560===_0xa688('0x4e')){var _0x416bfd=_[_0xa688('0x17')](_0x11133b[_0xa688('0x20')],'id');return _0x11133b[_0xa688('0x4f')](_0x416bfd)['then'](function(){for(var _0xc08423=0x0;_0xc08423<_0x416bfd['length'];_0xc08423+=0x1){_0x42643[_0xa688('0x50')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x416bfd[_0xc08423]),'UserId':Number(_0x11133b['id'])});}});}})['then'](function(){if(_0x301560===_0xa688('0x4e')){var _0x12d9c4=_[_0xa688('0x17')](_0x11133b['MailInteractions'],'id');return _0x11133b[_0xa688('0x51')](_0x12d9c4)['then'](function(){for(var _0x4e175e=0x0;_0x4e175e<_0x12d9c4['length'];_0x4e175e+=0x1){_0x42643['emit']('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x12d9c4[_0x4e175e]),'UserId':Number(_0x11133b['id'])});}});}})[_0xa688('0x2b')](function(){if(_0x301560===_0xa688('0x4e')){var _0x1f118b=_['map'](_0x11133b[_0xa688('0x24')],'id');return _0x11133b['removeFaxInteractions'](_0x1f118b)[_0xa688('0x2b')](function(){for(var _0x28cdb6=0x0;_0x28cdb6<_0x1f118b[_0xa688('0x1a')];_0x28cdb6+=0x1){_0x42643[_0xa688('0x50')](_0xa688('0x52'),{'FaxInteractionId':Number(_0x1f118b[_0x28cdb6]),'UserId':Number(_0x11133b['id'])});}});}})[_0xa688('0x2b')](function(){if(_0x301560===_0xa688('0x4e')){var _0x449094=_[_0xa688('0x17')](_0x11133b[_0xa688('0x26')],'id');return _0x11133b['removeSmsInteractions'](_0x449094)['then'](function(){for(var _0x537ea6=0x0;_0x537ea6<_0x449094[_0xa688('0x1a')];_0x537ea6+=0x1){_0x42643[_0xa688('0x50')](_0xa688('0x53'),{'SmsInteractionId':Number(_0x449094[_0x537ea6]),'UserId':Number(_0x11133b['id'])});}});}})[_0xa688('0x2b')](function(){if(_0x301560===_0xa688('0x4e')){var _0x36a717=_[_0xa688('0x17')](_0x11133b[_0xa688('0x28')],'id');return _0x11133b[_0xa688('0x54')](_0x36a717)[_0xa688('0x2b')](function(){for(var _0x199d66=0x0;_0x199d66<_0x36a717[_0xa688('0x1a')];_0x199d66+=0x1){_0x42643[_0xa688('0x50')](_0xa688('0x55'),{'OpenchannelInteractionId':Number(_0x36a717[_0x199d66]),'UserId':Number(_0x11133b['id'])});}});}})[_0xa688('0x2b')](function(){if(_0x301560==='leave'){var _0x4c97c1=_[_0xa688('0x17')](_0x11133b['WhatsappInteractions'],'id');return _0x11133b['removeWhatsappInteractions'](_0x4c97c1)[_0xa688('0x2b')](function(){for(var _0xe3bb0c=0x0;_0xe3bb0c<_0x4c97c1['length'];_0xe3bb0c+=0x1){_0x42643[_0xa688('0x50')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x4c97c1[_0xe3bb0c]),'UserId':Number(_0x11133b['id'])});}});}})[_0xa688('0x56')](function(_0x58496c){_0x3134ca[_0xa688('0x57')](_0x58496c);});}}function onDisconnect(_0x47bd3d,_0x218b5e){joinOrLeave(_0x47bd3d,_0xa688('0x4e'),_0x218b5e);}function onConnect(_0x1acd66){joinOrLeave(_0x1acd66,_0xa688('0x58'));}exports['default']=function(_0x3d3666){_0x3d3666['on'](_0xa688('0x59'),function(_0x1bfb62){_0x1bfb62[_0xa688('0x5a')](0x0);_0x1bfb62['address']=_0x1bfb62[_0xa688('0x5b')][_0xa688('0x59')]['remoteAddress']+':'+_0x1bfb62['request'][_0xa688('0x59')][_0xa688('0x5c')];_0x1bfb62[_0xa688('0x5d')]=new Date();_0x1bfb62[_0xa688('0x57')]=function(_0x2e82e0){console[_0xa688('0x57')](_0xa688('0x5e')+_0x1bfb62[_0xa688('0x5f')]['name']+'['+_0x1bfb62[_0xa688('0x60')]+']',_0x2e82e0);};_0x1bfb62['on'](_0xa688('0x61'),function(){onDisconnect(_0x1bfb62,_0x3d3666);_0x1bfb62[_0xa688('0x57')]('DISCONNECTED');});onConnect(_0x1bfb62);_0x1bfb62[_0xa688('0x57')](_0xa688('0x62'));});};