62bb4260ba8415fe4e1660976c0d06639331594b
[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 _0x3dca=['all','chat','fax','sms','mail','openchannel','telephone:%s','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','user_has_chat_interactions:remove','MailInteractions','removeMailInteractions','emit','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','WhatsappInteractions','join','default','connection','setMaxListeners','request','connectedAt','log','SocketIO\x20','nsp','address','disconnect','DISCONNECTED','CONNECTED','lodash','../mysqldb','name','User','role','agent','type','ivr','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','OpenchannelQueues','WhatsappQueues','findAll','Trunks','IvrCampaigns','resourceId','map','where','telephone','Campaign','format','%s:queue:%s','Agents','length','user:%s','handshake','find','userProfileId','query','ChatInteraction','ChatInteractions','MailInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','SmsQueue','MailQueue','WhatsappQueue','Trunk','OpenchannelQueue','Telephones','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getWhatsappQueues'];(function(_0x9fa50f,_0x444671){var _0x1bfa92=function(_0x3065c6){while(--_0x3065c6){_0x9fa50f['push'](_0x9fa50f['shift']());}};_0x1bfa92(++_0x444671);}(_0x3dca,0x150));var _0xa3dc=function(_0x437479,_0x5493b4){_0x437479=_0x437479-0x0;var _0x27fca0=_0x3dca[_0x437479];return _0x27fca0;};'use strict';var _=require(_0xa3dc('0x0'));var util=require('util');var BPromise=require('bluebird');var db=require(_0xa3dc('0x1'))['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0xa3dc('0x2')],'include':[{'as':'Agents','model':db[_0xa3dc('0x3')],'attributes':['id',_0xa3dc('0x2'),_0xa3dc('0x4')],'raw':!![],'where':{'role':_0xa3dc('0x5')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xa3dc('0x2')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0xa3dc('0x2'),_0xa3dc('0x6')],'where':{'type':_0xa3dc('0x7')}};function getAssociatedResources(_0x4ba10b,_0x263c60,_0x5777a8){return db[_0xa3dc('0x8')][_0xa3dc('0x9')]({'where':{'name':_0x4ba10b,'userProfileId':_0x263c60},'raw':!![]})[_0xa3dc('0xa')](function(_0x34c7fa){if(_0x34c7fa){if(_0x34c7fa[_0xa3dc('0xb')]){switch(_0x4ba10b){case _0xa3dc('0xc'):case _0xa3dc('0xd'):case _0xa3dc('0xe'):case _0xa3dc('0xf'):case'MailQueues':case _0xa3dc('0x10'):case _0xa3dc('0x11'):return db[_0x5777a8][_0xa3dc('0x12')](queryQueues);case'Telephones':return db[_0x5777a8][_0xa3dc('0x12')](queryTelephones);case _0xa3dc('0x13'):return db[_0x5777a8][_0xa3dc('0x12')](queryTrunks);case _0xa3dc('0x14'):return db[_0x5777a8][_0xa3dc('0x12')](queryCampaigns);}}else{return db['UserProfileResource'][_0xa3dc('0x12')]({'attributes':[_0xa3dc('0x15')],'where':{'sectionId':_0x34c7fa['id']},'raw':!![]})[_0xa3dc('0xa')](function(_0x4bfabc){if(_0x4bfabc){var _0x42e0ef={'where':{'id':_[_0xa3dc('0x16')](_0x4bfabc,_0xa3dc('0x15'))},'raw':!![]};switch(_0x5777a8){case'User':_0x42e0ef[_0xa3dc('0x17')][_0xa3dc('0x4')]=_0xa3dc('0x18');break;case _0xa3dc('0x19'):_0x42e0ef[_0xa3dc('0x17')][_0xa3dc('0x6')]=_0xa3dc('0x7');break;}return db[_0x5777a8][_0xa3dc('0x12')](_0x42e0ef);}else{return[];}});}}else{return[];}})[_0xa3dc('0xa')](function(_0x2aeb61){return _0x2aeb61;});}function joinOrLeaveQueues(_0x113f10,_0x4adf5c,_0x5ac8cc,_0x2e2305){_0x113f10[_0x4adf5c](util[_0xa3dc('0x1a')](_0xa3dc('0x1b'),_0x5ac8cc,_0x2e2305[_0xa3dc('0x2')]));if(_0x2e2305[_0xa3dc('0x1c')]){for(var _0x4751a8=0x0;_0x4751a8<_0x2e2305[_0xa3dc('0x1c')][_0xa3dc('0x1d')];_0x4751a8+=0x1){_0x113f10[_0x4adf5c](util[_0xa3dc('0x1a')](_0xa3dc('0x1e'),_0x2e2305[_0xa3dc('0x1c')][_0x4751a8][_0xa3dc('0x2')]));}}}function joinOrLeave(_0x11e09e,_0x4baa00,_0x6e3530){var _0x3d00ff;if(_0x11e09e[_0xa3dc('0x1f')]['query']['id']){db[_0xa3dc('0x3')][_0xa3dc('0x20')]({'attributes':['id',_0xa3dc('0x2'),_0xa3dc('0x4'),_0xa3dc('0x21')],'where':{'id':_0x11e09e['handshake'][_0xa3dc('0x22')]['id']},'include':[{'model':db[_0xa3dc('0x23')],'as':_0xa3dc('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0xa3dc('0x25')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0xa3dc('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0xa3dc('0x27')],'as':_0xa3dc('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0xa3dc('0x29')],'as':_0xa3dc('0x2a'),'attributes':['id'],'raw':!![]},{'model':db[_0xa3dc('0x2b')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0xa3dc('0xa')](function(_0x14548f){if(_0x14548f){_0x3d00ff=_0x14548f;_0x11e09e[_0x4baa00](util[_0xa3dc('0x1a')]('user:%s',_0x14548f[_0xa3dc('0x2')]));var _0x5c656e=[];switch(_0x14548f[_0xa3dc('0x4')]){case _0xa3dc('0x2c'):_0x11e09e[_0x4baa00](_0xa3dc('0x2d'));_0x11e09e[_0x4baa00](_0xa3dc('0x2e'));if(queryQueues[_0xa3dc('0x2f')](_0xa3dc('0x30'))){delete queryQueues[_0xa3dc('0x30')];}_0x5c656e[_0xa3dc('0x31')](db[_0xa3dc('0x32')][_0xa3dc('0x12')](queryQueues));_0x5c656e[_0xa3dc('0x31')](db[_0xa3dc('0x33')][_0xa3dc('0x12')](queryQueues));_0x5c656e['push'](db['FaxQueue']['findAll'](queryQueues));_0x5c656e['push'](db[_0xa3dc('0x34')][_0xa3dc('0x12')](queryQueues));_0x5c656e[_0xa3dc('0x31')](db[_0xa3dc('0x35')][_0xa3dc('0x12')](queryQueues));_0x5c656e[_0xa3dc('0x31')](db['OpenchannelQueue'][_0xa3dc('0x12')](queryQueues));_0x5c656e[_0xa3dc('0x31')](db[_0xa3dc('0x36')][_0xa3dc('0x12')](queryQueues));_0x5c656e[_0xa3dc('0x31')](db[_0xa3dc('0x3')][_0xa3dc('0x12')](queryTelephones));_0x5c656e[_0xa3dc('0x31')](db[_0xa3dc('0x37')][_0xa3dc('0x12')](queryTrunks));_0x5c656e['push'](db[_0xa3dc('0x19')][_0xa3dc('0x12')](queryCampaigns));_0x5c656e[_0xa3dc('0x31')](db['User']['findAll'](queryAgents));break;case'user':_0x11e09e[_0x4baa00]('voice:inbound');_0x11e09e[_0x4baa00]('voice:outbound');_0x5c656e[_0xa3dc('0x31')](getAssociatedResources(_0xa3dc('0xc'),_0x14548f[_0xa3dc('0x21')],_0xa3dc('0x32')));_0x5c656e['push'](getAssociatedResources(_0xa3dc('0xd'),_0x14548f[_0xa3dc('0x21')],_0xa3dc('0x33')));_0x5c656e[_0xa3dc('0x31')](getAssociatedResources('FaxQueues',_0x14548f[_0xa3dc('0x21')],'FaxQueue'));_0x5c656e[_0xa3dc('0x31')](getAssociatedResources(_0xa3dc('0xf'),_0x14548f[_0xa3dc('0x21')],_0xa3dc('0x34')));_0x5c656e[_0xa3dc('0x31')](getAssociatedResources('MailQueues',_0x14548f[_0xa3dc('0x21')],_0xa3dc('0x35')));_0x5c656e['push'](getAssociatedResources(_0xa3dc('0x10'),_0x14548f[_0xa3dc('0x21')],_0xa3dc('0x38')));_0x5c656e['push'](getAssociatedResources(_0xa3dc('0x11'),_0x14548f[_0xa3dc('0x21')],_0xa3dc('0x36')));_0x5c656e[_0xa3dc('0x31')](getAssociatedResources(_0xa3dc('0x39'),_0x14548f[_0xa3dc('0x21')],'User'));_0x5c656e[_0xa3dc('0x31')](getAssociatedResources('Trunks',_0x14548f[_0xa3dc('0x21')],_0xa3dc('0x37')));_0x5c656e[_0xa3dc('0x31')](getAssociatedResources(_0xa3dc('0x14'),_0x14548f[_0xa3dc('0x21')],'Campaign'));_0x5c656e[_0xa3dc('0x31')](db[_0xa3dc('0x3')][_0xa3dc('0x12')](queryAgents));break;case _0xa3dc('0x5'):_0x11e09e[_0x4baa00]('voice:inbound');_0x11e09e[_0x4baa00](_0xa3dc('0x2e'));_0x5c656e[_0xa3dc('0x31')](_0x14548f[_0xa3dc('0x3a')]({'attributes':['id','name']}));_0x5c656e[_0xa3dc('0x31')](_0x14548f[_0xa3dc('0x3b')]({'attributes':['id',_0xa3dc('0x2')]}));_0x5c656e[_0xa3dc('0x31')](_0x14548f[_0xa3dc('0x3c')]({'attributes':['id','name']}));_0x5c656e['push'](_0x14548f[_0xa3dc('0x3d')]({'attributes':['id','name']}));_0x5c656e['push'](_0x14548f[_0xa3dc('0x3e')]({'attributes':['id',_0xa3dc('0x2')]}));_0x5c656e[_0xa3dc('0x31')](_0x14548f['getOpenchannelQueues']({'attributes':['id','name']}));_0x5c656e['push'](_0x14548f[_0xa3dc('0x3f')]({'attributes':['id','name']}));break;}return BPromise[_0xa3dc('0x40')](_0x5c656e);}})[_0xa3dc('0xa')](function(_0x2d35af){if(_0x2d35af&&_0x2d35af[_0xa3dc('0x1d')]){for(var _0x1f1899=0x0;_0x1f1899<_0x2d35af[_0xa3dc('0x1d')];_0x1f1899+=0x1){for(var _0x36ae21=0x0;_0x36ae21<_0x2d35af[_0x1f1899][_0xa3dc('0x1d')];_0x36ae21+=0x1){switch(_0x1f1899){case 0x0:joinOrLeaveQueues(_0x11e09e,_0x4baa00,'voice',_0x2d35af[_0x1f1899][_0x36ae21]);break;case 0x1:joinOrLeaveQueues(_0x11e09e,_0x4baa00,_0xa3dc('0x41'),_0x2d35af[_0x1f1899][_0x36ae21]);break;case 0x2:joinOrLeaveQueues(_0x11e09e,_0x4baa00,_0xa3dc('0x42'),_0x2d35af[_0x1f1899][_0x36ae21]);break;case 0x3:joinOrLeaveQueues(_0x11e09e,_0x4baa00,_0xa3dc('0x43'),_0x2d35af[_0x1f1899][_0x36ae21]);break;case 0x4:joinOrLeaveQueues(_0x11e09e,_0x4baa00,_0xa3dc('0x44'),_0x2d35af[_0x1f1899][_0x36ae21]);break;case 0x5:joinOrLeaveQueues(_0x11e09e,_0x4baa00,_0xa3dc('0x45'),_0x2d35af[_0x1f1899][_0x36ae21]);break;case 0x6:joinOrLeaveQueues(_0x11e09e,_0x4baa00,'whatsapp',_0x2d35af[_0x1f1899][_0x36ae21]);break;case 0x7:_0x11e09e[_0x4baa00](util[_0xa3dc('0x1a')](_0xa3dc('0x46'),_0x2d35af[_0x1f1899][_0x36ae21]['name']));break;case 0x8:_0x11e09e[_0x4baa00](util['format'](_0xa3dc('0x47'),_0x2d35af[_0x1f1899][_0x36ae21]['name']));break;case 0x9:_0x11e09e[_0x4baa00](util['format'](_0xa3dc('0x48'),_0x2d35af[_0x1f1899][_0x36ae21][_0xa3dc('0x6')],_0x2d35af[_0x1f1899][_0x36ae21][_0xa3dc('0x2')]));break;case 0xa:_0x11e09e[_0x4baa00](util[_0xa3dc('0x1a')](_0xa3dc('0x1e'),_0x2d35af[_0x1f1899][_0x36ae21]['name']));break;}}}}})[_0xa3dc('0xa')](function(){if(_0x4baa00===_0xa3dc('0x49')){var _0xac2294=_['map'](_0x3d00ff[_0xa3dc('0x24')],'id');return _0x3d00ff[_0xa3dc('0x4a')](_0xac2294)['then'](function(){for(var _0x40fbb8=0x0;_0x40fbb8<_0xac2294[_0xa3dc('0x1d')];_0x40fbb8+=0x1){_0x6e3530['emit'](_0xa3dc('0x4b'),{'ChatInteractionId':Number(_0xac2294[_0x40fbb8]),'UserId':Number(_0x3d00ff['id'])});}});}})[_0xa3dc('0xa')](function(){if(_0x4baa00===_0xa3dc('0x49')){var _0x2db788=_[_0xa3dc('0x16')](_0x3d00ff[_0xa3dc('0x4c')],'id');return _0x3d00ff[_0xa3dc('0x4d')](_0x2db788)['then'](function(){for(var _0x98a487=0x0;_0x98a487<_0x2db788[_0xa3dc('0x1d')];_0x98a487+=0x1){_0x6e3530[_0xa3dc('0x4e')](_0xa3dc('0x4f'),{'MailInteractionId':Number(_0x2db788[_0x98a487]),'UserId':Number(_0x3d00ff['id'])});}});}})[_0xa3dc('0xa')](function(){if(_0x4baa00===_0xa3dc('0x49')){var _0x539228=_['map'](_0x3d00ff[_0xa3dc('0x26')],'id');return _0x3d00ff[_0xa3dc('0x50')](_0x539228)['then'](function(){for(var _0x39bf40=0x0;_0x39bf40<_0x539228['length'];_0x39bf40+=0x1){_0x6e3530[_0xa3dc('0x4e')](_0xa3dc('0x51'),{'FaxInteractionId':Number(_0x539228[_0x39bf40]),'UserId':Number(_0x3d00ff['id'])});}});}})['then'](function(){if(_0x4baa00===_0xa3dc('0x49')){var _0x401444=_[_0xa3dc('0x16')](_0x3d00ff[_0xa3dc('0x28')],'id');return _0x3d00ff[_0xa3dc('0x52')](_0x401444)['then'](function(){for(var _0x26b786=0x0;_0x26b786<_0x401444['length'];_0x26b786+=0x1){_0x6e3530['emit'](_0xa3dc('0x53'),{'SmsInteractionId':Number(_0x401444[_0x26b786]),'UserId':Number(_0x3d00ff['id'])});}});}})[_0xa3dc('0xa')](function(){if(_0x4baa00===_0xa3dc('0x49')){var _0x438e27=_[_0xa3dc('0x16')](_0x3d00ff['OpenchannelInteractions'],'id');return _0x3d00ff[_0xa3dc('0x54')](_0x438e27)[_0xa3dc('0xa')](function(){for(var _0x1850d5=0x0;_0x1850d5<_0x438e27['length'];_0x1850d5+=0x1){_0x6e3530[_0xa3dc('0x4e')](_0xa3dc('0x55'),{'OpenchannelInteractionId':Number(_0x438e27[_0x1850d5]),'UserId':Number(_0x3d00ff['id'])});}});}})[_0xa3dc('0xa')](function(){if(_0x4baa00===_0xa3dc('0x49')){var _0x5ddcb2=_[_0xa3dc('0x16')](_0x3d00ff[_0xa3dc('0x56')],'id');return _0x3d00ff['removeWhatsappInteractions'](_0x5ddcb2)[_0xa3dc('0xa')](function(){for(var _0x31fd0e=0x0;_0x31fd0e<_0x5ddcb2[_0xa3dc('0x1d')];_0x31fd0e+=0x1){_0x6e3530[_0xa3dc('0x4e')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x5ddcb2[_0x31fd0e]),'UserId':Number(_0x3d00ff['id'])});}});}})['catch'](function(_0x2422f7){_0x11e09e['log'](_0x2422f7);});}}function onDisconnect(_0x5103a3,_0x3e4fa2){joinOrLeave(_0x5103a3,'leave',_0x3e4fa2);}function onConnect(_0x33db99){joinOrLeave(_0x33db99,_0xa3dc('0x57'));}exports[_0xa3dc('0x58')]=function(_0x3d7e46){_0x3d7e46['on'](_0xa3dc('0x59'),function(_0x5aeefc){_0x5aeefc[_0xa3dc('0x5a')](0x0);_0x5aeefc['address']=_0x5aeefc['request'][_0xa3dc('0x59')]['remoteAddress']+':'+_0x5aeefc[_0xa3dc('0x5b')][_0xa3dc('0x59')]['remotePort'];_0x5aeefc[_0xa3dc('0x5c')]=new Date();_0x5aeefc[_0xa3dc('0x5d')]=function(_0x3f763f){console['log'](_0xa3dc('0x5e')+_0x5aeefc[_0xa3dc('0x5f')][_0xa3dc('0x2')]+'['+_0x5aeefc[_0xa3dc('0x60')]+']',_0x3f763f);};_0x5aeefc['on'](_0xa3dc('0x61'),function(){onDisconnect(_0x5aeefc,_0x3d7e46);_0x5aeefc[_0xa3dc('0x5d')](_0xa3dc('0x62'));});onConnect(_0x5aeefc);_0x5aeefc[_0xa3dc('0x5d')](_0xa3dc('0x63'));});};