Built motion from commit c116dc8b.|2.6.30
[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 _0xdf55=['role','telephone:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','user_has_mail_interactions:remove','FaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','SmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','connection','setMaxListeners','address','remoteAddress','remotePort','connectedAt','SocketIO\x20','disconnect','CONNECTED','lodash','util','../mysqldb','./environment','Agents','User','name','agent','telephone','type','then','autoAssociation','VoiceQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','Campaign','ivr','format','%s:queue:%s','length','user:%s','handshake','query','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','SmsInteraction','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteractions','admin','voice:inbound','voice:outbound','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','OpenchannelQueue','WhatsappQueue','user','ChatQueues','FaxQueues','MailQueue','Trunk','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','fax','mail','openchannel','whatsapp'];(function(_0x2ec900,_0x5ce86a){var _0x39f954=function(_0xac64a0){while(--_0xac64a0){_0x2ec900['push'](_0x2ec900['shift']());}};_0x39f954(++_0x5ce86a);}(_0xdf55,0x83));var _0x5df5=function(_0x4d3941,_0x5b0bc0){_0x4d3941=_0x4d3941-0x0;var _0x5c311b=_0xdf55[_0x4d3941];return _0x5c311b;};'use strict';var _=require(_0x5df5('0x0'));var util=require(_0x5df5('0x1'));var BPromise=require('bluebird');var db=require(_0x5df5('0x2'))['db'];var config=require(_0x5df5('0x3'));var queryQueues={'attributes':['id','name'],'include':[{'as':_0x5df5('0x4'),'model':db[_0x5df5('0x5')],'attributes':['id',_0x5df5('0x6'),'role'],'raw':!![],'where':{'role':_0x5df5('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x5df5('0x6')],'where':{'role':_0x5df5('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0x5df5('0x6')]};var queryAgents={'raw':!![],'attributes':['id',_0x5df5('0x6')],'where':{'role':_0x5df5('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x5df5('0x6'),_0x5df5('0x9')],'where':{'type':'ivr'}};function getAssociatedResources(_0x338f2b,_0x403d8b,_0x41941e){return db['UserProfileSection']['findOne']({'where':{'name':_0x338f2b,'userProfileId':_0x403d8b},'raw':!![]})[_0x5df5('0xa')](function(_0x4e80bd){if(_0x4e80bd){if(_0x4e80bd[_0x5df5('0xb')]){switch(_0x338f2b){case _0x5df5('0xc'):case'ChatQueues':case'FaxQueues':case _0x5df5('0xd'):case _0x5df5('0xe'):case _0x5df5('0xf'):case _0x5df5('0x10'):return db[_0x41941e][_0x5df5('0x11')](queryQueues);case _0x5df5('0x12'):return db[_0x41941e][_0x5df5('0x11')](queryTelephones);case _0x5df5('0x13'):return db[_0x41941e][_0x5df5('0x11')](queryTrunks);case _0x5df5('0x14'):return db[_0x41941e]['findAll'](queryCampaigns);}}else{return db[_0x5df5('0x15')]['findAll']({'attributes':[_0x5df5('0x16')],'where':{'sectionId':_0x4e80bd['id']},'raw':!![]})[_0x5df5('0xa')](function(_0x5b0ad9){if(_0x5b0ad9){var _0x3657c8={'where':{'id':_[_0x5df5('0x17')](_0x5b0ad9,'resourceId')},'raw':!![]};switch(_0x41941e){case _0x5df5('0x5'):_0x3657c8[_0x5df5('0x18')]['role']=_0x5df5('0x8');break;case _0x5df5('0x19'):_0x3657c8[_0x5df5('0x18')][_0x5df5('0x9')]=_0x5df5('0x1a');break;}return db[_0x41941e]['findAll'](_0x3657c8);}else{return[];}});}}else{return[];}})['then'](function(_0x48c824){return _0x48c824;});}function joinOrLeaveQueues(_0x5d8dfd,_0x58152a,_0x40a8f5,_0xa939e4){_0x5d8dfd[_0x58152a](util[_0x5df5('0x1b')](_0x5df5('0x1c'),_0x40a8f5,_0xa939e4['name']));if(_0xa939e4[_0x5df5('0x4')]){for(var _0x39d8a1=0x0;_0x39d8a1<_0xa939e4[_0x5df5('0x4')][_0x5df5('0x1d')];_0x39d8a1+=0x1){_0x5d8dfd[_0x58152a](util[_0x5df5('0x1b')](_0x5df5('0x1e'),_0xa939e4['Agents'][_0x39d8a1][_0x5df5('0x6')]));}}}function joinOrLeave(_0x2e862d,_0x8742a7,_0x446bba){var _0x5ca542;if(_0x2e862d[_0x5df5('0x1f')][_0x5df5('0x20')]['id']){db[_0x5df5('0x5')]['find']({'attributes':['id','name','role',_0x5df5('0x21')],'where':{'id':_0x2e862d[_0x5df5('0x1f')][_0x5df5('0x20')]['id']},'include':[{'model':db[_0x5df5('0x22')],'as':_0x5df5('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x5df5('0x24')],'as':_0x5df5('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x5df5('0x26')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x5df5('0x27')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x5df5('0x28')],'as':_0x5df5('0x29'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0x5df5('0x2a'),'attributes':['id'],'raw':!![]}]})['then'](function(_0xd2b213){if(_0xd2b213){_0x5ca542=_0xd2b213;_0x2e862d[_0x8742a7](util['format'](_0x5df5('0x1e'),_0xd2b213['name']));var _0x309506=[];switch(_0xd2b213['role']){case _0x5df5('0x2b'):_0x2e862d[_0x8742a7](_0x5df5('0x2c'));_0x2e862d[_0x8742a7](_0x5df5('0x2d'));if(queryQueues['hasOwnProperty'](_0x5df5('0x2e'))){delete queryQueues[_0x5df5('0x2e')];}_0x309506[_0x5df5('0x2f')](db[_0x5df5('0x30')][_0x5df5('0x11')](queryQueues));_0x309506[_0x5df5('0x2f')](db[_0x5df5('0x31')]['findAll'](queryQueues));_0x309506['push'](db[_0x5df5('0x32')][_0x5df5('0x11')](queryQueues));_0x309506[_0x5df5('0x2f')](db[_0x5df5('0x33')][_0x5df5('0x11')](queryQueues));_0x309506[_0x5df5('0x2f')](db['MailQueue'][_0x5df5('0x11')](queryQueues));_0x309506[_0x5df5('0x2f')](db[_0x5df5('0x34')][_0x5df5('0x11')](queryQueues));_0x309506['push'](db[_0x5df5('0x35')]['findAll'](queryQueues));_0x309506[_0x5df5('0x2f')](db[_0x5df5('0x5')]['findAll'](queryTelephones));_0x309506[_0x5df5('0x2f')](db['Trunk'][_0x5df5('0x11')](queryTrunks));_0x309506[_0x5df5('0x2f')](db[_0x5df5('0x19')][_0x5df5('0x11')](queryCampaigns));_0x309506['push'](db[_0x5df5('0x5')][_0x5df5('0x11')](queryAgents));break;case _0x5df5('0x36'):_0x2e862d[_0x8742a7](_0x5df5('0x2c'));_0x2e862d[_0x8742a7]('voice:outbound');_0x309506[_0x5df5('0x2f')](getAssociatedResources(_0x5df5('0xc'),_0xd2b213[_0x5df5('0x21')],_0x5df5('0x30')));_0x309506[_0x5df5('0x2f')](getAssociatedResources(_0x5df5('0x37'),_0xd2b213[_0x5df5('0x21')],'ChatQueue'));_0x309506[_0x5df5('0x2f')](getAssociatedResources(_0x5df5('0x38'),_0xd2b213['userProfileId'],_0x5df5('0x32')));_0x309506[_0x5df5('0x2f')](getAssociatedResources('SmsQueues',_0xd2b213[_0x5df5('0x21')],_0x5df5('0x33')));_0x309506[_0x5df5('0x2f')](getAssociatedResources(_0x5df5('0xe'),_0xd2b213[_0x5df5('0x21')],_0x5df5('0x39')));_0x309506[_0x5df5('0x2f')](getAssociatedResources(_0x5df5('0xf'),_0xd2b213['userProfileId'],'OpenchannelQueue'));_0x309506[_0x5df5('0x2f')](getAssociatedResources('WhatsappQueues',_0xd2b213[_0x5df5('0x21')],_0x5df5('0x35')));_0x309506['push'](getAssociatedResources(_0x5df5('0x12'),_0xd2b213[_0x5df5('0x21')],_0x5df5('0x5')));_0x309506[_0x5df5('0x2f')](getAssociatedResources(_0x5df5('0x13'),_0xd2b213[_0x5df5('0x21')],_0x5df5('0x3a')));_0x309506[_0x5df5('0x2f')](getAssociatedResources('IvrCampaigns',_0xd2b213[_0x5df5('0x21')],'Campaign'));_0x309506[_0x5df5('0x2f')](db[_0x5df5('0x5')][_0x5df5('0x11')](queryAgents));break;case _0x5df5('0x7'):_0x2e862d[_0x8742a7](_0x5df5('0x2c'));_0x2e862d[_0x8742a7]('voice:outbound');_0x309506[_0x5df5('0x2f')](_0xd2b213[_0x5df5('0x3b')]({'attributes':['id',_0x5df5('0x6')]}));_0x309506['push'](_0xd2b213[_0x5df5('0x3c')]({'attributes':['id',_0x5df5('0x6')]}));_0x309506['push'](_0xd2b213[_0x5df5('0x3d')]({'attributes':['id',_0x5df5('0x6')]}));_0x309506[_0x5df5('0x2f')](_0xd2b213[_0x5df5('0x3e')]({'attributes':['id','name']}));_0x309506[_0x5df5('0x2f')](_0xd2b213[_0x5df5('0x3f')]({'attributes':['id','name']}));_0x309506[_0x5df5('0x2f')](_0xd2b213[_0x5df5('0x40')]({'attributes':['id',_0x5df5('0x6')]}));_0x309506['push'](_0xd2b213[_0x5df5('0x41')]({'attributes':['id',_0x5df5('0x6')]}));break;}return BPromise[_0x5df5('0x42')](_0x309506);}})[_0x5df5('0xa')](function(_0x50bdf0){if(_0x50bdf0&&_0x50bdf0[_0x5df5('0x1d')]){for(var _0xcdf101=0x0;_0xcdf101<_0x50bdf0[_0x5df5('0x1d')];_0xcdf101+=0x1){for(var _0x3bbb73=0x0;_0x3bbb73<_0x50bdf0[_0xcdf101][_0x5df5('0x1d')];_0x3bbb73+=0x1){switch(_0xcdf101){case 0x0:joinOrLeaveQueues(_0x2e862d,_0x8742a7,'voice',_0x50bdf0[_0xcdf101][_0x3bbb73]);break;case 0x1:joinOrLeaveQueues(_0x2e862d,_0x8742a7,'chat',_0x50bdf0[_0xcdf101][_0x3bbb73]);break;case 0x2:joinOrLeaveQueues(_0x2e862d,_0x8742a7,_0x5df5('0x43'),_0x50bdf0[_0xcdf101][_0x3bbb73]);break;case 0x3:joinOrLeaveQueues(_0x2e862d,_0x8742a7,'sms',_0x50bdf0[_0xcdf101][_0x3bbb73]);break;case 0x4:joinOrLeaveQueues(_0x2e862d,_0x8742a7,_0x5df5('0x44'),_0x50bdf0[_0xcdf101][_0x3bbb73]);break;case 0x5:joinOrLeaveQueues(_0x2e862d,_0x8742a7,_0x5df5('0x45'),_0x50bdf0[_0xcdf101][_0x3bbb73]);break;case 0x6:joinOrLeaveQueues(_0x2e862d,_0x8742a7,_0x5df5('0x46'),_0x50bdf0[_0xcdf101][_0x3bbb73]);break;case 0x7:if(_0x5ca542[_0x5df5('0x47')]!=='agent')_0x2e862d[_0x8742a7](util[_0x5df5('0x1b')](_0x5df5('0x48'),_0x50bdf0[_0xcdf101][_0x3bbb73][_0x5df5('0x6')]));break;case 0x8:if(_0x5ca542[_0x5df5('0x47')]!==_0x5df5('0x7'))_0x2e862d[_0x8742a7](util[_0x5df5('0x1b')]('trunk:%s',_0x50bdf0[_0xcdf101][_0x3bbb73][_0x5df5('0x6')]));break;case 0x9:if(_0x5ca542['role']!==_0x5df5('0x7'))_0x2e862d[_0x8742a7](util[_0x5df5('0x1b')](_0x5df5('0x49'),_0x50bdf0[_0xcdf101][_0x3bbb73]['type'],_0x50bdf0[_0xcdf101][_0x3bbb73][_0x5df5('0x6')]));break;case 0xa:_0x2e862d[_0x8742a7](util['format'](_0x5df5('0x1e'),_0x50bdf0[_0xcdf101][_0x3bbb73]['name']));break;}}}}})[_0x5df5('0xa')](function(){if(_0x8742a7===_0x5df5('0x4a')){var _0x34e4cc=_['map'](_0x5ca542[_0x5df5('0x23')],'id');return _0x5ca542[_0x5df5('0x4b')](_0x34e4cc)['then'](function(){for(var _0x429768=0x0;_0x429768<_0x34e4cc[_0x5df5('0x1d')];_0x429768+=0x1){_0x446bba[_0x5df5('0x4c')](_0x5df5('0x4d'),{'ChatInteractionId':Number(_0x34e4cc[_0x429768]),'UserId':Number(_0x5ca542['id'])});}});}})[_0x5df5('0xa')](function(){if(_0x8742a7===_0x5df5('0x4a')){var _0x16fc86=_['map'](_0x5ca542[_0x5df5('0x25')],'id');return _0x5ca542['removeMailInteractions'](_0x16fc86)[_0x5df5('0xa')](function(){for(var _0x24db09=0x0;_0x24db09<_0x16fc86[_0x5df5('0x1d')];_0x24db09+=0x1){_0x446bba[_0x5df5('0x4c')](_0x5df5('0x4e'),{'MailInteractionId':Number(_0x16fc86[_0x24db09]),'UserId':Number(_0x5ca542['id'])});}});}})[_0x5df5('0xa')](function(){if(_0x8742a7===_0x5df5('0x4a')){var _0x23e5ca=_['map'](_0x5ca542[_0x5df5('0x4f')],'id');return _0x5ca542[_0x5df5('0x50')](_0x23e5ca)[_0x5df5('0xa')](function(){for(var _0x134a28=0x0;_0x134a28<_0x23e5ca[_0x5df5('0x1d')];_0x134a28+=0x1){_0x446bba['emit'](_0x5df5('0x51'),{'FaxInteractionId':Number(_0x23e5ca[_0x134a28]),'UserId':Number(_0x5ca542['id'])});}});}})['then'](function(){if(_0x8742a7==='leave'){var _0x3c05b2=_[_0x5df5('0x17')](_0x5ca542[_0x5df5('0x52')],'id');return _0x5ca542[_0x5df5('0x53')](_0x3c05b2)[_0x5df5('0xa')](function(){for(var _0x1da6bf=0x0;_0x1da6bf<_0x3c05b2['length'];_0x1da6bf+=0x1){_0x446bba[_0x5df5('0x4c')](_0x5df5('0x54'),{'SmsInteractionId':Number(_0x3c05b2[_0x1da6bf]),'UserId':Number(_0x5ca542['id'])});}});}})['then'](function(){if(_0x8742a7==='leave'){var _0x7fdce7=_[_0x5df5('0x17')](_0x5ca542[_0x5df5('0x29')],'id');return _0x5ca542[_0x5df5('0x55')](_0x7fdce7)[_0x5df5('0xa')](function(){for(var _0x6d374=0x0;_0x6d374<_0x7fdce7['length'];_0x6d374+=0x1){_0x446bba['emit']('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x7fdce7[_0x6d374]),'UserId':Number(_0x5ca542['id'])});}});}})[_0x5df5('0xa')](function(){if(_0x8742a7===_0x5df5('0x4a')){var _0x57e3ea=_[_0x5df5('0x17')](_0x5ca542[_0x5df5('0x2a')],'id');return _0x5ca542[_0x5df5('0x56')](_0x57e3ea)[_0x5df5('0xa')](function(){for(var _0xe99dfd=0x0;_0xe99dfd<_0x57e3ea[_0x5df5('0x1d')];_0xe99dfd+=0x1){_0x446bba[_0x5df5('0x4c')](_0x5df5('0x57'),{'WhatsappInteractionId':Number(_0x57e3ea[_0xe99dfd]),'UserId':Number(_0x5ca542['id'])});}});}})[_0x5df5('0x58')](function(_0x59ecf7){_0x2e862d[_0x5df5('0x59')](_0x59ecf7);});}}function onDisconnect(_0x10286e,_0x113f9e){joinOrLeave(_0x10286e,_0x5df5('0x4a'),_0x113f9e);}function onConnect(_0x2fc9b4){joinOrLeave(_0x2fc9b4,_0x5df5('0x5a'));}exports[_0x5df5('0x5b')]=function(_0x457fb4){_0x457fb4['on'](_0x5df5('0x5c'),function(_0xf3e0ac){_0xf3e0ac[_0x5df5('0x5d')](0x0);_0xf3e0ac[_0x5df5('0x5e')]=_0xf3e0ac['request'][_0x5df5('0x5c')][_0x5df5('0x5f')]+':'+_0xf3e0ac['request'][_0x5df5('0x5c')][_0x5df5('0x60')];_0xf3e0ac[_0x5df5('0x61')]=new Date();_0xf3e0ac[_0x5df5('0x59')]=function(_0x5137fb){console[_0x5df5('0x59')](_0x5df5('0x62')+_0xf3e0ac['nsp']['name']+'['+_0xf3e0ac[_0x5df5('0x5e')]+']',_0x5137fb);};_0xf3e0ac['on'](_0x5df5('0x63'),function(){onDisconnect(_0xf3e0ac,_0x457fb4);_0xf3e0ac[_0x5df5('0x59')]('DISCONNECTED');});onConnect(_0xf3e0ac);_0xf3e0ac['log'](_0x5df5('0x64'));});};