Built motion from commit 3c2ce842.|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 _0xad9f=['whatsappCurrentCapacity','openchannelStatus','openchannelStatusTime','mailStatusTime','smsStatusTime','faxStatusTime','queue','screenrecording','phoneBarEnableAutomaticScreenRecording','omit','pick','name','role','lastLoginAt','chatStatusTime','voiceStatusTime','whatsappStatusTime','chatCapacity','smsCapacity','whatsappCapacity','faxCurrentCapacity','smsCurrentCapacity','phoneBarEnableScreenRecordingByAgent','destconnectedlinenum','onhold','getRealtimeAgentsQueryFields','lodash','jayson/promise','../../mysqldb','http','client','faxPause','mailPause','openchannelPause','smsPause','voicePause','whatsappPause','filter','length','idle','unknown','unavailable','isNil','voiceStatus','pause','every','chatStatus','faxStatus','mailStatus','smsStatus','whatsappStatus','request','Agents','then','error','result','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','catch','getRealtimeAgents','*pause','busy','getAgentStatus','isArray','startCase','Queue','map','findOne','getAgents','all','flatten','uniq','value','includes','getAgentIdsByStatus','resolve','User','fullname','pauseType','getSortedAgentsIdsByStatus','split','fields','globalStatus','order','startsWith','ASC','getUpdatedSortOptions','fullname,internal','substring','indexOf','internal','sort','DESC','toLowerCase','sortAgentsByStatus','userpic','online','lastPauseAt','address','chatPause','openchannelCapacity','mailCapacity','faxCapacity','openchannelCurrentCapacity','mailCurrentCapacity'];(function(_0x28f922,_0x1302f8){var _0x4eceac=function(_0x2ce5a0){while(--_0x2ce5a0){_0x28f922['push'](_0x28f922['shift']());}};_0x4eceac(++_0x1302f8);}(_0xad9f,0x1be));var _0xfad9=function(_0x277a27,_0x5e83ee){_0x277a27=_0x277a27-0x0;var _0x3f5a24=_0xad9f[_0x277a27];return _0x3f5a24;};'use strict';var _=require(_0xfad9('0x0'));var jayson=require(_0xfad9('0x1'));var db=require(_0xfad9('0x2'))['db'];var amiClient=jayson['client'][_0xfad9('0x3')]({'port':0x232a});var routingClient=jayson[_0xfad9('0x4')][_0xfad9('0x3')]({'port':0x232c});function isAgentPaused(_0x1a9d9b,_0x596189){var _0x39910f=[_0x1a9d9b['chatPause'],_0x1a9d9b[_0xfad9('0x5')],_0x1a9d9b[_0xfad9('0x6')],_0x1a9d9b[_0xfad9('0x7')],_0x1a9d9b[_0xfad9('0x8')],_0x1a9d9b[_0xfad9('0x9')],_0x1a9d9b[_0xfad9('0xa')]];if(!_0x596189)return _['every'](_0x39910f);var _0x5580be=_[_0xfad9('0xb')](_0x39910f);return _0x5580be[_0xfad9('0xc')]>0x0&&_0x5580be[_0xfad9('0xc')]<_0x39910f[_0xfad9('0xc')]?!![]:![];}function isIdle(_0x22dca1){return _0x22dca1===_0xfad9('0xd')||_0x22dca1===_0xfad9('0xe')||_0x22dca1===_0xfad9('0xf')||_0x22dca1==='ringing'||_[_0xfad9('0x10')](_0x22dca1);}function isAgentIdle(_0x2da607){if(_0x2da607[_0xfad9('0x11')]!==_0xfad9('0xd')&&_0x2da607[_0xfad9('0x9')]){_0x2da607[_0xfad9('0x11')]=_0xfad9('0x12');return![];}return _[_0xfad9('0x13')]([_0x2da607[_0xfad9('0x14')],_0x2da607[_0xfad9('0x15')],_0x2da607[_0xfad9('0x16')],_0x2da607['openchannelStatus'],_0x2da607[_0xfad9('0x17')],_0x2da607[_0xfad9('0x11')],_0x2da607[_0xfad9('0x18')]],isIdle);}function getRealtimeAgents(){return amiClient[_0xfad9('0x19')](_0xfad9('0x1a'),{})[_0xfad9('0x1b')](function(_0x567e45){if(_0x567e45[_0xfad9('0x1c')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');}var _0x1f6808=_0x567e45[_0xfad9('0x1d')];return routingClient['request']('Agents',{})[_0xfad9('0x1b')](function(_0x18e48a){if(_0x18e48a[_0xfad9('0x1c')]){throw new Error(_0xfad9('0x1e'));}var _0x2843ce=_0x18e48a[_0xfad9('0x1d')];return _[_0xfad9('0x1f')]({},_0x1f6808,_0x2843ce);});})[_0xfad9('0x20')](function(_0x97cc3a){throw _0x97cc3a;});}exports[_0xfad9('0x21')]=getRealtimeAgents;function getAgentStatus(_0x55b775){var _0x5e73fd='unknown';if(isAgentPaused(_0x55b775))_0x5e73fd=_0xfad9('0x12');else if(isAgentPaused(_0x55b775,!![]))_0x5e73fd=_0xfad9('0x22');else if(isAgentIdle(_0x55b775))_0x5e73fd=_0xfad9('0xd');else _0x5e73fd=_0xfad9('0x23');return _0x5e73fd;}exports[_0xfad9('0x24')]=getAgentStatus;function getAgentIdsByQueues(_0x25c53c,_0x5c157f){var _0x46e091=_[_0xfad9('0x25')](_0x25c53c)?_0x25c53c:[_0x25c53c];var _0x63d6c7=_[_0xfad9('0x26')](_0x5c157f)+_0xfad9('0x27');var _0x1371dc=_[_0xfad9('0x28')](_0x46e091,function(_0x120f2d){return db[_0x63d6c7][_0xfad9('0x29')]({'where':{'id':_0x120f2d}})['then'](function(_0x179c9d){if(!_0x179c9d)return[];return _0x179c9d[_0xfad9('0x2a')]({'attributes':['id'],'raw':!![]});});});return Promise[_0xfad9('0x2b')](_0x1371dc)[_0xfad9('0x1b')](function(_0x39f094){var _0x51ee01=_(_0x39f094)[_0xfad9('0x2c')]()['map']('id')[_0xfad9('0x2d')]()[_0xfad9('0x2e')]();return _0x51ee01;});}exports['getAgentIdsByQueues']=getAgentIdsByQueues;function getAgentIdsByStatus(_0x57e717,_0x3d5f4b,_0xa2449e){try{if(_0x3d5f4b['length']>0x0){_0x57e717=_0x57e717[_0xfad9('0xb')](function(_0x5e61c9){return _0x3d5f4b[_0xfad9('0x2f')](_0x5e61c9['id']);});}var _0x5a3ecb=_0x57e717[_0xfad9('0xb')](function(_0x4957eb){var _0x3dda71=_0xfad9('0x23');if(isAgentIdle(_0x4957eb)){_0x3dda71='idle';}return _0x3dda71===_0xa2449e;});return _[_0xfad9('0x28')](_0x5a3ecb,'id');}catch(_0x44c125){throw _0x44c125;}}exports[_0xfad9('0x30')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x5dbb54,_0x2893a2,_0x276856){return Promise[_0xfad9('0x31')]()[_0xfad9('0x1b')](function(){if(_0x2893a2[_0xfad9('0xc')]>0x0){_0x5dbb54=_0x5dbb54['filter'](function(_0x3fbdbd){return _0x2893a2[_0xfad9('0x2f')](_0x3fbdbd['id']);});}return _0x5dbb54;})[_0xfad9('0x1b')](function(){return db[_0xfad9('0x32')]['findAll']({'attributes':['id','name',_0xfad9('0x33'),'chatPause',_0xfad9('0x5'),_0xfad9('0x6'),_0xfad9('0x7'),_0xfad9('0x8'),_0xfad9('0x9'),_0xfad9('0xa'),_0xfad9('0x34')],'where':{'id':{'$in':_[_0xfad9('0x28')](_0x5dbb54,'id')}},'raw':!![]});})['then'](function(_0x3ead13){return _0x3ead13[_0xfad9('0x28')](function(_0x29af3a){var _0x21898a=_['find'](_0x5dbb54,['id',_0x29af3a['id']]);var _0x262255=filterAgentAttributes(_0x21898a);_[_0xfad9('0x1f')](_0x29af3a,_0x262255);_0x29af3a['globalStatus']=getAgentStatus(_0x29af3a);return _0x29af3a;});})['then'](function(_0xe8cba8){var _0x4bdf5a=sortAgentsByStatus(_0xe8cba8,_0x276856);return _[_0xfad9('0x28')](_0x4bdf5a,'id');})[_0xfad9('0x20')](function(_0x4d84c4){throw _0x4d84c4;});}exports[_0xfad9('0x35')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x57c77f){var _0x5f4105={'fields':[],'order':null};var _0x35199b=_0x57c77f[_0xfad9('0x36')](',');_0x5f4105[_0xfad9('0x37')]=_[_0xfad9('0xb')](_0x35199b,function(_0x6869af){if(!_0x6869af[_0xfad9('0x2f')](_0xfad9('0x38'))){return!![];}_0x5f4105[_0xfad9('0x39')]=_[_0xfad9('0x3a')](_0x6869af,'-')?'DESC':_0xfad9('0x3b');return![];});return _0x5f4105;}exports[_0xfad9('0x3c')]=getUpdatedSortOptions;function validateSortParameter(_0xfd3896){if(!_0xfd3896){_0xfd3896=_0xfad9('0x3d');}if(_0xfd3896[_0xfad9('0x2f')](_0xfad9('0x33'))&&!_0xfd3896[_0xfad9('0x2f')]('internal')){var _0x4e2abe=_0xfd3896[_0xfad9('0x3e')](0x0,_0xfd3896[_0xfad9('0x3f')](_0xfad9('0x33')));_0xfd3896+=','+_0x4e2abe+_0xfad9('0x40');}return _0xfd3896;}exports['validateSortParameter']=validateSortParameter;function sortAgentsByStatus(_0x1c6925,_0x86994){var _0x202979=_0x1c6925[_0xfad9('0x41')](function(_0x7274f3,_0x3a89e8){if(_0x7274f3[_0xfad9('0x38')]===_0x3a89e8['globalStatus']){if(_0x7274f3[_0xfad9('0x38')]===_0xfad9('0x12')){if(_0x86994===_0xfad9('0x42')){return(_0x7274f3[_0xfad9('0x34')]||'')<(_0x3a89e8[_0xfad9('0x34')]||'')||_0x7274f3[_0xfad9('0x33')]['toLowerCase']()>_0x3a89e8[_0xfad9('0x33')][_0xfad9('0x43')]()?0x1:-0x1;}else{return(_0x7274f3['pauseType']||'')<(_0x3a89e8[_0xfad9('0x34')]||'')||_0x7274f3[_0xfad9('0x33')]['toLowerCase']()>_0x3a89e8['fullname']['toLowerCase']()?-0x1:0x1;}}else{if(_0x86994===_0xfad9('0x42')){return _0x7274f3['fullname']['toLowerCase']()<_0x3a89e8[_0xfad9('0x33')][_0xfad9('0x43')]()?0x1:-0x1;}else{return _0x7274f3[_0xfad9('0x33')]['toLowerCase']()<_0x3a89e8[_0xfad9('0x33')][_0xfad9('0x43')]()?-0x1:0x1;}}}else{if(_0x86994===_0xfad9('0x42')){return _0x7274f3[_0xfad9('0x38')]<_0x3a89e8[_0xfad9('0x38')]?0x1:-0x1;}else{return _0x7274f3[_0xfad9('0x38')]<_0x3a89e8['globalStatus']?-0x1:0x1;}}});return _0x202979;}exports[_0xfad9('0x44')]=sortAgentsByStatus;function filterAgentAttributes(_0x1c5673){var _0xe651c2=[_0xfad9('0x45'),_0xfad9('0x46'),'lastLoginAt',_0xfad9('0x47'),'pauseType','lastPauseAt',_0xfad9('0x40'),_0xfad9('0x48'),_0xfad9('0x49'),_0xfad9('0x7'),'mailPause',_0xfad9('0x8'),_0xfad9('0xa'),'faxPause',_0xfad9('0x9'),'chatCapacity',_0xfad9('0x4a'),_0xfad9('0x4b'),'smsCapacity','whatsappCapacity',_0xfad9('0x4c'),'chatCurrentCapacity',_0xfad9('0x4d'),_0xfad9('0x4e'),'smsCurrentCapacity',_0xfad9('0x4f'),'faxCurrentCapacity',_0xfad9('0x14'),_0xfad9('0x50'),_0xfad9('0x16'),'smsStatus',_0xfad9('0x18'),_0xfad9('0x15'),_0xfad9('0x11'),'chatStatusTime',_0xfad9('0x51'),_0xfad9('0x52'),_0xfad9('0x53'),'whatsappStatusTime',_0xfad9('0x54'),'voiceStatusTime',_0xfad9('0x55'),'destconnectedlinenum',_0xfad9('0x56'),'phoneBarEnableScreenRecordingByAgent',_0xfad9('0x57')];var _0x5620af=[_0xfad9('0x49'),_0xfad9('0x7'),_0xfad9('0x6'),_0xfad9('0x8'),_0xfad9('0xa'),_0xfad9('0x5'),_0xfad9('0x9'),_0xfad9('0x46')];var _0x175d8f=_(_0x1c5673)[_0xfad9('0x58')](_0x5620af)[_0xfad9('0x59')](_0xe651c2)[_0xfad9('0x2e')]();return _0x175d8f;}exports['filterAgentAttributes']=filterAgentAttributes;function getRealtimeAgentsQueryFields(){return['id',_0xfad9('0x5a'),_0xfad9('0x33'),_0xfad9('0x5b'),_0xfad9('0x40'),'online',_0xfad9('0x38'),'userpic',_0xfad9('0x5c'),_0xfad9('0x34'),_0xfad9('0x47'),'faxPause',_0xfad9('0x49'),_0xfad9('0x6'),_0xfad9('0x7'),_0xfad9('0x8'),'voicePause',_0xfad9('0xa'),_0xfad9('0x14'),_0xfad9('0x15'),'mailStatus',_0xfad9('0x50'),'smsStatus','voiceStatus',_0xfad9('0x18'),_0xfad9('0x5d'),_0xfad9('0x54'),_0xfad9('0x52'),_0xfad9('0x51'),'smsStatusTime',_0xfad9('0x5e'),_0xfad9('0x5f'),_0xfad9('0x60'),_0xfad9('0x4c'),'mailCapacity',_0xfad9('0x4a'),_0xfad9('0x61'),_0xfad9('0x62'),'chatCurrentCapacity',_0xfad9('0x63'),_0xfad9('0x4e'),_0xfad9('0x4d'),_0xfad9('0x64'),_0xfad9('0x4f'),_0xfad9('0x65'),_0xfad9('0x57'),_0xfad9('0x66'),_0xfad9('0x67'),_0xfad9('0x55'),'screenrecording'];}exports[_0xfad9('0x68')]=getRealtimeAgentsQueryFields;