Built motion from commit 497d3d92.|2.5.43
[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 _0x762e=['MailQueue','OpenchannelQueue','Trunk','user','ChatQueues','FaxQueue','OpenchannelQueues','WhatsappQueue','getVoiceQueues','getChatQueues','getFaxQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','voice','chat','fax','mail','openchannel','telephone:%s','trunk:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','FaxInteractions','removeFaxInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','WhatsappInteractions','removeWhatsappInteractions','join','connection','address','request','remotePort','log','SocketIO\x20','nsp','disconnect','lodash','../mysqldb','Agents','User','name','agent','telephone','type','ivr','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','FaxQueues','SmsQueues','MailQueues','WhatsappQueues','Telephones','Trunks','findAll','IvrCampaigns','resourceId','map','role','Campaign','where','%s:queue:%s','length','format','handshake','query','find','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','SmsInteractions','OpenchannelInteractions','WhatsappInteraction','user:%s','admin','voice:inbound','voice:outbound','include','push','VoiceQueue','ChatQueue','SmsQueue'];(function(_0x5c938c,_0x4a5aeb){var _0x1ac0dc=function(_0x570f69){while(--_0x570f69){_0x5c938c['push'](_0x5c938c['shift']());}};_0x1ac0dc(++_0x4a5aeb);}(_0x762e,0xea));var _0xe762=function(_0x58ac39,_0x32ff32){_0x58ac39=_0x58ac39-0x0;var _0x4351d7=_0x762e[_0x58ac39];return _0x4351d7;};'use strict';var _=require(_0xe762('0x0'));var util=require('util');var BPromise=require('bluebird');var db=require(_0xe762('0x1'))['db'];var config=require('./environment');var queryQueues={'attributes':['id','name'],'include':[{'as':_0xe762('0x2'),'model':db[_0xe762('0x3')],'attributes':['id',_0xe762('0x4'),'role'],'raw':!![],'where':{'role':_0xe762('0x5')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xe762('0x4')],'where':{'role':_0xe762('0x6')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0xe762('0x4')],'where':{'role':_0xe762('0x5')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xe762('0x4'),_0xe762('0x7')],'where':{'type':_0xe762('0x8')}};function getAssociatedResources(_0x38aac7,_0x567750,_0x50dd96){return db[_0xe762('0x9')][_0xe762('0xa')]({'where':{'name':_0x38aac7,'userProfileId':_0x567750},'raw':!![]})[_0xe762('0xb')](function(_0x131d67){if(_0x131d67){if(_0x131d67[_0xe762('0xc')]){switch(_0x38aac7){case _0xe762('0xd'):case'ChatQueues':case _0xe762('0xe'):case _0xe762('0xf'):case _0xe762('0x10'):case'OpenchannelQueues':case _0xe762('0x11'):return db[_0x50dd96]['findAll'](queryQueues);case _0xe762('0x12'):return db[_0x50dd96]['findAll'](queryTelephones);case _0xe762('0x13'):return db[_0x50dd96][_0xe762('0x14')](queryTrunks);case _0xe762('0x15'):return db[_0x50dd96]['findAll'](queryCampaigns);}}else{return db['UserProfileResource'][_0xe762('0x14')]({'attributes':[_0xe762('0x16')],'where':{'sectionId':_0x131d67['id']},'raw':!![]})[_0xe762('0xb')](function(_0x13c27d){if(_0x13c27d){var _0x3e6c1d={'where':{'id':_[_0xe762('0x17')](_0x13c27d,_0xe762('0x16'))},'raw':!![]};switch(_0x50dd96){case _0xe762('0x3'):_0x3e6c1d['where'][_0xe762('0x18')]=_0xe762('0x6');break;case _0xe762('0x19'):_0x3e6c1d[_0xe762('0x1a')]['type']=_0xe762('0x8');break;}return db[_0x50dd96][_0xe762('0x14')](_0x3e6c1d);}else{return[];}});}}else{return[];}})['then'](function(_0x5c6350){return _0x5c6350;});}function joinOrLeaveQueues(_0x52e1de,_0x2cea00,_0x5505b1,_0x428a59){_0x52e1de[_0x2cea00](util['format'](_0xe762('0x1b'),_0x5505b1,_0x428a59['name']));if(_0x428a59[_0xe762('0x2')]){for(var _0x190aa3=0x0;_0x190aa3<_0x428a59[_0xe762('0x2')][_0xe762('0x1c')];_0x190aa3+=0x1){_0x52e1de[_0x2cea00](util[_0xe762('0x1d')]('user:%s',_0x428a59['Agents'][_0x190aa3]['name']));}}}function joinOrLeave(_0x4e938f,_0x413584,_0x14641f){var _0x31ac1a;if(_0x4e938f[_0xe762('0x1e')][_0xe762('0x1f')]['id']){db['User'][_0xe762('0x20')]({'attributes':['id',_0xe762('0x4'),_0xe762('0x18'),_0xe762('0x21')],'where':{'id':_0x4e938f[_0xe762('0x1e')][_0xe762('0x1f')]['id']},'include':[{'model':db[_0xe762('0x22')],'as':_0xe762('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0xe762('0x24')],'as':_0xe762('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0xe762('0x26')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':_0xe762('0x27'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0xe762('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0xe762('0x29')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0xe762('0xb')](function(_0xa39b64){if(_0xa39b64){_0x31ac1a=_0xa39b64;_0x4e938f[_0x413584](util[_0xe762('0x1d')](_0xe762('0x2a'),_0xa39b64[_0xe762('0x4')]));var _0x35c1a9=[];switch(_0xa39b64[_0xe762('0x18')]){case _0xe762('0x2b'):_0x4e938f[_0x413584](_0xe762('0x2c'));_0x4e938f[_0x413584](_0xe762('0x2d'));if(queryQueues['hasOwnProperty'](_0xe762('0x2e'))){delete queryQueues[_0xe762('0x2e')];}_0x35c1a9[_0xe762('0x2f')](db[_0xe762('0x30')][_0xe762('0x14')](queryQueues));_0x35c1a9[_0xe762('0x2f')](db[_0xe762('0x31')][_0xe762('0x14')](queryQueues));_0x35c1a9['push'](db['FaxQueue'][_0xe762('0x14')](queryQueues));_0x35c1a9[_0xe762('0x2f')](db[_0xe762('0x32')][_0xe762('0x14')](queryQueues));_0x35c1a9[_0xe762('0x2f')](db[_0xe762('0x33')][_0xe762('0x14')](queryQueues));_0x35c1a9['push'](db[_0xe762('0x34')][_0xe762('0x14')](queryQueues));_0x35c1a9[_0xe762('0x2f')](db['WhatsappQueue'][_0xe762('0x14')](queryQueues));_0x35c1a9[_0xe762('0x2f')](db[_0xe762('0x3')][_0xe762('0x14')](queryTelephones));_0x35c1a9[_0xe762('0x2f')](db[_0xe762('0x35')][_0xe762('0x14')](queryTrunks));_0x35c1a9[_0xe762('0x2f')](db[_0xe762('0x19')][_0xe762('0x14')](queryCampaigns));_0x35c1a9['push'](db[_0xe762('0x3')][_0xe762('0x14')](queryAgents));break;case _0xe762('0x36'):_0x4e938f[_0x413584](_0xe762('0x2c'));_0x4e938f[_0x413584](_0xe762('0x2d'));_0x35c1a9[_0xe762('0x2f')](getAssociatedResources(_0xe762('0xd'),_0xa39b64[_0xe762('0x21')],_0xe762('0x30')));_0x35c1a9[_0xe762('0x2f')](getAssociatedResources(_0xe762('0x37'),_0xa39b64[_0xe762('0x21')],_0xe762('0x31')));_0x35c1a9[_0xe762('0x2f')](getAssociatedResources(_0xe762('0xe'),_0xa39b64[_0xe762('0x21')],_0xe762('0x38')));_0x35c1a9[_0xe762('0x2f')](getAssociatedResources(_0xe762('0xf'),_0xa39b64[_0xe762('0x21')],_0xe762('0x32')));_0x35c1a9['push'](getAssociatedResources('MailQueues',_0xa39b64[_0xe762('0x21')],_0xe762('0x33')));_0x35c1a9[_0xe762('0x2f')](getAssociatedResources(_0xe762('0x39'),_0xa39b64[_0xe762('0x21')],_0xe762('0x34')));_0x35c1a9[_0xe762('0x2f')](getAssociatedResources(_0xe762('0x11'),_0xa39b64[_0xe762('0x21')],_0xe762('0x3a')));_0x35c1a9['push'](getAssociatedResources('Telephones',_0xa39b64[_0xe762('0x21')],_0xe762('0x3')));_0x35c1a9['push'](getAssociatedResources(_0xe762('0x13'),_0xa39b64[_0xe762('0x21')],_0xe762('0x35')));_0x35c1a9[_0xe762('0x2f')](getAssociatedResources('IvrCampaigns',_0xa39b64['userProfileId'],_0xe762('0x19')));_0x35c1a9[_0xe762('0x2f')](db['User'][_0xe762('0x14')](queryAgents));break;case _0xe762('0x5'):_0x4e938f[_0x413584](_0xe762('0x2c'));_0x4e938f[_0x413584](_0xe762('0x2d'));_0x35c1a9[_0xe762('0x2f')](_0xa39b64[_0xe762('0x3b')]({'attributes':['id',_0xe762('0x4')]}));_0x35c1a9[_0xe762('0x2f')](_0xa39b64[_0xe762('0x3c')]({'attributes':['id',_0xe762('0x4')]}));_0x35c1a9[_0xe762('0x2f')](_0xa39b64[_0xe762('0x3d')]({'attributes':['id',_0xe762('0x4')]}));_0x35c1a9['push'](_0xa39b64['getSmsQueues']({'attributes':['id','name']}));_0x35c1a9[_0xe762('0x2f')](_0xa39b64[_0xe762('0x3e')]({'attributes':['id',_0xe762('0x4')]}));_0x35c1a9[_0xe762('0x2f')](_0xa39b64[_0xe762('0x3f')]({'attributes':['id','name']}));_0x35c1a9['push'](_0xa39b64[_0xe762('0x40')]({'attributes':['id',_0xe762('0x4')]}));break;}return BPromise['all'](_0x35c1a9);}})[_0xe762('0xb')](function(_0x491529){if(_0x491529&&_0x491529['length']){for(var _0x1e4823=0x0;_0x1e4823<_0x491529[_0xe762('0x1c')];_0x1e4823+=0x1){for(var _0x484fb1=0x0;_0x484fb1<_0x491529[_0x1e4823][_0xe762('0x1c')];_0x484fb1+=0x1){switch(_0x1e4823){case 0x0:joinOrLeaveQueues(_0x4e938f,_0x413584,_0xe762('0x41'),_0x491529[_0x1e4823][_0x484fb1]);break;case 0x1:joinOrLeaveQueues(_0x4e938f,_0x413584,_0xe762('0x42'),_0x491529[_0x1e4823][_0x484fb1]);break;case 0x2:joinOrLeaveQueues(_0x4e938f,_0x413584,_0xe762('0x43'),_0x491529[_0x1e4823][_0x484fb1]);break;case 0x3:joinOrLeaveQueues(_0x4e938f,_0x413584,'sms',_0x491529[_0x1e4823][_0x484fb1]);break;case 0x4:joinOrLeaveQueues(_0x4e938f,_0x413584,_0xe762('0x44'),_0x491529[_0x1e4823][_0x484fb1]);break;case 0x5:joinOrLeaveQueues(_0x4e938f,_0x413584,_0xe762('0x45'),_0x491529[_0x1e4823][_0x484fb1]);break;case 0x6:joinOrLeaveQueues(_0x4e938f,_0x413584,'whatsapp',_0x491529[_0x1e4823][_0x484fb1]);break;case 0x7:if(_0x31ac1a[_0xe762('0x18')]!==_0xe762('0x5'))_0x4e938f[_0x413584](util[_0xe762('0x1d')](_0xe762('0x46'),_0x491529[_0x1e4823][_0x484fb1][_0xe762('0x4')]));break;case 0x8:if(_0x31ac1a[_0xe762('0x18')]!=='agent')_0x4e938f[_0x413584](util[_0xe762('0x1d')](_0xe762('0x47'),_0x491529[_0x1e4823][_0x484fb1][_0xe762('0x4')]));break;case 0x9:if(_0x31ac1a[_0xe762('0x18')]!=='agent')_0x4e938f[_0x413584](util[_0xe762('0x1d')]('campaign:%s:%s',_0x491529[_0x1e4823][_0x484fb1][_0xe762('0x7')],_0x491529[_0x1e4823][_0x484fb1][_0xe762('0x4')]));break;case 0xa:_0x4e938f[_0x413584](util[_0xe762('0x1d')](_0xe762('0x2a'),_0x491529[_0x1e4823][_0x484fb1][_0xe762('0x4')]));break;}}}}})[_0xe762('0xb')](function(){if(_0x413584===_0xe762('0x48')){var _0x11eee8=_[_0xe762('0x17')](_0x31ac1a[_0xe762('0x23')],'id');return _0x31ac1a[_0xe762('0x49')](_0x11eee8)['then'](function(){for(var _0x2c8fcc=0x0;_0x2c8fcc<_0x11eee8[_0xe762('0x1c')];_0x2c8fcc+=0x1){_0x14641f[_0xe762('0x4a')](_0xe762('0x4b'),{'ChatInteractionId':Number(_0x11eee8[_0x2c8fcc]),'UserId':Number(_0x31ac1a['id'])});}});}})['then'](function(){if(_0x413584===_0xe762('0x48')){var _0x12a82b=_[_0xe762('0x17')](_0x31ac1a[_0xe762('0x25')],'id');return _0x31ac1a[_0xe762('0x4c')](_0x12a82b)[_0xe762('0xb')](function(){for(var _0x3346dd=0x0;_0x3346dd<_0x12a82b[_0xe762('0x1c')];_0x3346dd+=0x1){_0x14641f[_0xe762('0x4a')](_0xe762('0x4d'),{'MailInteractionId':Number(_0x12a82b[_0x3346dd]),'UserId':Number(_0x31ac1a['id'])});}});}})['then'](function(){if(_0x413584===_0xe762('0x48')){var _0x5746a5=_[_0xe762('0x17')](_0x31ac1a[_0xe762('0x4e')],'id');return _0x31ac1a[_0xe762('0x4f')](_0x5746a5)[_0xe762('0xb')](function(){for(var _0x3de12d=0x0;_0x3de12d<_0x5746a5[_0xe762('0x1c')];_0x3de12d+=0x1){_0x14641f['emit']('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x5746a5[_0x3de12d]),'UserId':Number(_0x31ac1a['id'])});}});}})[_0xe762('0xb')](function(){if(_0x413584===_0xe762('0x48')){var _0x5da9d6=_[_0xe762('0x17')](_0x31ac1a['SmsInteractions'],'id');return _0x31ac1a[_0xe762('0x50')](_0x5da9d6)[_0xe762('0xb')](function(){for(var _0x13513e=0x0;_0x13513e<_0x5da9d6[_0xe762('0x1c')];_0x13513e+=0x1){_0x14641f[_0xe762('0x4a')](_0xe762('0x51'),{'SmsInteractionId':Number(_0x5da9d6[_0x13513e]),'UserId':Number(_0x31ac1a['id'])});}});}})[_0xe762('0xb')](function(){if(_0x413584==='leave'){var _0x5b4bf7=_[_0xe762('0x17')](_0x31ac1a['OpenchannelInteractions'],'id');return _0x31ac1a[_0xe762('0x52')](_0x5b4bf7)[_0xe762('0xb')](function(){for(var _0x5d3a74=0x0;_0x5d3a74<_0x5b4bf7[_0xe762('0x1c')];_0x5d3a74+=0x1){_0x14641f[_0xe762('0x4a')](_0xe762('0x53'),{'OpenchannelInteractionId':Number(_0x5b4bf7[_0x5d3a74]),'UserId':Number(_0x31ac1a['id'])});}});}})[_0xe762('0xb')](function(){if(_0x413584===_0xe762('0x48')){var _0xec3ac3=_['map'](_0x31ac1a[_0xe762('0x54')],'id');return _0x31ac1a[_0xe762('0x55')](_0xec3ac3)['then'](function(){for(var _0x30b946=0x0;_0x30b946<_0xec3ac3[_0xe762('0x1c')];_0x30b946+=0x1){_0x14641f[_0xe762('0x4a')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0xec3ac3[_0x30b946]),'UserId':Number(_0x31ac1a['id'])});}});}})['catch'](function(_0x25a891){_0x4e938f['log'](_0x25a891);});}}function onDisconnect(_0x324cf5,_0x294ce4){joinOrLeave(_0x324cf5,_0xe762('0x48'),_0x294ce4);}function onConnect(_0x4d5e6c){joinOrLeave(_0x4d5e6c,_0xe762('0x56'));}exports['default']=function(_0x580c25){_0x580c25['on'](_0xe762('0x57'),function(_0xe03cdb){_0xe03cdb['setMaxListeners'](0x0);_0xe03cdb[_0xe762('0x58')]=_0xe03cdb[_0xe762('0x59')]['connection']['remoteAddress']+':'+_0xe03cdb['request']['connection'][_0xe762('0x5a')];_0xe03cdb['connectedAt']=new Date();_0xe03cdb[_0xe762('0x5b')]=function(_0x468825){console[_0xe762('0x5b')](_0xe762('0x5c')+_0xe03cdb[_0xe762('0x5d')][_0xe762('0x4')]+'['+_0xe03cdb[_0xe762('0x58')]+']',_0x468825);};_0xe03cdb['on'](_0xe762('0x5e'),function(){onDisconnect(_0xe03cdb,_0x580c25);_0xe03cdb[_0xe762('0x5b')]('DISCONNECTED');});onConnect(_0xe03cdb);_0xe03cdb[_0xe762('0x5b')]('CONNECTED');});};