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 _0x7ada=['FaxInteraction','FaxInteractions','SmsInteraction','WhatsappInteractions','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','OpenchannelQueue','WhatsappQueue','Campaign','FaxQueues','SmsQueue','MailQueue','OpenchannelQueues','Trunk','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','length','voice','chat','fax','sms','mail','whatsapp','trunk:%s','campaign:%s:%s','user:%s','map','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','leave','removeFaxInteractions','SmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:remove','catch','default','connection','address','request','remotePort','connectedAt','log','nsp','disconnect','DISCONNECTED','CONNECTED','lodash','util','../mysqldb','name','Agents','agent','telephone','type','ivr','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','ChatQueues','SmsQueues','MailQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','role','where','format','%s:queue:%s','handshake','query','User','userProfileId','ChatInteraction','MailInteraction','MailInteractions'];(function(_0x50ed23,_0x47f6f9){var _0x1b6e9d=function(_0x5c1ca9){while(--_0x5c1ca9){_0x50ed23['push'](_0x50ed23['shift']());}};_0x1b6e9d(++_0x47f6f9);}(_0x7ada,0x103));var _0xa7ad=function(_0x1a71ee,_0x335cd9){_0x1a71ee=_0x1a71ee-0x0;var _0xa2e97e=_0x7ada[_0x1a71ee];return _0xa2e97e;};'use strict';var _=require(_0xa7ad('0x0'));var util=require(_0xa7ad('0x1'));var BPromise=require('bluebird');var db=require(_0xa7ad('0x2'))['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0xa7ad('0x3')],'include':[{'as':_0xa7ad('0x4'),'model':db['User'],'attributes':['id',_0xa7ad('0x3'),'role'],'raw':!![],'where':{'role':_0xa7ad('0x5')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xa7ad('0x3')],'where':{'role':_0xa7ad('0x6')}};var queryTrunks={'raw':!![],'attributes':['id',_0xa7ad('0x3')]};var queryAgents={'raw':!![],'attributes':['id',_0xa7ad('0x3')],'where':{'role':_0xa7ad('0x5')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xa7ad('0x3'),_0xa7ad('0x7')],'where':{'type':_0xa7ad('0x8')}};function getAssociatedResources(_0x3a90b5,_0x3dc6ec,_0x65cf49){return db[_0xa7ad('0x9')][_0xa7ad('0xa')]({'where':{'name':_0x3a90b5,'userProfileId':_0x3dc6ec},'raw':!![]})[_0xa7ad('0xb')](function(_0x2b7ece){if(_0x2b7ece){if(_0x2b7ece[_0xa7ad('0xc')]){switch(_0x3a90b5){case _0xa7ad('0xd'):case _0xa7ad('0xe'):case'FaxQueues':case _0xa7ad('0xf'):case _0xa7ad('0x10'):case'OpenchannelQueues':case _0xa7ad('0x11'):return db[_0x65cf49][_0xa7ad('0x12')](queryQueues);case _0xa7ad('0x13'):return db[_0x65cf49][_0xa7ad('0x12')](queryTelephones);case _0xa7ad('0x14'):return db[_0x65cf49][_0xa7ad('0x12')](queryTrunks);case _0xa7ad('0x15'):return db[_0x65cf49][_0xa7ad('0x12')](queryCampaigns);}}else{return db[_0xa7ad('0x16')][_0xa7ad('0x12')]({'attributes':['resourceId'],'where':{'sectionId':_0x2b7ece['id']},'raw':!![]})[_0xa7ad('0xb')](function(_0x38baa5){if(_0x38baa5){var _0x48fd53={'where':{'id':_['map'](_0x38baa5,_0xa7ad('0x17'))},'raw':!![]};switch(_0x65cf49){case'User':_0x48fd53['where'][_0xa7ad('0x18')]=_0xa7ad('0x6');break;case'Campaign':_0x48fd53[_0xa7ad('0x19')][_0xa7ad('0x7')]=_0xa7ad('0x8');break;}return db[_0x65cf49][_0xa7ad('0x12')](_0x48fd53);}else{return[];}});}}else{return[];}})[_0xa7ad('0xb')](function(_0xcc1090){return _0xcc1090;});}function joinOrLeaveQueues(_0x5634e4,_0x2e5c04,_0x36fcb5,_0x196aba){_0x5634e4[_0x2e5c04](util[_0xa7ad('0x1a')](_0xa7ad('0x1b'),_0x36fcb5,_0x196aba[_0xa7ad('0x3')]));if(_0x196aba[_0xa7ad('0x4')]){for(var _0x41a84b=0x0;_0x41a84b<_0x196aba['Agents']['length'];_0x41a84b+=0x1){_0x5634e4[_0x2e5c04](util[_0xa7ad('0x1a')]('user:%s',_0x196aba['Agents'][_0x41a84b][_0xa7ad('0x3')]));}}}function joinOrLeave(_0x268039,_0x5f342d,_0x528fc4){var _0x2b1451;if(_0x268039[_0xa7ad('0x1c')][_0xa7ad('0x1d')]['id']){db[_0xa7ad('0x1e')]['find']({'attributes':['id',_0xa7ad('0x3'),_0xa7ad('0x18'),_0xa7ad('0x1f')],'where':{'id':_0x268039['handshake']['query']['id']},'include':[{'model':db[_0xa7ad('0x20')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xa7ad('0x21')],'as':_0xa7ad('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0xa7ad('0x23')],'as':_0xa7ad('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0xa7ad('0x25')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0xa7ad('0x26'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x31ce67){if(_0x31ce67){_0x2b1451=_0x31ce67;_0x268039[_0x5f342d](util[_0xa7ad('0x1a')]('user:%s',_0x31ce67[_0xa7ad('0x3')]));var _0x50c54b=[];switch(_0x31ce67['role']){case _0xa7ad('0x27'):_0x268039[_0x5f342d](_0xa7ad('0x28'));_0x268039[_0x5f342d](_0xa7ad('0x29'));if(queryQueues[_0xa7ad('0x2a')](_0xa7ad('0x2b'))){delete queryQueues['include'];}_0x50c54b[_0xa7ad('0x2c')](db[_0xa7ad('0x2d')][_0xa7ad('0x12')](queryQueues));_0x50c54b['push'](db[_0xa7ad('0x2e')][_0xa7ad('0x12')](queryQueues));_0x50c54b[_0xa7ad('0x2c')](db[_0xa7ad('0x2f')][_0xa7ad('0x12')](queryQueues));_0x50c54b[_0xa7ad('0x2c')](db['SmsQueue']['findAll'](queryQueues));_0x50c54b[_0xa7ad('0x2c')](db['MailQueue'][_0xa7ad('0x12')](queryQueues));_0x50c54b[_0xa7ad('0x2c')](db[_0xa7ad('0x30')]['findAll'](queryQueues));_0x50c54b[_0xa7ad('0x2c')](db[_0xa7ad('0x31')][_0xa7ad('0x12')](queryQueues));_0x50c54b[_0xa7ad('0x2c')](db[_0xa7ad('0x1e')][_0xa7ad('0x12')](queryTelephones));_0x50c54b['push'](db['Trunk'][_0xa7ad('0x12')](queryTrunks));_0x50c54b['push'](db[_0xa7ad('0x32')][_0xa7ad('0x12')](queryCampaigns));_0x50c54b[_0xa7ad('0x2c')](db['User'][_0xa7ad('0x12')](queryAgents));break;case'user':_0x268039[_0x5f342d]('voice:inbound');_0x268039[_0x5f342d](_0xa7ad('0x29'));_0x50c54b[_0xa7ad('0x2c')](getAssociatedResources(_0xa7ad('0xd'),_0x31ce67[_0xa7ad('0x1f')],_0xa7ad('0x2d')));_0x50c54b['push'](getAssociatedResources(_0xa7ad('0xe'),_0x31ce67['userProfileId'],_0xa7ad('0x2e')));_0x50c54b['push'](getAssociatedResources(_0xa7ad('0x33'),_0x31ce67[_0xa7ad('0x1f')],'FaxQueue'));_0x50c54b[_0xa7ad('0x2c')](getAssociatedResources('SmsQueues',_0x31ce67[_0xa7ad('0x1f')],_0xa7ad('0x34')));_0x50c54b[_0xa7ad('0x2c')](getAssociatedResources(_0xa7ad('0x10'),_0x31ce67[_0xa7ad('0x1f')],_0xa7ad('0x35')));_0x50c54b[_0xa7ad('0x2c')](getAssociatedResources(_0xa7ad('0x36'),_0x31ce67['userProfileId'],_0xa7ad('0x30')));_0x50c54b[_0xa7ad('0x2c')](getAssociatedResources(_0xa7ad('0x11'),_0x31ce67[_0xa7ad('0x1f')],_0xa7ad('0x31')));_0x50c54b[_0xa7ad('0x2c')](getAssociatedResources(_0xa7ad('0x13'),_0x31ce67['userProfileId'],'User'));_0x50c54b[_0xa7ad('0x2c')](getAssociatedResources(_0xa7ad('0x14'),_0x31ce67[_0xa7ad('0x1f')],_0xa7ad('0x37')));_0x50c54b['push'](getAssociatedResources(_0xa7ad('0x15'),_0x31ce67[_0xa7ad('0x1f')],_0xa7ad('0x32')));_0x50c54b[_0xa7ad('0x2c')](db[_0xa7ad('0x1e')]['findAll'](queryAgents));break;case _0xa7ad('0x5'):_0x268039[_0x5f342d](_0xa7ad('0x28'));_0x268039[_0x5f342d](_0xa7ad('0x29'));_0x50c54b[_0xa7ad('0x2c')](_0x31ce67[_0xa7ad('0x38')]({'attributes':['id',_0xa7ad('0x3')]}));_0x50c54b['push'](_0x31ce67[_0xa7ad('0x39')]({'attributes':['id','name']}));_0x50c54b['push'](_0x31ce67[_0xa7ad('0x3a')]({'attributes':['id',_0xa7ad('0x3')]}));_0x50c54b[_0xa7ad('0x2c')](_0x31ce67[_0xa7ad('0x3b')]({'attributes':['id',_0xa7ad('0x3')]}));_0x50c54b[_0xa7ad('0x2c')](_0x31ce67[_0xa7ad('0x3c')]({'attributes':['id',_0xa7ad('0x3')]}));_0x50c54b['push'](_0x31ce67[_0xa7ad('0x3d')]({'attributes':['id',_0xa7ad('0x3')]}));_0x50c54b[_0xa7ad('0x2c')](_0x31ce67[_0xa7ad('0x3e')]({'attributes':['id',_0xa7ad('0x3')]}));break;}return BPromise['all'](_0x50c54b);}})[_0xa7ad('0xb')](function(_0x43ed54){if(_0x43ed54&&_0x43ed54[_0xa7ad('0x3f')]){for(var _0x29b9fe=0x0;_0x29b9fe<_0x43ed54[_0xa7ad('0x3f')];_0x29b9fe+=0x1){for(var _0x4ee8c7=0x0;_0x4ee8c7<_0x43ed54[_0x29b9fe][_0xa7ad('0x3f')];_0x4ee8c7+=0x1){switch(_0x29b9fe){case 0x0:joinOrLeaveQueues(_0x268039,_0x5f342d,_0xa7ad('0x40'),_0x43ed54[_0x29b9fe][_0x4ee8c7]);break;case 0x1:joinOrLeaveQueues(_0x268039,_0x5f342d,_0xa7ad('0x41'),_0x43ed54[_0x29b9fe][_0x4ee8c7]);break;case 0x2:joinOrLeaveQueues(_0x268039,_0x5f342d,_0xa7ad('0x42'),_0x43ed54[_0x29b9fe][_0x4ee8c7]);break;case 0x3:joinOrLeaveQueues(_0x268039,_0x5f342d,_0xa7ad('0x43'),_0x43ed54[_0x29b9fe][_0x4ee8c7]);break;case 0x4:joinOrLeaveQueues(_0x268039,_0x5f342d,_0xa7ad('0x44'),_0x43ed54[_0x29b9fe][_0x4ee8c7]);break;case 0x5:joinOrLeaveQueues(_0x268039,_0x5f342d,'openchannel',_0x43ed54[_0x29b9fe][_0x4ee8c7]);break;case 0x6:joinOrLeaveQueues(_0x268039,_0x5f342d,_0xa7ad('0x45'),_0x43ed54[_0x29b9fe][_0x4ee8c7]);break;case 0x7:_0x268039[_0x5f342d](util[_0xa7ad('0x1a')]('telephone:%s',_0x43ed54[_0x29b9fe][_0x4ee8c7][_0xa7ad('0x3')]));break;case 0x8:_0x268039[_0x5f342d](util[_0xa7ad('0x1a')](_0xa7ad('0x46'),_0x43ed54[_0x29b9fe][_0x4ee8c7]['name']));break;case 0x9:_0x268039[_0x5f342d](util[_0xa7ad('0x1a')](_0xa7ad('0x47'),_0x43ed54[_0x29b9fe][_0x4ee8c7][_0xa7ad('0x7')],_0x43ed54[_0x29b9fe][_0x4ee8c7][_0xa7ad('0x3')]));break;case 0xa:_0x268039[_0x5f342d](util[_0xa7ad('0x1a')](_0xa7ad('0x48'),_0x43ed54[_0x29b9fe][_0x4ee8c7][_0xa7ad('0x3')]));break;}}}}})['then'](function(){if(_0x5f342d==='leave'){var _0x4c6e40=_[_0xa7ad('0x49')](_0x2b1451['ChatInteractions'],'id');return _0x2b1451[_0xa7ad('0x4a')](_0x4c6e40)[_0xa7ad('0xb')](function(){for(var _0x1af059=0x0;_0x1af059<_0x4c6e40[_0xa7ad('0x3f')];_0x1af059+=0x1){_0x528fc4[_0xa7ad('0x4b')](_0xa7ad('0x4c'),{'ChatInteractionId':Number(_0x4c6e40[_0x1af059]),'UserId':Number(_0x2b1451['id'])});}});}})['then'](function(){if(_0x5f342d==='leave'){var _0x1d9101=_[_0xa7ad('0x49')](_0x2b1451[_0xa7ad('0x22')],'id');return _0x2b1451[_0xa7ad('0x4d')](_0x1d9101)[_0xa7ad('0xb')](function(){for(var _0x549164=0x0;_0x549164<_0x1d9101[_0xa7ad('0x3f')];_0x549164+=0x1){_0x528fc4[_0xa7ad('0x4b')](_0xa7ad('0x4e'),{'MailInteractionId':Number(_0x1d9101[_0x549164]),'UserId':Number(_0x2b1451['id'])});}});}})['then'](function(){if(_0x5f342d===_0xa7ad('0x4f')){var _0x69353c=_['map'](_0x2b1451[_0xa7ad('0x24')],'id');return _0x2b1451[_0xa7ad('0x50')](_0x69353c)[_0xa7ad('0xb')](function(){for(var _0x3b525a=0x0;_0x3b525a<_0x69353c[_0xa7ad('0x3f')];_0x3b525a+=0x1){_0x528fc4[_0xa7ad('0x4b')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x69353c[_0x3b525a]),'UserId':Number(_0x2b1451['id'])});}});}})[_0xa7ad('0xb')](function(){if(_0x5f342d===_0xa7ad('0x4f')){var _0x5c33da=_[_0xa7ad('0x49')](_0x2b1451[_0xa7ad('0x51')],'id');return _0x2b1451['removeSmsInteractions'](_0x5c33da)[_0xa7ad('0xb')](function(){for(var _0x3f9448=0x0;_0x3f9448<_0x5c33da[_0xa7ad('0x3f')];_0x3f9448+=0x1){_0x528fc4[_0xa7ad('0x4b')](_0xa7ad('0x52'),{'SmsInteractionId':Number(_0x5c33da[_0x3f9448]),'UserId':Number(_0x2b1451['id'])});}});}})['then'](function(){if(_0x5f342d===_0xa7ad('0x4f')){var _0x10cb72=_['map'](_0x2b1451['OpenchannelInteractions'],'id');return _0x2b1451[_0xa7ad('0x53')](_0x10cb72)[_0xa7ad('0xb')](function(){for(var _0x4fcabf=0x0;_0x4fcabf<_0x10cb72[_0xa7ad('0x3f')];_0x4fcabf+=0x1){_0x528fc4[_0xa7ad('0x4b')](_0xa7ad('0x54'),{'OpenchannelInteractionId':Number(_0x10cb72[_0x4fcabf]),'UserId':Number(_0x2b1451['id'])});}});}})[_0xa7ad('0xb')](function(){if(_0x5f342d===_0xa7ad('0x4f')){var _0x4bce05=_[_0xa7ad('0x49')](_0x2b1451[_0xa7ad('0x26')],'id');return _0x2b1451['removeWhatsappInteractions'](_0x4bce05)[_0xa7ad('0xb')](function(){for(var _0x4763ac=0x0;_0x4763ac<_0x4bce05[_0xa7ad('0x3f')];_0x4763ac+=0x1){_0x528fc4['emit'](_0xa7ad('0x55'),{'WhatsappInteractionId':Number(_0x4bce05[_0x4763ac]),'UserId':Number(_0x2b1451['id'])});}});}})[_0xa7ad('0x56')](function(_0x11a782){_0x268039['log'](_0x11a782);});}}function onDisconnect(_0x332ae5,_0x51dc3a){joinOrLeave(_0x332ae5,_0xa7ad('0x4f'),_0x51dc3a);}function onConnect(_0x3896a3){joinOrLeave(_0x3896a3,'join');}exports[_0xa7ad('0x57')]=function(_0x764671){_0x764671['on'](_0xa7ad('0x58'),function(_0x121ac0){_0x121ac0['setMaxListeners'](0x0);_0x121ac0[_0xa7ad('0x59')]=_0x121ac0['request'][_0xa7ad('0x58')]['remoteAddress']+':'+_0x121ac0[_0xa7ad('0x5a')][_0xa7ad('0x58')][_0xa7ad('0x5b')];_0x121ac0[_0xa7ad('0x5c')]=new Date();_0x121ac0['log']=function(_0x1a7245){console[_0xa7ad('0x5d')]('SocketIO\x20'+_0x121ac0[_0xa7ad('0x5e')][_0xa7ad('0x3')]+'['+_0x121ac0[_0xa7ad('0x59')]+']',_0x1a7245);};_0x121ac0['on'](_0xa7ad('0x5f'),function(){onDisconnect(_0x121ac0,_0x764671);_0x121ac0[_0xa7ad('0x5d')](_0xa7ad('0x60'));});onConnect(_0x121ac0);_0x121ac0[_0xa7ad('0x5d')](_0xa7ad('0x61'));});};