Built motion from commit d5e4af8c.|2.6.23
[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 _0x1d91=['getOpenchannelQueues','getWhatsappQueues','all','voice','chat','fax','sms','openchannel','telephone:%s','trunk:%s','map','ChatInteractions','emit','user_has_chat_interactions:remove','leave','removeMailInteractions','user_has_mail_interactions:remove','FaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','OpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','address','request','connection','remoteAddress','remotePort','connectedAt','nsp','disconnect','lodash','util','bluebird','./environment','name','Agents','User','role','agent','type','ivr','findOne','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','MailQueues','WhatsappQueues','findAll','Trunks','IvrCampaigns','resourceId','then','where','format','%s:queue:%s','length','user:%s','handshake','find','userProfileId','query','ChatInteraction','MailInteraction','MailInteractions','FaxInteraction','SmsInteraction','SmsInteractions','OpenchannelInteraction','WhatsappInteractions','voice:inbound','include','push','FaxQueue','SmsQueue','MailQueue','WhatsappQueue','Trunk','Campaign','user','ChatQueue','SmsQueues','OpenchannelQueues','OpenchannelQueue','Telephones','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues'];(function(_0x40bffc,_0x3a45d7){var _0x3007e9=function(_0x4c8fda){while(--_0x4c8fda){_0x40bffc['push'](_0x40bffc['shift']());}};_0x3007e9(++_0x3a45d7);}(_0x1d91,0x150));var _0x11d9=function(_0x2189fd,_0x55e28e){_0x2189fd=_0x2189fd-0x0;var _0xb78e30=_0x1d91[_0x2189fd];return _0xb78e30;};'use strict';var _=require(_0x11d9('0x0'));var util=require(_0x11d9('0x1'));var BPromise=require(_0x11d9('0x2'));var db=require('../mysqldb')['db'];var config=require(_0x11d9('0x3'));var queryQueues={'attributes':['id',_0x11d9('0x4')],'include':[{'as':_0x11d9('0x5'),'model':db[_0x11d9('0x6')],'attributes':['id','name',_0x11d9('0x7')],'raw':!![],'where':{'role':_0x11d9('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x11d9('0x4')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0x11d9('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x11d9('0x4'),_0x11d9('0x9')],'where':{'type':_0x11d9('0xa')}};function getAssociatedResources(_0x7a8c60,_0x5c6160,_0x311490){return db['UserProfileSection'][_0x11d9('0xb')]({'where':{'name':_0x7a8c60,'userProfileId':_0x5c6160},'raw':!![]})['then'](function(_0xd0ce63){if(_0xd0ce63){if(_0xd0ce63[_0x11d9('0xc')]){switch(_0x7a8c60){case _0x11d9('0xd'):case _0x11d9('0xe'):case _0x11d9('0xf'):case'SmsQueues':case _0x11d9('0x10'):case'OpenchannelQueues':case _0x11d9('0x11'):return db[_0x311490][_0x11d9('0x12')](queryQueues);case'Telephones':return db[_0x311490][_0x11d9('0x12')](queryTelephones);case _0x11d9('0x13'):return db[_0x311490][_0x11d9('0x12')](queryTrunks);case _0x11d9('0x14'):return db[_0x311490]['findAll'](queryCampaigns);}}else{return db['UserProfileResource'][_0x11d9('0x12')]({'attributes':[_0x11d9('0x15')],'where':{'sectionId':_0xd0ce63['id']},'raw':!![]})[_0x11d9('0x16')](function(_0x1818e6){if(_0x1818e6){var _0x550459={'where':{'id':_['map'](_0x1818e6,'resourceId')},'raw':!![]};switch(_0x311490){case'User':_0x550459[_0x11d9('0x17')][_0x11d9('0x7')]='telephone';break;case'Campaign':_0x550459[_0x11d9('0x17')]['type']=_0x11d9('0xa');break;}return db[_0x311490]['findAll'](_0x550459);}else{return[];}});}}else{return[];}})['then'](function(_0x1a58e8){return _0x1a58e8;});}function joinOrLeaveQueues(_0x363fa6,_0xba808b,_0x42a637,_0x5371b6){_0x363fa6[_0xba808b](util[_0x11d9('0x18')](_0x11d9('0x19'),_0x42a637,_0x5371b6['name']));if(_0x5371b6['Agents']){for(var _0xf60d74=0x0;_0xf60d74<_0x5371b6[_0x11d9('0x5')][_0x11d9('0x1a')];_0xf60d74+=0x1){_0x363fa6[_0xba808b](util['format'](_0x11d9('0x1b'),_0x5371b6[_0x11d9('0x5')][_0xf60d74][_0x11d9('0x4')]));}}}function joinOrLeave(_0x35e7bf,_0x2d6956,_0x3ec49a){var _0x2b404a;if(_0x35e7bf[_0x11d9('0x1c')]['query']['id']){db[_0x11d9('0x6')][_0x11d9('0x1d')]({'attributes':['id','name',_0x11d9('0x7'),_0x11d9('0x1e')],'where':{'id':_0x35e7bf[_0x11d9('0x1c')][_0x11d9('0x1f')]['id']},'include':[{'model':db[_0x11d9('0x20')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x11d9('0x21')],'as':_0x11d9('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0x11d9('0x23')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x11d9('0x24')],'as':_0x11d9('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x11d9('0x26')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0x11d9('0x27'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x372ee4){if(_0x372ee4){_0x2b404a=_0x372ee4;_0x35e7bf[_0x2d6956](util[_0x11d9('0x18')]('user:%s',_0x372ee4[_0x11d9('0x4')]));var _0x44f163=[];switch(_0x372ee4[_0x11d9('0x7')]){case'admin':_0x35e7bf[_0x2d6956](_0x11d9('0x28'));_0x35e7bf[_0x2d6956]('voice:outbound');if(queryQueues['hasOwnProperty'](_0x11d9('0x29'))){delete queryQueues['include'];}_0x44f163[_0x11d9('0x2a')](db['VoiceQueue'][_0x11d9('0x12')](queryQueues));_0x44f163[_0x11d9('0x2a')](db['ChatQueue'][_0x11d9('0x12')](queryQueues));_0x44f163['push'](db[_0x11d9('0x2b')]['findAll'](queryQueues));_0x44f163[_0x11d9('0x2a')](db[_0x11d9('0x2c')][_0x11d9('0x12')](queryQueues));_0x44f163[_0x11d9('0x2a')](db[_0x11d9('0x2d')][_0x11d9('0x12')](queryQueues));_0x44f163[_0x11d9('0x2a')](db['OpenchannelQueue']['findAll'](queryQueues));_0x44f163[_0x11d9('0x2a')](db[_0x11d9('0x2e')][_0x11d9('0x12')](queryQueues));_0x44f163[_0x11d9('0x2a')](db[_0x11d9('0x6')][_0x11d9('0x12')](queryTelephones));_0x44f163['push'](db[_0x11d9('0x2f')][_0x11d9('0x12')](queryTrunks));_0x44f163['push'](db[_0x11d9('0x30')][_0x11d9('0x12')](queryCampaigns));_0x44f163[_0x11d9('0x2a')](db[_0x11d9('0x6')]['findAll'](queryAgents));break;case _0x11d9('0x31'):_0x35e7bf[_0x2d6956]('voice:inbound');_0x35e7bf[_0x2d6956]('voice:outbound');_0x44f163[_0x11d9('0x2a')](getAssociatedResources(_0x11d9('0xd'),_0x372ee4[_0x11d9('0x1e')],'VoiceQueue'));_0x44f163['push'](getAssociatedResources(_0x11d9('0xe'),_0x372ee4[_0x11d9('0x1e')],_0x11d9('0x32')));_0x44f163['push'](getAssociatedResources(_0x11d9('0xf'),_0x372ee4[_0x11d9('0x1e')],_0x11d9('0x2b')));_0x44f163[_0x11d9('0x2a')](getAssociatedResources(_0x11d9('0x33'),_0x372ee4[_0x11d9('0x1e')],_0x11d9('0x2c')));_0x44f163[_0x11d9('0x2a')](getAssociatedResources('MailQueues',_0x372ee4['userProfileId'],_0x11d9('0x2d')));_0x44f163[_0x11d9('0x2a')](getAssociatedResources(_0x11d9('0x34'),_0x372ee4['userProfileId'],_0x11d9('0x35')));_0x44f163[_0x11d9('0x2a')](getAssociatedResources(_0x11d9('0x11'),_0x372ee4[_0x11d9('0x1e')],_0x11d9('0x2e')));_0x44f163['push'](getAssociatedResources(_0x11d9('0x36'),_0x372ee4['userProfileId'],_0x11d9('0x6')));_0x44f163[_0x11d9('0x2a')](getAssociatedResources('Trunks',_0x372ee4['userProfileId'],'Trunk'));_0x44f163[_0x11d9('0x2a')](getAssociatedResources(_0x11d9('0x14'),_0x372ee4[_0x11d9('0x1e')],_0x11d9('0x30')));_0x44f163['push'](db[_0x11d9('0x6')][_0x11d9('0x12')](queryAgents));break;case _0x11d9('0x8'):_0x35e7bf[_0x2d6956](_0x11d9('0x28'));_0x35e7bf[_0x2d6956]('voice:outbound');_0x44f163[_0x11d9('0x2a')](_0x372ee4[_0x11d9('0x37')]({'attributes':['id',_0x11d9('0x4')]}));_0x44f163['push'](_0x372ee4[_0x11d9('0x38')]({'attributes':['id',_0x11d9('0x4')]}));_0x44f163[_0x11d9('0x2a')](_0x372ee4[_0x11d9('0x39')]({'attributes':['id',_0x11d9('0x4')]}));_0x44f163[_0x11d9('0x2a')](_0x372ee4[_0x11d9('0x3a')]({'attributes':['id',_0x11d9('0x4')]}));_0x44f163[_0x11d9('0x2a')](_0x372ee4[_0x11d9('0x3b')]({'attributes':['id',_0x11d9('0x4')]}));_0x44f163['push'](_0x372ee4[_0x11d9('0x3c')]({'attributes':['id',_0x11d9('0x4')]}));_0x44f163[_0x11d9('0x2a')](_0x372ee4[_0x11d9('0x3d')]({'attributes':['id',_0x11d9('0x4')]}));break;}return BPromise[_0x11d9('0x3e')](_0x44f163);}})[_0x11d9('0x16')](function(_0x5e2bd5){if(_0x5e2bd5&&_0x5e2bd5[_0x11d9('0x1a')]){for(var _0x579026=0x0;_0x579026<_0x5e2bd5[_0x11d9('0x1a')];_0x579026+=0x1){for(var _0x3bacbe=0x0;_0x3bacbe<_0x5e2bd5[_0x579026][_0x11d9('0x1a')];_0x3bacbe+=0x1){switch(_0x579026){case 0x0:joinOrLeaveQueues(_0x35e7bf,_0x2d6956,_0x11d9('0x3f'),_0x5e2bd5[_0x579026][_0x3bacbe]);break;case 0x1:joinOrLeaveQueues(_0x35e7bf,_0x2d6956,_0x11d9('0x40'),_0x5e2bd5[_0x579026][_0x3bacbe]);break;case 0x2:joinOrLeaveQueues(_0x35e7bf,_0x2d6956,_0x11d9('0x41'),_0x5e2bd5[_0x579026][_0x3bacbe]);break;case 0x3:joinOrLeaveQueues(_0x35e7bf,_0x2d6956,_0x11d9('0x42'),_0x5e2bd5[_0x579026][_0x3bacbe]);break;case 0x4:joinOrLeaveQueues(_0x35e7bf,_0x2d6956,'mail',_0x5e2bd5[_0x579026][_0x3bacbe]);break;case 0x5:joinOrLeaveQueues(_0x35e7bf,_0x2d6956,_0x11d9('0x43'),_0x5e2bd5[_0x579026][_0x3bacbe]);break;case 0x6:joinOrLeaveQueues(_0x35e7bf,_0x2d6956,'whatsapp',_0x5e2bd5[_0x579026][_0x3bacbe]);break;case 0x7:if(_0x2b404a[_0x11d9('0x7')]!==_0x11d9('0x8'))_0x35e7bf[_0x2d6956](util[_0x11d9('0x18')](_0x11d9('0x44'),_0x5e2bd5[_0x579026][_0x3bacbe][_0x11d9('0x4')]));break;case 0x8:if(_0x2b404a[_0x11d9('0x7')]!==_0x11d9('0x8'))_0x35e7bf[_0x2d6956](util[_0x11d9('0x18')](_0x11d9('0x45'),_0x5e2bd5[_0x579026][_0x3bacbe]['name']));break;case 0x9:if(_0x2b404a[_0x11d9('0x7')]!=='agent')_0x35e7bf[_0x2d6956](util['format']('campaign:%s:%s',_0x5e2bd5[_0x579026][_0x3bacbe][_0x11d9('0x9')],_0x5e2bd5[_0x579026][_0x3bacbe][_0x11d9('0x4')]));break;case 0xa:_0x35e7bf[_0x2d6956](util[_0x11d9('0x18')]('user:%s',_0x5e2bd5[_0x579026][_0x3bacbe][_0x11d9('0x4')]));break;}}}}})[_0x11d9('0x16')](function(){if(_0x2d6956==='leave'){var _0xe4610=_[_0x11d9('0x46')](_0x2b404a[_0x11d9('0x47')],'id');return _0x2b404a['removeChatInteractions'](_0xe4610)[_0x11d9('0x16')](function(){for(var _0x240882=0x0;_0x240882<_0xe4610[_0x11d9('0x1a')];_0x240882+=0x1){_0x3ec49a[_0x11d9('0x48')](_0x11d9('0x49'),{'ChatInteractionId':Number(_0xe4610[_0x240882]),'UserId':Number(_0x2b404a['id'])});}});}})['then'](function(){if(_0x2d6956===_0x11d9('0x4a')){var _0x51da9f=_[_0x11d9('0x46')](_0x2b404a[_0x11d9('0x22')],'id');return _0x2b404a[_0x11d9('0x4b')](_0x51da9f)['then'](function(){for(var _0xd45b9=0x0;_0xd45b9<_0x51da9f[_0x11d9('0x1a')];_0xd45b9+=0x1){_0x3ec49a[_0x11d9('0x48')](_0x11d9('0x4c'),{'MailInteractionId':Number(_0x51da9f[_0xd45b9]),'UserId':Number(_0x2b404a['id'])});}});}})[_0x11d9('0x16')](function(){if(_0x2d6956==='leave'){var _0x1d0c70=_['map'](_0x2b404a[_0x11d9('0x4d')],'id');return _0x2b404a[_0x11d9('0x4e')](_0x1d0c70)[_0x11d9('0x16')](function(){for(var _0xb4eef2=0x0;_0xb4eef2<_0x1d0c70[_0x11d9('0x1a')];_0xb4eef2+=0x1){_0x3ec49a[_0x11d9('0x48')](_0x11d9('0x4f'),{'FaxInteractionId':Number(_0x1d0c70[_0xb4eef2]),'UserId':Number(_0x2b404a['id'])});}});}})[_0x11d9('0x16')](function(){if(_0x2d6956===_0x11d9('0x4a')){var _0x5ddf2e=_[_0x11d9('0x46')](_0x2b404a['SmsInteractions'],'id');return _0x2b404a[_0x11d9('0x50')](_0x5ddf2e)[_0x11d9('0x16')](function(){for(var _0x51845e=0x0;_0x51845e<_0x5ddf2e['length'];_0x51845e+=0x1){_0x3ec49a[_0x11d9('0x48')](_0x11d9('0x51'),{'SmsInteractionId':Number(_0x5ddf2e[_0x51845e]),'UserId':Number(_0x2b404a['id'])});}});}})[_0x11d9('0x16')](function(){if(_0x2d6956===_0x11d9('0x4a')){var _0x46e2a3=_[_0x11d9('0x46')](_0x2b404a[_0x11d9('0x52')],'id');return _0x2b404a[_0x11d9('0x53')](_0x46e2a3)[_0x11d9('0x16')](function(){for(var _0x1eab9a=0x0;_0x1eab9a<_0x46e2a3['length'];_0x1eab9a+=0x1){_0x3ec49a[_0x11d9('0x48')](_0x11d9('0x54'),{'OpenchannelInteractionId':Number(_0x46e2a3[_0x1eab9a]),'UserId':Number(_0x2b404a['id'])});}});}})[_0x11d9('0x16')](function(){if(_0x2d6956===_0x11d9('0x4a')){var _0x5e726=_[_0x11d9('0x46')](_0x2b404a[_0x11d9('0x27')],'id');return _0x2b404a[_0x11d9('0x55')](_0x5e726)[_0x11d9('0x16')](function(){for(var _0x3c1b64=0x0;_0x3c1b64<_0x5e726[_0x11d9('0x1a')];_0x3c1b64+=0x1){_0x3ec49a[_0x11d9('0x48')](_0x11d9('0x56'),{'WhatsappInteractionId':Number(_0x5e726[_0x3c1b64]),'UserId':Number(_0x2b404a['id'])});}});}})[_0x11d9('0x57')](function(_0x4d805f){_0x35e7bf[_0x11d9('0x58')](_0x4d805f);});}}function onDisconnect(_0x17d1f5,_0x4484fa){joinOrLeave(_0x17d1f5,_0x11d9('0x4a'),_0x4484fa);}function onConnect(_0x32699f){joinOrLeave(_0x32699f,_0x11d9('0x59'));}exports[_0x11d9('0x5a')]=function(_0x1c6f92){_0x1c6f92['on']('connection',function(_0x5e242e){_0x5e242e['setMaxListeners'](0x0);_0x5e242e[_0x11d9('0x5b')]=_0x5e242e[_0x11d9('0x5c')][_0x11d9('0x5d')][_0x11d9('0x5e')]+':'+_0x5e242e[_0x11d9('0x5c')][_0x11d9('0x5d')][_0x11d9('0x5f')];_0x5e242e[_0x11d9('0x60')]=new Date();_0x5e242e[_0x11d9('0x58')]=function(_0xbe9f2e){console[_0x11d9('0x58')]('SocketIO\x20'+_0x5e242e[_0x11d9('0x61')][_0x11d9('0x4')]+'['+_0x5e242e[_0x11d9('0x5b')]+']',_0xbe9f2e);};_0x5e242e['on'](_0x11d9('0x62'),function(){onDisconnect(_0x5e242e,_0x1c6f92);_0x5e242e[_0x11d9('0x58')]('DISCONNECTED');});onConnect(_0x5e242e);_0x5e242e['log']('CONNECTED');});};