Built motion from commit 0bd120ac.|2.6.25
[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 _0x3dd7=['voice','fax','mail','openchannel','whatsapp','trunk:%s','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','user_has_openchannel_interactions:remove','WhatsappInteractions','user_has_whatsapp_interactions:remove','catch','join','default','connection','setMaxListeners','address','request','remoteAddress','remotePort','connectedAt','log','disconnect','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','name','Agents','User','role','agent','type','ivr','UserProfileSection','findOne','VoiceQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','resourceId','then','map','where','telephone','Campaign','format','%s:queue:%s','length','user:%s','handshake','query','find','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','admin','voice:outbound','hasOwnProperty','include','push','FaxQueue','MailQueue','WhatsappQueue','Trunk','user','voice:inbound','userProfileId','VoiceQueue','ChatQueues','ChatQueue','SmsQueue','OpenchannelQueue','IvrCampaigns','getVoiceQueues','getChatQueues','getMailQueues','getOpenchannelQueues','all'];(function(_0x1cc5c8,_0x46d402){var _0x36fd1b=function(_0x4cf8a3){while(--_0x4cf8a3){_0x1cc5c8['push'](_0x1cc5c8['shift']());}};_0x36fd1b(++_0x46d402);}(_0x3dd7,0xe9));var _0x73dd=function(_0x593eca,_0x5733e7){_0x593eca=_0x593eca-0x0;var _0x5aa415=_0x3dd7[_0x593eca];return _0x5aa415;};'use strict';var _=require(_0x73dd('0x0'));var util=require(_0x73dd('0x1'));var BPromise=require(_0x73dd('0x2'));var db=require(_0x73dd('0x3'))['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0x73dd('0x4')],'include':[{'as':_0x73dd('0x5'),'model':db[_0x73dd('0x6')],'attributes':['id','name',_0x73dd('0x7')],'raw':!![],'where':{'role':_0x73dd('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x73dd('0x4')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0x73dd('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0x73dd('0x4')],'where':{'role':_0x73dd('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x73dd('0x4'),_0x73dd('0x9')],'where':{'type':_0x73dd('0xa')}};function getAssociatedResources(_0x1d0ba5,_0x36640a,_0x35266a){return db[_0x73dd('0xb')][_0x73dd('0xc')]({'where':{'name':_0x1d0ba5,'userProfileId':_0x36640a},'raw':!![]})['then'](function(_0x28af02){if(_0x28af02){if(_0x28af02['autoAssociation']){switch(_0x1d0ba5){case _0x73dd('0xd'):case'ChatQueues':case _0x73dd('0xe'):case _0x73dd('0xf'):case _0x73dd('0x10'):case _0x73dd('0x11'):case _0x73dd('0x12'):return db[_0x35266a][_0x73dd('0x13')](queryQueues);case _0x73dd('0x14'):return db[_0x35266a][_0x73dd('0x13')](queryTelephones);case'Trunks':return db[_0x35266a]['findAll'](queryTrunks);case'IvrCampaigns':return db[_0x35266a][_0x73dd('0x13')](queryCampaigns);}}else{return db['UserProfileResource'][_0x73dd('0x13')]({'attributes':[_0x73dd('0x15')],'where':{'sectionId':_0x28af02['id']},'raw':!![]})[_0x73dd('0x16')](function(_0x57e806){if(_0x57e806){var _0x457401={'where':{'id':_[_0x73dd('0x17')](_0x57e806,_0x73dd('0x15'))},'raw':!![]};switch(_0x35266a){case _0x73dd('0x6'):_0x457401[_0x73dd('0x18')][_0x73dd('0x7')]=_0x73dd('0x19');break;case _0x73dd('0x1a'):_0x457401[_0x73dd('0x18')][_0x73dd('0x9')]=_0x73dd('0xa');break;}return db[_0x35266a]['findAll'](_0x457401);}else{return[];}});}}else{return[];}})['then'](function(_0x2e3675){return _0x2e3675;});}function joinOrLeaveQueues(_0x561b8c,_0xc1c57,_0x5d31dd,_0x2752df){_0x561b8c[_0xc1c57](util[_0x73dd('0x1b')](_0x73dd('0x1c'),_0x5d31dd,_0x2752df[_0x73dd('0x4')]));if(_0x2752df[_0x73dd('0x5')]){for(var _0x19140a=0x0;_0x19140a<_0x2752df[_0x73dd('0x5')][_0x73dd('0x1d')];_0x19140a+=0x1){_0x561b8c[_0xc1c57](util[_0x73dd('0x1b')](_0x73dd('0x1e'),_0x2752df[_0x73dd('0x5')][_0x19140a][_0x73dd('0x4')]));}}}function joinOrLeave(_0x90b8bb,_0x4af3ec,_0x14dbce){var _0x1657ca;if(_0x90b8bb[_0x73dd('0x1f')][_0x73dd('0x20')]['id']){db[_0x73dd('0x6')][_0x73dd('0x21')]({'attributes':['id',_0x73dd('0x4'),_0x73dd('0x7'),'userProfileId'],'where':{'id':_0x90b8bb[_0x73dd('0x1f')][_0x73dd('0x20')]['id']},'include':[{'model':db[_0x73dd('0x22')],'as':_0x73dd('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x73dd('0x24')],'as':_0x73dd('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x73dd('0x26')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x73dd('0x27')],'as':_0x73dd('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0x73dd('0x29')],'as':_0x73dd('0x2a'),'attributes':['id'],'raw':!![]},{'model':db[_0x73dd('0x2b')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0x73dd('0x16')](function(_0x34a7fb){if(_0x34a7fb){_0x1657ca=_0x34a7fb;_0x90b8bb[_0x4af3ec](util['format']('user:%s',_0x34a7fb[_0x73dd('0x4')]));var _0x838030=[];switch(_0x34a7fb[_0x73dd('0x7')]){case _0x73dd('0x2c'):_0x90b8bb[_0x4af3ec]('voice:inbound');_0x90b8bb[_0x4af3ec](_0x73dd('0x2d'));if(queryQueues[_0x73dd('0x2e')](_0x73dd('0x2f'))){delete queryQueues['include'];}_0x838030[_0x73dd('0x30')](db['VoiceQueue'][_0x73dd('0x13')](queryQueues));_0x838030[_0x73dd('0x30')](db['ChatQueue'][_0x73dd('0x13')](queryQueues));_0x838030[_0x73dd('0x30')](db[_0x73dd('0x31')][_0x73dd('0x13')](queryQueues));_0x838030[_0x73dd('0x30')](db['SmsQueue']['findAll'](queryQueues));_0x838030[_0x73dd('0x30')](db[_0x73dd('0x32')]['findAll'](queryQueues));_0x838030[_0x73dd('0x30')](db['OpenchannelQueue'][_0x73dd('0x13')](queryQueues));_0x838030[_0x73dd('0x30')](db[_0x73dd('0x33')]['findAll'](queryQueues));_0x838030[_0x73dd('0x30')](db['User'][_0x73dd('0x13')](queryTelephones));_0x838030['push'](db[_0x73dd('0x34')][_0x73dd('0x13')](queryTrunks));_0x838030[_0x73dd('0x30')](db[_0x73dd('0x1a')]['findAll'](queryCampaigns));_0x838030['push'](db[_0x73dd('0x6')]['findAll'](queryAgents));break;case _0x73dd('0x35'):_0x90b8bb[_0x4af3ec](_0x73dd('0x36'));_0x90b8bb[_0x4af3ec]('voice:outbound');_0x838030[_0x73dd('0x30')](getAssociatedResources(_0x73dd('0xd'),_0x34a7fb[_0x73dd('0x37')],_0x73dd('0x38')));_0x838030['push'](getAssociatedResources(_0x73dd('0x39'),_0x34a7fb[_0x73dd('0x37')],_0x73dd('0x3a')));_0x838030[_0x73dd('0x30')](getAssociatedResources(_0x73dd('0xe'),_0x34a7fb[_0x73dd('0x37')],'FaxQueue'));_0x838030['push'](getAssociatedResources(_0x73dd('0xf'),_0x34a7fb[_0x73dd('0x37')],_0x73dd('0x3b')));_0x838030['push'](getAssociatedResources(_0x73dd('0x10'),_0x34a7fb[_0x73dd('0x37')],_0x73dd('0x32')));_0x838030[_0x73dd('0x30')](getAssociatedResources(_0x73dd('0x11'),_0x34a7fb[_0x73dd('0x37')],_0x73dd('0x3c')));_0x838030[_0x73dd('0x30')](getAssociatedResources('WhatsappQueues',_0x34a7fb['userProfileId'],_0x73dd('0x33')));_0x838030['push'](getAssociatedResources(_0x73dd('0x14'),_0x34a7fb[_0x73dd('0x37')],'User'));_0x838030[_0x73dd('0x30')](getAssociatedResources('Trunks',_0x34a7fb[_0x73dd('0x37')],_0x73dd('0x34')));_0x838030[_0x73dd('0x30')](getAssociatedResources(_0x73dd('0x3d'),_0x34a7fb[_0x73dd('0x37')],_0x73dd('0x1a')));_0x838030[_0x73dd('0x30')](db[_0x73dd('0x6')][_0x73dd('0x13')](queryAgents));break;case'agent':_0x90b8bb[_0x4af3ec](_0x73dd('0x36'));_0x90b8bb[_0x4af3ec](_0x73dd('0x2d'));_0x838030[_0x73dd('0x30')](_0x34a7fb[_0x73dd('0x3e')]({'attributes':['id',_0x73dd('0x4')]}));_0x838030['push'](_0x34a7fb[_0x73dd('0x3f')]({'attributes':['id',_0x73dd('0x4')]}));_0x838030[_0x73dd('0x30')](_0x34a7fb['getFaxQueues']({'attributes':['id',_0x73dd('0x4')]}));_0x838030[_0x73dd('0x30')](_0x34a7fb['getSmsQueues']({'attributes':['id',_0x73dd('0x4')]}));_0x838030[_0x73dd('0x30')](_0x34a7fb[_0x73dd('0x40')]({'attributes':['id',_0x73dd('0x4')]}));_0x838030['push'](_0x34a7fb[_0x73dd('0x41')]({'attributes':['id',_0x73dd('0x4')]}));_0x838030['push'](_0x34a7fb['getWhatsappQueues']({'attributes':['id','name']}));break;}return BPromise[_0x73dd('0x42')](_0x838030);}})['then'](function(_0xbd46f1){if(_0xbd46f1&&_0xbd46f1[_0x73dd('0x1d')]){for(var _0x12ab01=0x0;_0x12ab01<_0xbd46f1[_0x73dd('0x1d')];_0x12ab01+=0x1){for(var _0x2ff5ec=0x0;_0x2ff5ec<_0xbd46f1[_0x12ab01]['length'];_0x2ff5ec+=0x1){switch(_0x12ab01){case 0x0:joinOrLeaveQueues(_0x90b8bb,_0x4af3ec,_0x73dd('0x43'),_0xbd46f1[_0x12ab01][_0x2ff5ec]);break;case 0x1:joinOrLeaveQueues(_0x90b8bb,_0x4af3ec,'chat',_0xbd46f1[_0x12ab01][_0x2ff5ec]);break;case 0x2:joinOrLeaveQueues(_0x90b8bb,_0x4af3ec,_0x73dd('0x44'),_0xbd46f1[_0x12ab01][_0x2ff5ec]);break;case 0x3:joinOrLeaveQueues(_0x90b8bb,_0x4af3ec,'sms',_0xbd46f1[_0x12ab01][_0x2ff5ec]);break;case 0x4:joinOrLeaveQueues(_0x90b8bb,_0x4af3ec,_0x73dd('0x45'),_0xbd46f1[_0x12ab01][_0x2ff5ec]);break;case 0x5:joinOrLeaveQueues(_0x90b8bb,_0x4af3ec,_0x73dd('0x46'),_0xbd46f1[_0x12ab01][_0x2ff5ec]);break;case 0x6:joinOrLeaveQueues(_0x90b8bb,_0x4af3ec,_0x73dd('0x47'),_0xbd46f1[_0x12ab01][_0x2ff5ec]);break;case 0x7:if(_0x1657ca[_0x73dd('0x7')]!==_0x73dd('0x8'))_0x90b8bb[_0x4af3ec](util[_0x73dd('0x1b')]('telephone:%s',_0xbd46f1[_0x12ab01][_0x2ff5ec][_0x73dd('0x4')]));break;case 0x8:if(_0x1657ca['role']!==_0x73dd('0x8'))_0x90b8bb[_0x4af3ec](util[_0x73dd('0x1b')](_0x73dd('0x48'),_0xbd46f1[_0x12ab01][_0x2ff5ec][_0x73dd('0x4')]));break;case 0x9:if(_0x1657ca['role']!==_0x73dd('0x8'))_0x90b8bb[_0x4af3ec](util['format']('campaign:%s:%s',_0xbd46f1[_0x12ab01][_0x2ff5ec]['type'],_0xbd46f1[_0x12ab01][_0x2ff5ec]['name']));break;case 0xa:_0x90b8bb[_0x4af3ec](util[_0x73dd('0x1b')](_0x73dd('0x1e'),_0xbd46f1[_0x12ab01][_0x2ff5ec][_0x73dd('0x4')]));break;}}}}})['then'](function(){if(_0x4af3ec==='leave'){var _0x3c53e2=_['map'](_0x1657ca[_0x73dd('0x23')],'id');return _0x1657ca['removeChatInteractions'](_0x3c53e2)[_0x73dd('0x16')](function(){for(var _0x5be5a1=0x0;_0x5be5a1<_0x3c53e2[_0x73dd('0x1d')];_0x5be5a1+=0x1){_0x14dbce[_0x73dd('0x49')](_0x73dd('0x4a'),{'ChatInteractionId':Number(_0x3c53e2[_0x5be5a1]),'UserId':Number(_0x1657ca['id'])});}});}})[_0x73dd('0x16')](function(){if(_0x4af3ec===_0x73dd('0x4b')){var _0x1addd=_[_0x73dd('0x17')](_0x1657ca[_0x73dd('0x25')],'id');return _0x1657ca[_0x73dd('0x4c')](_0x1addd)[_0x73dd('0x16')](function(){for(var _0x94ce17=0x0;_0x94ce17<_0x1addd[_0x73dd('0x1d')];_0x94ce17+=0x1){_0x14dbce[_0x73dd('0x49')](_0x73dd('0x4d'),{'MailInteractionId':Number(_0x1addd[_0x94ce17]),'UserId':Number(_0x1657ca['id'])});}});}})[_0x73dd('0x16')](function(){if(_0x4af3ec===_0x73dd('0x4b')){var _0xa8792e=_[_0x73dd('0x17')](_0x1657ca[_0x73dd('0x4e')],'id');return _0x1657ca[_0x73dd('0x4f')](_0xa8792e)[_0x73dd('0x16')](function(){for(var _0x202aa4=0x0;_0x202aa4<_0xa8792e[_0x73dd('0x1d')];_0x202aa4+=0x1){_0x14dbce[_0x73dd('0x49')](_0x73dd('0x50'),{'FaxInteractionId':Number(_0xa8792e[_0x202aa4]),'UserId':Number(_0x1657ca['id'])});}});}})[_0x73dd('0x16')](function(){if(_0x4af3ec==='leave'){var _0x5b30ad=_[_0x73dd('0x17')](_0x1657ca[_0x73dd('0x28')],'id');return _0x1657ca[_0x73dd('0x51')](_0x5b30ad)['then'](function(){for(var _0x1d9d86=0x0;_0x1d9d86<_0x5b30ad[_0x73dd('0x1d')];_0x1d9d86+=0x1){_0x14dbce[_0x73dd('0x49')](_0x73dd('0x52'),{'SmsInteractionId':Number(_0x5b30ad[_0x1d9d86]),'UserId':Number(_0x1657ca['id'])});}});}})[_0x73dd('0x16')](function(){if(_0x4af3ec===_0x73dd('0x4b')){var _0x4f553b=_[_0x73dd('0x17')](_0x1657ca[_0x73dd('0x2a')],'id');return _0x1657ca['removeOpenchannelInteractions'](_0x4f553b)[_0x73dd('0x16')](function(){for(var _0x1488ea=0x0;_0x1488ea<_0x4f553b[_0x73dd('0x1d')];_0x1488ea+=0x1){_0x14dbce['emit'](_0x73dd('0x53'),{'OpenchannelInteractionId':Number(_0x4f553b[_0x1488ea]),'UserId':Number(_0x1657ca['id'])});}});}})[_0x73dd('0x16')](function(){if(_0x4af3ec===_0x73dd('0x4b')){var _0x55887e=_[_0x73dd('0x17')](_0x1657ca[_0x73dd('0x54')],'id');return _0x1657ca['removeWhatsappInteractions'](_0x55887e)[_0x73dd('0x16')](function(){for(var _0x1dffea=0x0;_0x1dffea<_0x55887e[_0x73dd('0x1d')];_0x1dffea+=0x1){_0x14dbce['emit'](_0x73dd('0x55'),{'WhatsappInteractionId':Number(_0x55887e[_0x1dffea]),'UserId':Number(_0x1657ca['id'])});}});}})[_0x73dd('0x56')](function(_0x3741a0){_0x90b8bb['log'](_0x3741a0);});}}function onDisconnect(_0x36c316,_0x53b1da){joinOrLeave(_0x36c316,_0x73dd('0x4b'),_0x53b1da);}function onConnect(_0x8c5ca9){joinOrLeave(_0x8c5ca9,_0x73dd('0x57'));}exports[_0x73dd('0x58')]=function(_0x32c3f4){_0x32c3f4['on'](_0x73dd('0x59'),function(_0x1ba813){_0x1ba813[_0x73dd('0x5a')](0x0);_0x1ba813[_0x73dd('0x5b')]=_0x1ba813[_0x73dd('0x5c')][_0x73dd('0x59')][_0x73dd('0x5d')]+':'+_0x1ba813[_0x73dd('0x5c')][_0x73dd('0x59')][_0x73dd('0x5e')];_0x1ba813[_0x73dd('0x5f')]=new Date();_0x1ba813[_0x73dd('0x60')]=function(_0x50d28b){console[_0x73dd('0x60')]('SocketIO\x20'+_0x1ba813['nsp'][_0x73dd('0x4')]+'['+_0x1ba813['address']+']',_0x50d28b);};_0x1ba813['on'](_0x73dd('0x61'),function(){onDisconnect(_0x1ba813,_0x32c3f4);_0x1ba813[_0x73dd('0x60')](_0x73dd('0x62'));});onConnect(_0x1ba813);_0x1ba813[_0x73dd('0x60')](_0x73dd('0x63'));});};