Built motion from commit 97f2f211.|2.6.31
[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 _0xbc95=['internal','indexOf','sort','DESC','toLowerCase','sortAgentsByStatus','userpic','online','lastLoginAt','lastPauseAt','address','mailPause','faxPause','chatCapacity','mailCapacity','smsCapacity','chatCurrentCapacity','openchannelCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','mailStatus','smsStatus','chatStatusTime','openchannelStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','destconnectedlinenum','screenrecording','phoneBarEnableAutomaticScreenRecording','omit','pick','filterAgentAttributes','faxStatusTime','faxCapacity','mailCurrentCapacity','onhold','queue','getRealtimeAgentsQueryFields','lodash','jayson/promise','../../mysqldb','client','http','openchannelPause','voicePause','filter','length','unknown','isNil','voiceStatus','idle','pause','chatStatus','faxStatus','openchannelStatus','whatsappStatus','request','Agents','then','error','result','merge','*pause','getAgentStatus','isArray','startCase','Queue','findOne','all','flatten','map','value','includes','busy','resolve','name','fullname','chatPause','smsPause','whatsappPause','pauseType','find','globalStatus','catch','getSortedAgentsIdsByStatus','split','fields','order','ASC','getUpdatedSortOptions'];(function(_0x9dfc10,_0x19c2d5){var _0x4f938a=function(_0x12b1e5){while(--_0x12b1e5){_0x9dfc10['push'](_0x9dfc10['shift']());}};_0x4f938a(++_0x19c2d5);}(_0xbc95,0x1f4));var _0x5bc9=function(_0x4b2b03,_0xbf34ee){_0x4b2b03=_0x4b2b03-0x0;var _0x1bf0ed=_0xbc95[_0x4b2b03];return _0x1bf0ed;};'use strict';var _=require(_0x5bc9('0x0'));var jayson=require(_0x5bc9('0x1'));var db=require(_0x5bc9('0x2'))['db'];var amiClient=jayson[_0x5bc9('0x3')][_0x5bc9('0x4')]({'port':0x232a});var routingClient=jayson['client']['http']({'port':0x232c});function isAgentPaused(_0x4dba18,_0x38bbec){var _0x191576=[_0x4dba18['chatPause'],_0x4dba18['faxPause'],_0x4dba18['mailPause'],_0x4dba18[_0x5bc9('0x5')],_0x4dba18['smsPause'],_0x4dba18[_0x5bc9('0x6')],_0x4dba18['whatsappPause']];if(!_0x38bbec)return _['every'](_0x191576);var _0x6cc9f1=_[_0x5bc9('0x7')](_0x191576);return _0x6cc9f1[_0x5bc9('0x8')]>0x0&&_0x6cc9f1[_0x5bc9('0x8')]<_0x191576[_0x5bc9('0x8')]?!![]:![];}function isIdle(_0x2caa35){return _0x2caa35==='idle'||_0x2caa35===_0x5bc9('0x9')||_0x2caa35==='unavailable'||_0x2caa35==='ringing'||_[_0x5bc9('0xa')](_0x2caa35);}function isAgentIdle(_0x5c6238){if(_0x5c6238[_0x5bc9('0xb')]!==_0x5bc9('0xc')&&_0x5c6238[_0x5bc9('0x6')]){_0x5c6238[_0x5bc9('0xb')]=_0x5bc9('0xd');return![];}return _['every']([_0x5c6238[_0x5bc9('0xe')],_0x5c6238[_0x5bc9('0xf')],_0x5c6238['mailStatus'],_0x5c6238[_0x5bc9('0x10')],_0x5c6238['smsStatus'],_0x5c6238['voiceStatus'],_0x5c6238[_0x5bc9('0x11')]],isIdle);}function getRealtimeAgents(){return amiClient[_0x5bc9('0x12')](_0x5bc9('0x13'),{})[_0x5bc9('0x14')](function(_0x443185){if(_0x443185[_0x5bc9('0x15')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');}var _0x49e2a2=_0x443185[_0x5bc9('0x16')];return routingClient[_0x5bc9('0x12')]('Agents',{})[_0x5bc9('0x14')](function(_0x46963b){if(_0x46963b[_0x5bc9('0x15')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');}var _0x3bcb4e=_0x46963b[_0x5bc9('0x16')];return _[_0x5bc9('0x17')]({},_0x49e2a2,_0x3bcb4e);});})['catch'](function(_0x1bd407){throw _0x1bd407;});}exports['getRealtimeAgents']=getRealtimeAgents;function getAgentStatus(_0x102ab2){var _0x471d9c=_0x5bc9('0x9');if(isAgentPaused(_0x102ab2))_0x471d9c=_0x5bc9('0xd');else if(isAgentPaused(_0x102ab2,!![]))_0x471d9c=_0x5bc9('0x18');else if(isAgentIdle(_0x102ab2))_0x471d9c='idle';else _0x471d9c='busy';return _0x471d9c;}exports[_0x5bc9('0x19')]=getAgentStatus;function getAgentIdsByQueues(_0x45acb8,_0x44827d){var _0x4433ab=_[_0x5bc9('0x1a')](_0x45acb8)?_0x45acb8:[_0x45acb8];var _0x171284=_[_0x5bc9('0x1b')](_0x44827d)+_0x5bc9('0x1c');var _0x12a750=_['map'](_0x4433ab,function(_0x1add71){return db[_0x171284][_0x5bc9('0x1d')]({'where':{'id':_0x1add71}})[_0x5bc9('0x14')](function(_0x19c42a){if(!_0x19c42a)return[];return _0x19c42a['getAgents']({'attributes':['id'],'raw':!![]});});});return Promise[_0x5bc9('0x1e')](_0x12a750)['then'](function(_0x358ae1){var _0x2a8f25=_(_0x358ae1)[_0x5bc9('0x1f')]()[_0x5bc9('0x20')]('id')['uniq']()[_0x5bc9('0x21')]();return _0x2a8f25;});}exports['getAgentIdsByQueues']=getAgentIdsByQueues;function getAgentIdsByStatus(_0x4cb942,_0x1b64c4,_0x5124db){try{if(_0x1b64c4[_0x5bc9('0x8')]>0x0){_0x4cb942=_0x4cb942['filter'](function(_0x5e16a9){return _0x1b64c4[_0x5bc9('0x22')](_0x5e16a9['id']);});}var _0x3982e4=_0x4cb942[_0x5bc9('0x7')](function(_0x172ef2){var _0x2ff10a=_0x5bc9('0x23');if(isAgentIdle(_0x172ef2)){_0x2ff10a='idle';}return _0x2ff10a===_0x5124db;});return _['map'](_0x3982e4,'id');}catch(_0x5c41df){throw _0x5c41df;}}exports['getAgentIdsByStatus']=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x4003ca,_0xefa097,_0x114c22){return Promise[_0x5bc9('0x24')]()[_0x5bc9('0x14')](function(){if(_0xefa097[_0x5bc9('0x8')]>0x0){_0x4003ca=_0x4003ca[_0x5bc9('0x7')](function(_0x3ba7a6){return _0xefa097['includes'](_0x3ba7a6['id']);});}return _0x4003ca;})[_0x5bc9('0x14')](function(){return db['User']['findAll']({'attributes':['id',_0x5bc9('0x25'),_0x5bc9('0x26'),_0x5bc9('0x27'),'faxPause','mailPause','openchannelPause',_0x5bc9('0x28'),_0x5bc9('0x6'),_0x5bc9('0x29'),_0x5bc9('0x2a')],'where':{'id':{'$in':_[_0x5bc9('0x20')](_0x4003ca,'id')}},'raw':!![]});})[_0x5bc9('0x14')](function(_0xbd840f){return _0xbd840f[_0x5bc9('0x20')](function(_0x4fda67){var _0x307c11=_[_0x5bc9('0x2b')](_0x4003ca,['id',_0x4fda67['id']]);var _0x234717=filterAgentAttributes(_0x307c11);_[_0x5bc9('0x17')](_0x4fda67,_0x234717);_0x4fda67[_0x5bc9('0x2c')]=getAgentStatus(_0x4fda67);return _0x4fda67;});})[_0x5bc9('0x14')](function(_0x2f7d19){var _0x54d724=sortAgentsByStatus(_0x2f7d19,_0x114c22);return _['map'](_0x54d724,'id');})[_0x5bc9('0x2d')](function(_0x19e2eb){throw _0x19e2eb;});}exports[_0x5bc9('0x2e')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x4570d5){var _0x36b3df={'fields':[],'order':null};var _0x3ac3db=_0x4570d5[_0x5bc9('0x2f')](',');_0x36b3df[_0x5bc9('0x30')]=_[_0x5bc9('0x7')](_0x3ac3db,function(_0x549813){if(!_0x549813[_0x5bc9('0x22')](_0x5bc9('0x2c'))){return!![];}_0x36b3df[_0x5bc9('0x31')]=_['startsWith'](_0x549813,'-')?'DESC':_0x5bc9('0x32');return![];});return _0x36b3df;}exports[_0x5bc9('0x33')]=getUpdatedSortOptions;function validateSortParameter(_0x184493){if(!_0x184493){_0x184493='fullname,internal';}if(_0x184493['includes'](_0x5bc9('0x26'))&&!_0x184493['includes'](_0x5bc9('0x34'))){var _0x445d3a=_0x184493['substring'](0x0,_0x184493[_0x5bc9('0x35')](_0x5bc9('0x26')));_0x184493+=','+_0x445d3a+'internal';}return _0x184493;}exports['validateSortParameter']=validateSortParameter;function sortAgentsByStatus(_0x4b0610,_0x3d038a){var _0xc6ce70=_0x4b0610[_0x5bc9('0x36')](function(_0x1f692f,_0x222447){if(_0x1f692f[_0x5bc9('0x2c')]===_0x222447['globalStatus']){if(_0x1f692f[_0x5bc9('0x2c')]==='pause'){if(_0x3d038a===_0x5bc9('0x37')){return(_0x1f692f['pauseType']||'')<(_0x222447[_0x5bc9('0x2a')]||'')||_0x1f692f['fullname']['toLowerCase']()>_0x222447[_0x5bc9('0x26')]['toLowerCase']()?0x1:-0x1;}else{return(_0x1f692f[_0x5bc9('0x2a')]||'')<(_0x222447[_0x5bc9('0x2a')]||'')||_0x1f692f['fullname'][_0x5bc9('0x38')]()>_0x222447[_0x5bc9('0x26')]['toLowerCase']()?-0x1:0x1;}}else{if(_0x3d038a===_0x5bc9('0x37')){return _0x1f692f[_0x5bc9('0x26')]['toLowerCase']()<_0x222447[_0x5bc9('0x26')][_0x5bc9('0x38')]()?0x1:-0x1;}else{return _0x1f692f[_0x5bc9('0x26')][_0x5bc9('0x38')]()<_0x222447[_0x5bc9('0x26')][_0x5bc9('0x38')]()?-0x1:0x1;}}}else{if(_0x3d038a===_0x5bc9('0x37')){return _0x1f692f[_0x5bc9('0x2c')]<_0x222447['globalStatus']?0x1:-0x1;}else{return _0x1f692f[_0x5bc9('0x2c')]<_0x222447[_0x5bc9('0x2c')]?-0x1:0x1;}}});return _0xc6ce70;}exports[_0x5bc9('0x39')]=sortAgentsByStatus;function filterAgentAttributes(_0x1c3b4a){var _0x168a50=[_0x5bc9('0x3a'),_0x5bc9('0x3b'),_0x5bc9('0x3c'),_0x5bc9('0x3d'),_0x5bc9('0x2a'),_0x5bc9('0x3d'),_0x5bc9('0x34'),_0x5bc9('0x3e'),_0x5bc9('0x27'),'openchannelPause',_0x5bc9('0x3f'),_0x5bc9('0x28'),_0x5bc9('0x29'),_0x5bc9('0x40'),_0x5bc9('0x6'),_0x5bc9('0x41'),'openchannelCapacity',_0x5bc9('0x42'),_0x5bc9('0x43'),'whatsappCapacity','faxCapacity',_0x5bc9('0x44'),_0x5bc9('0x45'),'mailCurrentCapacity',_0x5bc9('0x46'),_0x5bc9('0x47'),_0x5bc9('0x48'),_0x5bc9('0xe'),_0x5bc9('0x10'),_0x5bc9('0x49'),_0x5bc9('0x4a'),'whatsappStatus','faxStatus',_0x5bc9('0xb'),_0x5bc9('0x4b'),_0x5bc9('0x4c'),_0x5bc9('0x4d'),_0x5bc9('0x4e'),_0x5bc9('0x4f'),'faxStatusTime','voiceStatusTime','queue',_0x5bc9('0x50'),_0x5bc9('0x51'),'phoneBarEnableScreenRecordingByAgent',_0x5bc9('0x52')];var _0x2636fc=[_0x5bc9('0x27'),_0x5bc9('0x5'),_0x5bc9('0x3f'),_0x5bc9('0x28'),_0x5bc9('0x29'),_0x5bc9('0x40'),_0x5bc9('0x6'),_0x5bc9('0x3b')];var _0x4697d6=_(_0x1c3b4a)[_0x5bc9('0x53')](_0x2636fc)[_0x5bc9('0x54')](_0x168a50)['value']();return _0x4697d6;}exports[_0x5bc9('0x55')]=filterAgentAttributes;function getRealtimeAgentsQueryFields(){return['id','name','fullname','role',_0x5bc9('0x34'),'online',_0x5bc9('0x2c'),_0x5bc9('0x3a'),_0x5bc9('0x3c'),_0x5bc9('0x2a'),_0x5bc9('0x3d'),_0x5bc9('0x40'),'chatPause',_0x5bc9('0x3f'),_0x5bc9('0x5'),_0x5bc9('0x28'),_0x5bc9('0x6'),_0x5bc9('0x29'),_0x5bc9('0xe'),_0x5bc9('0xf'),_0x5bc9('0x49'),_0x5bc9('0x10'),_0x5bc9('0x4a'),_0x5bc9('0xb'),_0x5bc9('0x11'),_0x5bc9('0x4b'),_0x5bc9('0x56'),_0x5bc9('0x4d'),_0x5bc9('0x4c'),_0x5bc9('0x4e'),'voiceStatusTime','whatsappStatusTime',_0x5bc9('0x41'),_0x5bc9('0x57'),_0x5bc9('0x42'),'openchannelCapacity',_0x5bc9('0x43'),'whatsappCapacity','chatCurrentCapacity','faxCurrentCapacity',_0x5bc9('0x58'),_0x5bc9('0x45'),_0x5bc9('0x46'),_0x5bc9('0x47'),'phoneBarEnableScreenRecordingByAgent',_0x5bc9('0x52'),'destconnectedlinenum',_0x5bc9('0x59'),_0x5bc9('0x5a'),'screenrecording'];}exports[_0x5bc9('0x5b')]=getRealtimeAgentsQueryFields;