5a64ee6035a3f0eee11eef3414904c36b06fa7b2
[motion2.git] / server / components / realtime / agents.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 _0xd0fb=['map','findOne','all','flatten','value','getAgentIdsByQueues','includes','getAgentIdsByStatus','resolve','User','mailPause','pauseType','globalStatus','getSortedAgentsIdsByStatus','fields','order','DESC','ASC','getUpdatedSortOptions','internal','substring','sort','fullname','toLowerCase','sortAgentsByStatus','userpic','online','lastLoginAt','lastPauseAt','address','smsPause','chatCapacity','faxCapacity','chatCurrentCapacity','openchannelCurrentCapacity','mailCurrentCapacity','whatsappCurrentCapacity','chatStatusTime','mailStatusTime','smsStatusTime','voiceStatusTime','queue','destconnectedlinenum','screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','routealias','omit','pick','lodash','jayson/promise','../../mysqldb','client','http','chatPause','faxPause','openchannelPause','whatsappPause','filter','length','idle','unknown','unavailable','ringing','isNil','voiceStatus','voicePause','pause','chatStatus','faxStatus','mailStatus','openchannelStatus','smsStatus','whatsappStatus','request','Agents','then','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','catch','getRealtimeAgents','busy','getAgentStatus','isArray','startCase','Queue'];(function(_0x16e63c,_0x562b85){var _0x104a9f=function(_0x36cb31){while(--_0x36cb31){_0x16e63c['push'](_0x16e63c['shift']());}};_0x104a9f(++_0x562b85);}(_0xd0fb,0x8a));var _0xbd0f=function(_0x488a30,_0x182644){_0x488a30=_0x488a30-0x0;var _0x2e0ef5=_0xd0fb[_0x488a30];return _0x2e0ef5;};'use strict';var _=require(_0xbd0f('0x0'));var jayson=require(_0xbd0f('0x1'));var db=require(_0xbd0f('0x2'))['db'];var amiClient=jayson[_0xbd0f('0x3')]['http']({'port':0x232a});var routingClient=jayson[_0xbd0f('0x3')][_0xbd0f('0x4')]({'port':0x232c});function isAgentPaused(_0x51e1fa,_0x3c6034){var _0x27f482=[_0x51e1fa[_0xbd0f('0x5')],_0x51e1fa[_0xbd0f('0x6')],_0x51e1fa['mailPause'],_0x51e1fa[_0xbd0f('0x7')],_0x51e1fa['smsPause'],_0x51e1fa['voicePause'],_0x51e1fa[_0xbd0f('0x8')]];if(!_0x3c6034)return _['every'](_0x27f482);var _0x5472c3=_[_0xbd0f('0x9')](_0x27f482);return _0x5472c3[_0xbd0f('0xa')]>0x0&&_0x5472c3[_0xbd0f('0xa')]<_0x27f482[_0xbd0f('0xa')]?!![]:![];}function isIdle(_0x1b7064){return _0x1b7064===_0xbd0f('0xb')||_0x1b7064===_0xbd0f('0xc')||_0x1b7064===_0xbd0f('0xd')||_0x1b7064===_0xbd0f('0xe')||_[_0xbd0f('0xf')](_0x1b7064);}function isAgentIdle(_0x3eb1c5){if(_0x3eb1c5[_0xbd0f('0x10')]!==_0xbd0f('0xb')&&_0x3eb1c5[_0xbd0f('0x11')]){_0x3eb1c5['voiceStatus']=_0xbd0f('0x12');return![];}return _['every']([_0x3eb1c5[_0xbd0f('0x13')],_0x3eb1c5[_0xbd0f('0x14')],_0x3eb1c5[_0xbd0f('0x15')],_0x3eb1c5[_0xbd0f('0x16')],_0x3eb1c5[_0xbd0f('0x17')],_0x3eb1c5[_0xbd0f('0x10')],_0x3eb1c5[_0xbd0f('0x18')]],isIdle);}function getRealtimeAgents(){return amiClient[_0xbd0f('0x19')](_0xbd0f('0x1a'),{})[_0xbd0f('0x1b')](function(_0x2bbf83){if(_0x2bbf83['error']){throw new Error(_0xbd0f('0x1c'));}var _0xb0c318=_0x2bbf83[_0xbd0f('0x1d')];return routingClient[_0xbd0f('0x19')](_0xbd0f('0x1a'),{})[_0xbd0f('0x1b')](function(_0x5a34ca){if(_0x5a34ca[_0xbd0f('0x1e')]){throw new Error(_0xbd0f('0x1f'));}var _0x1c0211=_0x5a34ca[_0xbd0f('0x1d')];return _[_0xbd0f('0x20')]({},_0xb0c318,_0x1c0211);});})[_0xbd0f('0x21')](function(_0xeab4e){throw _0xeab4e;});}exports[_0xbd0f('0x22')]=getRealtimeAgents;function getAgentStatus(_0x5612f3){var _0x50f694=_0xbd0f('0xc');if(isAgentPaused(_0x5612f3))_0x50f694=_0xbd0f('0x12');else if(isAgentPaused(_0x5612f3,!![]))_0x50f694='*pause';else if(isAgentIdle(_0x5612f3))_0x50f694=_0xbd0f('0xb');else _0x50f694=_0xbd0f('0x23');return _0x50f694;}exports[_0xbd0f('0x24')]=getAgentStatus;function getAgentIdsByQueues(_0x162a08,_0x261da0){var _0x2cefcc=_[_0xbd0f('0x25')](_0x162a08)?_0x162a08:[_0x162a08];var _0x135dab=_[_0xbd0f('0x26')](_0x261da0)+_0xbd0f('0x27');var _0x409d68=_[_0xbd0f('0x28')](_0x2cefcc,function(_0x5e0a12){return db[_0x135dab][_0xbd0f('0x29')]({'where':{'id':_0x5e0a12}})[_0xbd0f('0x1b')](function(_0x14af69){if(!_0x14af69)return[];return _0x14af69['getAgents']({'attributes':['id'],'raw':!![]});});});return Promise[_0xbd0f('0x2a')](_0x409d68)[_0xbd0f('0x1b')](function(_0x1910c2){var _0x2362cd=_(_0x1910c2)[_0xbd0f('0x2b')]()[_0xbd0f('0x28')]('id')['uniq']()[_0xbd0f('0x2c')]();return _0x2362cd;});}exports[_0xbd0f('0x2d')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x4df061,_0x5d2aeb,_0x5b0e86){try{if(_0x5d2aeb[_0xbd0f('0xa')]>0x0){_0x4df061=_0x4df061[_0xbd0f('0x9')](function(_0x3a9c7a){return _0x5d2aeb[_0xbd0f('0x2e')](_0x3a9c7a['id']);});}var _0x3d4968=_0x4df061[_0xbd0f('0x9')](function(_0x21be0c){var _0x3cf8ab=_0xbd0f('0x23');if(isAgentIdle(_0x21be0c)){_0x3cf8ab=_0xbd0f('0xb');}return _0x3cf8ab===_0x5b0e86;});return _['map'](_0x3d4968,'id');}catch(_0xa20d44){throw _0xa20d44;}}exports[_0xbd0f('0x2f')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x39493e,_0xd77c08,_0x1b546f){return Promise[_0xbd0f('0x30')]()[_0xbd0f('0x1b')](function(){if(_0xd77c08[_0xbd0f('0xa')]>0x0){_0x39493e=_0x39493e[_0xbd0f('0x9')](function(_0x3149a1){return _0xd77c08[_0xbd0f('0x2e')](_0x3149a1['id']);});}return _0x39493e;})['then'](function(){return db[_0xbd0f('0x31')]['findAll']({'attributes':['id','name','fullname',_0xbd0f('0x5'),_0xbd0f('0x6'),_0xbd0f('0x32'),_0xbd0f('0x7'),'smsPause',_0xbd0f('0x11'),_0xbd0f('0x8'),_0xbd0f('0x33')],'where':{'id':{'$in':_['map'](_0x39493e,'id')}},'raw':!![]});})[_0xbd0f('0x1b')](function(_0x3b3f7f){return _0x3b3f7f[_0xbd0f('0x28')](function(_0x1e411a){var _0x16636e=_['find'](_0x39493e,['id',_0x1e411a['id']]);var _0x4b9a17=filterAgentAttributes(_0x16636e);_['merge'](_0x1e411a,_0x4b9a17);_0x1e411a[_0xbd0f('0x34')]=getAgentStatus(_0x1e411a);return _0x1e411a;});})[_0xbd0f('0x1b')](function(_0xac02ca){var _0xcd90cc=sortAgentsByStatus(_0xac02ca,_0x1b546f);return _[_0xbd0f('0x28')](_0xcd90cc,'id');})[_0xbd0f('0x21')](function(_0x3afd2b){throw _0x3afd2b;});}exports[_0xbd0f('0x35')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x12f9f3){var _0x4b152f={'fields':[],'order':null};var _0x4ead4c=_0x12f9f3['split'](',');_0x4b152f[_0xbd0f('0x36')]=_['filter'](_0x4ead4c,function(_0x1792cb){if(!_0x1792cb['includes'](_0xbd0f('0x34'))){return!![];}_0x4b152f[_0xbd0f('0x37')]=_['startsWith'](_0x1792cb,'-')?_0xbd0f('0x38'):_0xbd0f('0x39');return![];});return _0x4b152f;}exports[_0xbd0f('0x3a')]=getUpdatedSortOptions;function validateSortParameter(_0x34bad2){if(_0x34bad2[_0xbd0f('0x2e')]('fullname')&&!_0x34bad2[_0xbd0f('0x2e')](_0xbd0f('0x3b'))){var _0x4b8b85=_0x34bad2[_0xbd0f('0x3c')](0x0,_0x34bad2['indexOf']('fullname'));_0x34bad2+=','+_0x4b8b85+_0xbd0f('0x3b');}return _0x34bad2;}exports['validateSortParameter']=validateSortParameter;function sortAgentsByStatus(_0x18e9c6,_0x390f9f){var _0x481002=_0x18e9c6[_0xbd0f('0x3d')](function(_0x385be4,_0x245d27){if(_0x385be4[_0xbd0f('0x34')]===_0x245d27[_0xbd0f('0x34')]){if(_0x385be4['globalStatus']===_0xbd0f('0x12')){if(_0x390f9f===_0xbd0f('0x38')){return(_0x385be4[_0xbd0f('0x33')]||'')<(_0x245d27[_0xbd0f('0x33')]||'')||_0x385be4[_0xbd0f('0x3e')][_0xbd0f('0x3f')]()>_0x245d27['fullname'][_0xbd0f('0x3f')]()?0x1:-0x1;}else{return(_0x385be4['pauseType']||'')<(_0x245d27[_0xbd0f('0x33')]||'')||_0x385be4[_0xbd0f('0x3e')]['toLowerCase']()>_0x245d27[_0xbd0f('0x3e')][_0xbd0f('0x3f')]()?-0x1:0x1;}}else{if(_0x390f9f===_0xbd0f('0x38')){return _0x385be4[_0xbd0f('0x3e')][_0xbd0f('0x3f')]()<_0x245d27['fullname'][_0xbd0f('0x3f')]()?0x1:-0x1;}else{return _0x385be4['fullname'][_0xbd0f('0x3f')]()<_0x245d27[_0xbd0f('0x3e')][_0xbd0f('0x3f')]()?-0x1:0x1;}}}else{if(_0x390f9f===_0xbd0f('0x38')){return _0x385be4['globalStatus']<_0x245d27[_0xbd0f('0x34')]?0x1:-0x1;}else{return _0x385be4[_0xbd0f('0x34')]<_0x245d27[_0xbd0f('0x34')]?-0x1:0x1;}}});return _0x481002;}exports[_0xbd0f('0x40')]=sortAgentsByStatus;function filterAgentAttributes(_0x29de86){var _0x329dd8=[_0xbd0f('0x41'),_0xbd0f('0x42'),_0xbd0f('0x43'),_0xbd0f('0x44'),_0xbd0f('0x33'),_0xbd0f('0x44'),'internal',_0xbd0f('0x45'),_0xbd0f('0x5'),_0xbd0f('0x7'),'mailPause',_0xbd0f('0x46'),_0xbd0f('0x8'),_0xbd0f('0x6'),_0xbd0f('0x11'),_0xbd0f('0x47'),'openchannelCapacity','mailCapacity','smsCapacity','whatsappCapacity',_0xbd0f('0x48'),_0xbd0f('0x49'),_0xbd0f('0x4a'),_0xbd0f('0x4b'),'smsCurrentCapacity',_0xbd0f('0x4c'),'faxCurrentCapacity','chatStatus',_0xbd0f('0x16'),_0xbd0f('0x15'),_0xbd0f('0x17'),_0xbd0f('0x18'),_0xbd0f('0x14'),_0xbd0f('0x10'),_0xbd0f('0x4d'),'openchannelStatusTime',_0xbd0f('0x4e'),_0xbd0f('0x4f'),'whatsappStatusTime','faxStatusTime',_0xbd0f('0x50'),_0xbd0f('0x51'),_0xbd0f('0x52'),_0xbd0f('0x53'),_0xbd0f('0x54'),_0xbd0f('0x55'),_0xbd0f('0x56')];var _0x2ff120=[_0xbd0f('0x5'),_0xbd0f('0x7'),_0xbd0f('0x32'),'smsPause',_0xbd0f('0x8'),_0xbd0f('0x6'),'voicePause',_0xbd0f('0x42')];var _0x5357b5=_(_0x29de86)[_0xbd0f('0x57')](_0x2ff120)[_0xbd0f('0x58')](_0x329dd8)['value']();return _0x5357b5;}exports['filterAgentAttributes']=filterAgentAttributes;