Built motion from commit f7863d46.|2.5.41
[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 _0x01d9=['request','connection','remoteAddress','SocketIO\x20','nsp','disconnect','CONNECTED','lodash','util','bluebird','../mysqldb','name','Agents','User','role','agent','type','ivr','UserProfileSection','findOne','then','VoiceQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','Telephones','findAll','Trunks','IvrCampaigns','resourceId','map','where','telephone','Campaign','length','format','handshake','query','find','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','user:%s','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','user','ChatQueues','ChatQueue','WhatsappQueue','Trunk','getVoiceQueues','getFaxQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','fax','sms','mail','openchannel','whatsapp','telephone:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','WhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','setMaxListeners','address'];(function(_0x3cc81e,_0x435f44){var _0x5b15e3=function(_0x4eadb5){while(--_0x4eadb5){_0x3cc81e['push'](_0x3cc81e['shift']());}};_0x5b15e3(++_0x435f44);}(_0x01d9,0x6c));var _0x901d=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x01d9[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x901d('0x0'));var util=require(_0x901d('0x1'));var BPromise=require(_0x901d('0x2'));var db=require(_0x901d('0x3'))['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0x901d('0x4')],'include':[{'as':_0x901d('0x5'),'model':db[_0x901d('0x6')],'attributes':['id',_0x901d('0x4'),_0x901d('0x7')],'raw':!![],'where':{'role':_0x901d('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x901d('0x4')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0x901d('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0x901d('0x4')],'where':{'role':_0x901d('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x901d('0x4'),_0x901d('0x9')],'where':{'type':_0x901d('0xa')}};function getAssociatedResources(_0x202568,_0x2555e0,_0x15076e){return db[_0x901d('0xb')][_0x901d('0xc')]({'where':{'name':_0x202568,'userProfileId':_0x2555e0},'raw':!![]})[_0x901d('0xd')](function(_0x1d3137){if(_0x1d3137){if(_0x1d3137['autoAssociation']){switch(_0x202568){case _0x901d('0xe'):case'ChatQueues':case _0x901d('0xf'):case _0x901d('0x10'):case _0x901d('0x11'):case _0x901d('0x12'):case _0x901d('0x13'):return db[_0x15076e]['findAll'](queryQueues);case _0x901d('0x14'):return db[_0x15076e][_0x901d('0x15')](queryTelephones);case _0x901d('0x16'):return db[_0x15076e][_0x901d('0x15')](queryTrunks);case _0x901d('0x17'):return db[_0x15076e][_0x901d('0x15')](queryCampaigns);}}else{return db['UserProfileResource'][_0x901d('0x15')]({'attributes':[_0x901d('0x18')],'where':{'sectionId':_0x1d3137['id']},'raw':!![]})[_0x901d('0xd')](function(_0x17d451){if(_0x17d451){var _0x1aba97={'where':{'id':_[_0x901d('0x19')](_0x17d451,_0x901d('0x18'))},'raw':!![]};switch(_0x15076e){case _0x901d('0x6'):_0x1aba97[_0x901d('0x1a')][_0x901d('0x7')]=_0x901d('0x1b');break;case _0x901d('0x1c'):_0x1aba97[_0x901d('0x1a')][_0x901d('0x9')]=_0x901d('0xa');break;}return db[_0x15076e][_0x901d('0x15')](_0x1aba97);}else{return[];}});}}else{return[];}})[_0x901d('0xd')](function(_0x31e1f7){return _0x31e1f7;});}function joinOrLeaveQueues(_0x57d518,_0x430634,_0x2f32f8,_0x4d27db){_0x57d518[_0x430634](util['format']('%s:queue:%s',_0x2f32f8,_0x4d27db['name']));if(_0x4d27db[_0x901d('0x5')]){for(var _0x44ea6f=0x0;_0x44ea6f<_0x4d27db['Agents'][_0x901d('0x1d')];_0x44ea6f+=0x1){_0x57d518[_0x430634](util[_0x901d('0x1e')]('user:%s',_0x4d27db[_0x901d('0x5')][_0x44ea6f][_0x901d('0x4')]));}}}function joinOrLeave(_0x2402de,_0x3f80b9,_0x1e7d36){var _0x1818d3;if(_0x2402de[_0x901d('0x1f')][_0x901d('0x20')]['id']){db['User'][_0x901d('0x21')]({'attributes':['id',_0x901d('0x4'),_0x901d('0x7'),_0x901d('0x22')],'where':{'id':_0x2402de['handshake'][_0x901d('0x20')]['id']},'include':[{'model':db[_0x901d('0x23')],'as':_0x901d('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0x901d('0x25')],'as':_0x901d('0x26'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0x901d('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x901d('0x28')],'as':_0x901d('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0x901d('0x2a')],'as':_0x901d('0x2b'),'attributes':['id'],'raw':!![]},{'model':db[_0x901d('0x2c')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0x901d('0xd')](function(_0x533038){if(_0x533038){_0x1818d3=_0x533038;_0x2402de[_0x3f80b9](util[_0x901d('0x1e')](_0x901d('0x2d'),_0x533038[_0x901d('0x4')]));var _0x287ff2=[];switch(_0x533038[_0x901d('0x7')]){case _0x901d('0x2e'):_0x2402de[_0x3f80b9](_0x901d('0x2f'));_0x2402de[_0x3f80b9](_0x901d('0x30'));if(queryQueues[_0x901d('0x31')](_0x901d('0x32'))){delete queryQueues[_0x901d('0x32')];}_0x287ff2[_0x901d('0x33')](db[_0x901d('0x34')][_0x901d('0x15')](queryQueues));_0x287ff2[_0x901d('0x33')](db['ChatQueue'][_0x901d('0x15')](queryQueues));_0x287ff2[_0x901d('0x33')](db[_0x901d('0x35')]['findAll'](queryQueues));_0x287ff2[_0x901d('0x33')](db[_0x901d('0x36')][_0x901d('0x15')](queryQueues));_0x287ff2[_0x901d('0x33')](db[_0x901d('0x37')][_0x901d('0x15')](queryQueues));_0x287ff2[_0x901d('0x33')](db[_0x901d('0x38')][_0x901d('0x15')](queryQueues));_0x287ff2[_0x901d('0x33')](db['WhatsappQueue']['findAll'](queryQueues));_0x287ff2[_0x901d('0x33')](db['User'][_0x901d('0x15')](queryTelephones));_0x287ff2[_0x901d('0x33')](db['Trunk'][_0x901d('0x15')](queryTrunks));_0x287ff2[_0x901d('0x33')](db[_0x901d('0x1c')]['findAll'](queryCampaigns));_0x287ff2[_0x901d('0x33')](db[_0x901d('0x6')][_0x901d('0x15')](queryAgents));break;case _0x901d('0x39'):_0x2402de[_0x3f80b9](_0x901d('0x2f'));_0x2402de[_0x3f80b9](_0x901d('0x30'));_0x287ff2[_0x901d('0x33')](getAssociatedResources(_0x901d('0xe'),_0x533038[_0x901d('0x22')],_0x901d('0x34')));_0x287ff2[_0x901d('0x33')](getAssociatedResources(_0x901d('0x3a'),_0x533038[_0x901d('0x22')],_0x901d('0x3b')));_0x287ff2[_0x901d('0x33')](getAssociatedResources(_0x901d('0xf'),_0x533038['userProfileId'],_0x901d('0x35')));_0x287ff2[_0x901d('0x33')](getAssociatedResources('SmsQueues',_0x533038['userProfileId'],_0x901d('0x36')));_0x287ff2['push'](getAssociatedResources(_0x901d('0x11'),_0x533038[_0x901d('0x22')],_0x901d('0x37')));_0x287ff2[_0x901d('0x33')](getAssociatedResources(_0x901d('0x12'),_0x533038[_0x901d('0x22')],'OpenchannelQueue'));_0x287ff2['push'](getAssociatedResources('WhatsappQueues',_0x533038['userProfileId'],_0x901d('0x3c')));_0x287ff2[_0x901d('0x33')](getAssociatedResources('Telephones',_0x533038[_0x901d('0x22')],_0x901d('0x6')));_0x287ff2['push'](getAssociatedResources(_0x901d('0x16'),_0x533038[_0x901d('0x22')],_0x901d('0x3d')));_0x287ff2[_0x901d('0x33')](getAssociatedResources('IvrCampaigns',_0x533038['userProfileId'],_0x901d('0x1c')));_0x287ff2[_0x901d('0x33')](db[_0x901d('0x6')][_0x901d('0x15')](queryAgents));break;case _0x901d('0x8'):_0x2402de[_0x3f80b9](_0x901d('0x2f'));_0x2402de[_0x3f80b9](_0x901d('0x30'));_0x287ff2[_0x901d('0x33')](_0x533038[_0x901d('0x3e')]({'attributes':['id',_0x901d('0x4')]}));_0x287ff2[_0x901d('0x33')](_0x533038['getChatQueues']({'attributes':['id',_0x901d('0x4')]}));_0x287ff2['push'](_0x533038[_0x901d('0x3f')]({'attributes':['id','name']}));_0x287ff2[_0x901d('0x33')](_0x533038['getSmsQueues']({'attributes':['id',_0x901d('0x4')]}));_0x287ff2[_0x901d('0x33')](_0x533038[_0x901d('0x40')]({'attributes':['id',_0x901d('0x4')]}));_0x287ff2[_0x901d('0x33')](_0x533038[_0x901d('0x41')]({'attributes':['id',_0x901d('0x4')]}));_0x287ff2[_0x901d('0x33')](_0x533038[_0x901d('0x42')]({'attributes':['id',_0x901d('0x4')]}));break;}return BPromise[_0x901d('0x43')](_0x287ff2);}})['then'](function(_0x3cf4b2){if(_0x3cf4b2&&_0x3cf4b2[_0x901d('0x1d')]){for(var _0x48ee6d=0x0;_0x48ee6d<_0x3cf4b2[_0x901d('0x1d')];_0x48ee6d+=0x1){for(var _0x3b75a3=0x0;_0x3b75a3<_0x3cf4b2[_0x48ee6d][_0x901d('0x1d')];_0x3b75a3+=0x1){switch(_0x48ee6d){case 0x0:joinOrLeaveQueues(_0x2402de,_0x3f80b9,_0x901d('0x44'),_0x3cf4b2[_0x48ee6d][_0x3b75a3]);break;case 0x1:joinOrLeaveQueues(_0x2402de,_0x3f80b9,_0x901d('0x45'),_0x3cf4b2[_0x48ee6d][_0x3b75a3]);break;case 0x2:joinOrLeaveQueues(_0x2402de,_0x3f80b9,_0x901d('0x46'),_0x3cf4b2[_0x48ee6d][_0x3b75a3]);break;case 0x3:joinOrLeaveQueues(_0x2402de,_0x3f80b9,_0x901d('0x47'),_0x3cf4b2[_0x48ee6d][_0x3b75a3]);break;case 0x4:joinOrLeaveQueues(_0x2402de,_0x3f80b9,_0x901d('0x48'),_0x3cf4b2[_0x48ee6d][_0x3b75a3]);break;case 0x5:joinOrLeaveQueues(_0x2402de,_0x3f80b9,_0x901d('0x49'),_0x3cf4b2[_0x48ee6d][_0x3b75a3]);break;case 0x6:joinOrLeaveQueues(_0x2402de,_0x3f80b9,_0x901d('0x4a'),_0x3cf4b2[_0x48ee6d][_0x3b75a3]);break;case 0x7:if(_0x1818d3[_0x901d('0x7')]!=='agent')_0x2402de[_0x3f80b9](util['format'](_0x901d('0x4b'),_0x3cf4b2[_0x48ee6d][_0x3b75a3][_0x901d('0x4')]));break;case 0x8:if(_0x1818d3[_0x901d('0x7')]!==_0x901d('0x8'))_0x2402de[_0x3f80b9](util[_0x901d('0x1e')]('trunk:%s',_0x3cf4b2[_0x48ee6d][_0x3b75a3]['name']));break;case 0x9:if(_0x1818d3[_0x901d('0x7')]!==_0x901d('0x8'))_0x2402de[_0x3f80b9](util['format'](_0x901d('0x4c'),_0x3cf4b2[_0x48ee6d][_0x3b75a3][_0x901d('0x9')],_0x3cf4b2[_0x48ee6d][_0x3b75a3]['name']));break;case 0xa:_0x2402de[_0x3f80b9](util[_0x901d('0x1e')]('user:%s',_0x3cf4b2[_0x48ee6d][_0x3b75a3][_0x901d('0x4')]));break;}}}}})[_0x901d('0xd')](function(){if(_0x3f80b9===_0x901d('0x4d')){var _0x12c7e8=_['map'](_0x1818d3[_0x901d('0x24')],'id');return _0x1818d3[_0x901d('0x4e')](_0x12c7e8)[_0x901d('0xd')](function(){for(var _0x8af950=0x0;_0x8af950<_0x12c7e8[_0x901d('0x1d')];_0x8af950+=0x1){_0x1e7d36[_0x901d('0x4f')](_0x901d('0x50'),{'ChatInteractionId':Number(_0x12c7e8[_0x8af950]),'UserId':Number(_0x1818d3['id'])});}});}})[_0x901d('0xd')](function(){if(_0x3f80b9===_0x901d('0x4d')){var _0x3948d8=_['map'](_0x1818d3[_0x901d('0x26')],'id');return _0x1818d3['removeMailInteractions'](_0x3948d8)[_0x901d('0xd')](function(){for(var _0x26e6a2=0x0;_0x26e6a2<_0x3948d8[_0x901d('0x1d')];_0x26e6a2+=0x1){_0x1e7d36[_0x901d('0x4f')](_0x901d('0x51'),{'MailInteractionId':Number(_0x3948d8[_0x26e6a2]),'UserId':Number(_0x1818d3['id'])});}});}})[_0x901d('0xd')](function(){if(_0x3f80b9===_0x901d('0x4d')){var _0x428a82=_['map'](_0x1818d3[_0x901d('0x27')],'id');return _0x1818d3[_0x901d('0x52')](_0x428a82)[_0x901d('0xd')](function(){for(var _0x4b7e88=0x0;_0x4b7e88<_0x428a82[_0x901d('0x1d')];_0x4b7e88+=0x1){_0x1e7d36['emit'](_0x901d('0x53'),{'FaxInteractionId':Number(_0x428a82[_0x4b7e88]),'UserId':Number(_0x1818d3['id'])});}});}})[_0x901d('0xd')](function(){if(_0x3f80b9===_0x901d('0x4d')){var _0x571209=_[_0x901d('0x19')](_0x1818d3[_0x901d('0x29')],'id');return _0x1818d3[_0x901d('0x54')](_0x571209)[_0x901d('0xd')](function(){for(var _0x42f289=0x0;_0x42f289<_0x571209[_0x901d('0x1d')];_0x42f289+=0x1){_0x1e7d36['emit'](_0x901d('0x55'),{'SmsInteractionId':Number(_0x571209[_0x42f289]),'UserId':Number(_0x1818d3['id'])});}});}})[_0x901d('0xd')](function(){if(_0x3f80b9===_0x901d('0x4d')){var _0x3229ae=_[_0x901d('0x19')](_0x1818d3[_0x901d('0x2b')],'id');return _0x1818d3['removeOpenchannelInteractions'](_0x3229ae)[_0x901d('0xd')](function(){for(var _0x5a7849=0x0;_0x5a7849<_0x3229ae['length'];_0x5a7849+=0x1){_0x1e7d36['emit']('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x3229ae[_0x5a7849]),'UserId':Number(_0x1818d3['id'])});}});}})[_0x901d('0xd')](function(){if(_0x3f80b9===_0x901d('0x4d')){var _0x1a5e3c=_['map'](_0x1818d3[_0x901d('0x56')],'id');return _0x1818d3['removeWhatsappInteractions'](_0x1a5e3c)[_0x901d('0xd')](function(){for(var _0x219c23=0x0;_0x219c23<_0x1a5e3c[_0x901d('0x1d')];_0x219c23+=0x1){_0x1e7d36[_0x901d('0x4f')](_0x901d('0x57'),{'WhatsappInteractionId':Number(_0x1a5e3c[_0x219c23]),'UserId':Number(_0x1818d3['id'])});}});}})[_0x901d('0x58')](function(_0x32d27d){_0x2402de[_0x901d('0x59')](_0x32d27d);});}}function onDisconnect(_0x1868a8,_0x9d336b){joinOrLeave(_0x1868a8,_0x901d('0x4d'),_0x9d336b);}function onConnect(_0xaa6553){joinOrLeave(_0xaa6553,_0x901d('0x5a'));}exports[_0x901d('0x5b')]=function(_0x4f47ac){_0x4f47ac['on']('connection',function(_0x1b4152){_0x1b4152[_0x901d('0x5c')](0x0);_0x1b4152[_0x901d('0x5d')]=_0x1b4152[_0x901d('0x5e')][_0x901d('0x5f')][_0x901d('0x60')]+':'+_0x1b4152[_0x901d('0x5e')]['connection']['remotePort'];_0x1b4152['connectedAt']=new Date();_0x1b4152[_0x901d('0x59')]=function(_0x1f37dc){console[_0x901d('0x59')](_0x901d('0x61')+_0x1b4152[_0x901d('0x62')][_0x901d('0x4')]+'['+_0x1b4152[_0x901d('0x5d')]+']',_0x1f37dc);};_0x1b4152['on'](_0x901d('0x63'),function(){onDisconnect(_0x1b4152,_0x4f47ac);_0x1b4152[_0x901d('0x59')]('DISCONNECTED');});onConnect(_0x1b4152);_0x1b4152['log'](_0x901d('0x64'));});};