22e0aafaa14793a0a5eb36ec20fdf37e1fa76741
[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 _0x32d5=['online','lastLoginAt','lastPauseAt','chatPause','mailCapacity','smsCapacity','faxCapacity','chatCurrentCapacity','openchannelCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','mailStatus','smsStatus','smsStatusTime','faxStatusTime','voiceStatusTime','queue','screenrecording','phoneBarEnableScreenRecordingByAgent','filterAgentAttributes','role','chatStatusTime','openchannelStatusTime','whatsappStatusTime','chatCapacity','openchannelCapacity','destconnectedlinenum','getRealtimeAgentsQueryFields','lodash','jayson/promise','../../mysqldb','client','http','faxPause','mailPause','openchannelPause','smsPause','voicePause','length','idle','unknown','unavailable','ringing','isNil','voiceStatus','pause','every','chatStatus','faxStatus','openchannelStatus','whatsappStatus','request','Agents','then','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','result','merge','getRealtimeAgents','*pause','busy','getAgentStatus','isArray','startCase','map','findOne','all','flatten','uniq','value','getAgentIdsByQueues','filter','getAgentIdsByStatus','resolve','User','findAll','name','fullname','whatsappPause','pauseType','globalStatus','catch','getSortedAgentsIdsByStatus','split','includes','startsWith','DESC','getUpdatedSortOptions','fullname,internal','internal','indexOf','validateSortParameter','sort','toLowerCase','sortAgentsByStatus','userpic'];(function(_0x12428f,_0x1ad9a7){var _0x5badb3=function(_0x31788f){while(--_0x31788f){_0x12428f['push'](_0x12428f['shift']());}};_0x5badb3(++_0x1ad9a7);}(_0x32d5,0x1aa));var _0x532d=function(_0x161908,_0x233c60){_0x161908=_0x161908-0x0;var _0x596e21=_0x32d5[_0x161908];return _0x596e21;};'use strict';var _=require(_0x532d('0x0'));var jayson=require(_0x532d('0x1'));var db=require(_0x532d('0x2'))['db'];var amiClient=jayson[_0x532d('0x3')][_0x532d('0x4')]({'port':0x232a});var routingClient=jayson[_0x532d('0x3')][_0x532d('0x4')]({'port':0x232c});function isAgentPaused(_0x5efaea,_0x2f0e4c){var _0x309316=[_0x5efaea['chatPause'],_0x5efaea[_0x532d('0x5')],_0x5efaea[_0x532d('0x6')],_0x5efaea[_0x532d('0x7')],_0x5efaea[_0x532d('0x8')],_0x5efaea[_0x532d('0x9')],_0x5efaea['whatsappPause']];if(!_0x2f0e4c)return _['every'](_0x309316);var _0x445220=_['filter'](_0x309316);return _0x445220[_0x532d('0xa')]>0x0&&_0x445220[_0x532d('0xa')]<_0x309316[_0x532d('0xa')]?!![]:![];}function isIdle(_0x45b5df){return _0x45b5df===_0x532d('0xb')||_0x45b5df===_0x532d('0xc')||_0x45b5df===_0x532d('0xd')||_0x45b5df===_0x532d('0xe')||_[_0x532d('0xf')](_0x45b5df);}function isAgentIdle(_0x402175){if(_0x402175[_0x532d('0x10')]!==_0x532d('0xb')&&_0x402175['voicePause']){_0x402175[_0x532d('0x10')]=_0x532d('0x11');return![];}return _[_0x532d('0x12')]([_0x402175[_0x532d('0x13')],_0x402175[_0x532d('0x14')],_0x402175['mailStatus'],_0x402175[_0x532d('0x15')],_0x402175['smsStatus'],_0x402175[_0x532d('0x10')],_0x402175[_0x532d('0x16')]],isIdle);}function getRealtimeAgents(){return amiClient[_0x532d('0x17')](_0x532d('0x18'),{})[_0x532d('0x19')](function(_0x1f48fb){if(_0x1f48fb[_0x532d('0x1a')]){throw new Error(_0x532d('0x1b'));}var _0x427c9e=_0x1f48fb['result'];return routingClient[_0x532d('0x17')](_0x532d('0x18'),{})[_0x532d('0x19')](function(_0x1a7fb9){if(_0x1a7fb9[_0x532d('0x1a')]){throw new Error(_0x532d('0x1c'));}var _0x3a9388=_0x1a7fb9[_0x532d('0x1d')];return _[_0x532d('0x1e')]({},_0x427c9e,_0x3a9388);});})['catch'](function(_0xb6b1a0){throw _0xb6b1a0;});}exports[_0x532d('0x1f')]=getRealtimeAgents;function getAgentStatus(_0x2ba607){var _0x3b11a5=_0x532d('0xc');if(isAgentPaused(_0x2ba607))_0x3b11a5='pause';else if(isAgentPaused(_0x2ba607,!![]))_0x3b11a5=_0x532d('0x20');else if(isAgentIdle(_0x2ba607))_0x3b11a5=_0x532d('0xb');else _0x3b11a5=_0x532d('0x21');return _0x3b11a5;}exports[_0x532d('0x22')]=getAgentStatus;function getAgentIdsByQueues(_0x22b6a6,_0x53281d){var _0x4c85bb=_[_0x532d('0x23')](_0x22b6a6)?_0x22b6a6:[_0x22b6a6];var _0x3f57f1=_[_0x532d('0x24')](_0x53281d)+'Queue';var _0x4e7ad1=_[_0x532d('0x25')](_0x4c85bb,function(_0x3d6c0c){return db[_0x3f57f1][_0x532d('0x26')]({'where':{'id':_0x3d6c0c}})['then'](function(_0x50f77b){if(!_0x50f77b)return[];return _0x50f77b['getAgents']({'attributes':['id'],'raw':!![]});});});return Promise[_0x532d('0x27')](_0x4e7ad1)[_0x532d('0x19')](function(_0x4eecab){var _0x2bd0b5=_(_0x4eecab)[_0x532d('0x28')]()[_0x532d('0x25')]('id')[_0x532d('0x29')]()[_0x532d('0x2a')]();return _0x2bd0b5;});}exports[_0x532d('0x2b')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x4da7c8,_0xbf606b,_0x2d8226){try{if(_0xbf606b[_0x532d('0xa')]>0x0){_0x4da7c8=_0x4da7c8[_0x532d('0x2c')](function(_0x3288b5){return _0xbf606b['includes'](_0x3288b5['id']);});}var _0x516560=_0x4da7c8['filter'](function(_0x39aede){var _0x478da1=_0x532d('0x21');if(isAgentIdle(_0x39aede)){_0x478da1=_0x532d('0xb');}return _0x478da1===_0x2d8226;});return _[_0x532d('0x25')](_0x516560,'id');}catch(_0x2d196a){throw _0x2d196a;}}exports[_0x532d('0x2d')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x41f984,_0x56d7c2,_0x477f59){return Promise[_0x532d('0x2e')]()[_0x532d('0x19')](function(){if(_0x56d7c2[_0x532d('0xa')]>0x0){_0x41f984=_0x41f984[_0x532d('0x2c')](function(_0x7bddcf){return _0x56d7c2['includes'](_0x7bddcf['id']);});}return _0x41f984;})[_0x532d('0x19')](function(){return db[_0x532d('0x2f')][_0x532d('0x30')]({'attributes':['id',_0x532d('0x31'),_0x532d('0x32'),'chatPause',_0x532d('0x5'),_0x532d('0x6'),'openchannelPause',_0x532d('0x8'),_0x532d('0x9'),_0x532d('0x33'),_0x532d('0x34')],'where':{'id':{'$in':_[_0x532d('0x25')](_0x41f984,'id')}},'raw':!![]});})[_0x532d('0x19')](function(_0x5d4709){return _0x5d4709[_0x532d('0x25')](function(_0x26b1e2){var _0x55f80d=_['find'](_0x41f984,['id',_0x26b1e2['id']]);var _0x2d6345=filterAgentAttributes(_0x55f80d);_[_0x532d('0x1e')](_0x26b1e2,_0x2d6345);_0x26b1e2[_0x532d('0x35')]=getAgentStatus(_0x26b1e2);return _0x26b1e2;});})[_0x532d('0x19')](function(_0x3a99e7){var _0x3cf77b=sortAgentsByStatus(_0x3a99e7,_0x477f59);return _[_0x532d('0x25')](_0x3cf77b,'id');})[_0x532d('0x36')](function(_0x2df8b8){throw _0x2df8b8;});}exports[_0x532d('0x37')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x3c6f87){var _0x4542dc={'fields':[],'order':null};var _0x261aa8=_0x3c6f87[_0x532d('0x38')](',');_0x4542dc['fields']=_[_0x532d('0x2c')](_0x261aa8,function(_0xb6f4f9){if(!_0xb6f4f9[_0x532d('0x39')](_0x532d('0x35'))){return!![];}_0x4542dc['order']=_[_0x532d('0x3a')](_0xb6f4f9,'-')?_0x532d('0x3b'):'ASC';return![];});return _0x4542dc;}exports[_0x532d('0x3c')]=getUpdatedSortOptions;function validateSortParameter(_0x35c5ef){if(!_0x35c5ef){_0x35c5ef=_0x532d('0x3d');}if(_0x35c5ef['includes']('fullname')&&!_0x35c5ef[_0x532d('0x39')](_0x532d('0x3e'))){var _0x1307f0=_0x35c5ef['substring'](0x0,_0x35c5ef[_0x532d('0x3f')](_0x532d('0x32')));_0x35c5ef+=','+_0x1307f0+_0x532d('0x3e');}return _0x35c5ef;}exports[_0x532d('0x40')]=validateSortParameter;function sortAgentsByStatus(_0x4793bc,_0x27d8d4){var _0x3f1797=_0x4793bc[_0x532d('0x41')](function(_0x10f9c8,_0x27a3ed){if(_0x10f9c8[_0x532d('0x35')]===_0x27a3ed[_0x532d('0x35')]){if(_0x10f9c8[_0x532d('0x35')]==='pause'){if(_0x27d8d4==='DESC'){return(_0x10f9c8[_0x532d('0x34')]||'')<(_0x27a3ed[_0x532d('0x34')]||'')||_0x10f9c8['fullname'][_0x532d('0x42')]()>_0x27a3ed[_0x532d('0x32')][_0x532d('0x42')]()?0x1:-0x1;}else{return(_0x10f9c8[_0x532d('0x34')]||'')<(_0x27a3ed[_0x532d('0x34')]||'')||_0x10f9c8['fullname'][_0x532d('0x42')]()>_0x27a3ed[_0x532d('0x32')][_0x532d('0x42')]()?-0x1:0x1;}}else{if(_0x27d8d4===_0x532d('0x3b')){return _0x10f9c8['fullname'][_0x532d('0x42')]()<_0x27a3ed[_0x532d('0x32')][_0x532d('0x42')]()?0x1:-0x1;}else{return _0x10f9c8['fullname']['toLowerCase']()<_0x27a3ed[_0x532d('0x32')][_0x532d('0x42')]()?-0x1:0x1;}}}else{if(_0x27d8d4===_0x532d('0x3b')){return _0x10f9c8['globalStatus']<_0x27a3ed[_0x532d('0x35')]?0x1:-0x1;}else{return _0x10f9c8['globalStatus']<_0x27a3ed[_0x532d('0x35')]?-0x1:0x1;}}});return _0x3f1797;}exports[_0x532d('0x43')]=sortAgentsByStatus;function filterAgentAttributes(_0x34a13){var _0x51c54d=[_0x532d('0x44'),_0x532d('0x45'),_0x532d('0x46'),'lastPauseAt',_0x532d('0x34'),_0x532d('0x47'),'internal','address',_0x532d('0x48'),_0x532d('0x7'),_0x532d('0x6'),_0x532d('0x8'),_0x532d('0x33'),'faxPause',_0x532d('0x9'),'chatCapacity','openchannelCapacity',_0x532d('0x49'),_0x532d('0x4a'),'whatsappCapacity',_0x532d('0x4b'),_0x532d('0x4c'),_0x532d('0x4d'),_0x532d('0x4e'),_0x532d('0x4f'),_0x532d('0x50'),_0x532d('0x51'),_0x532d('0x13'),_0x532d('0x15'),_0x532d('0x52'),_0x532d('0x53'),_0x532d('0x16'),_0x532d('0x14'),_0x532d('0x10'),'chatStatusTime','openchannelStatusTime','mailStatusTime',_0x532d('0x54'),'whatsappStatusTime',_0x532d('0x55'),_0x532d('0x56'),_0x532d('0x57'),'destconnectedlinenum',_0x532d('0x58'),_0x532d('0x59'),'phoneBarEnableAutomaticScreenRecording'];var _0x2ed431=[_0x532d('0x48'),_0x532d('0x7'),_0x532d('0x6'),'smsPause',_0x532d('0x33'),_0x532d('0x5'),_0x532d('0x9'),'online'];var _0x415eac=_(_0x34a13)['omit'](_0x2ed431)['pick'](_0x51c54d)[_0x532d('0x2a')]();return _0x415eac;}exports[_0x532d('0x5a')]=filterAgentAttributes;function getRealtimeAgentsQueryFields(){return['id',_0x532d('0x31'),_0x532d('0x32'),_0x532d('0x5b'),_0x532d('0x3e'),_0x532d('0x45'),_0x532d('0x35'),_0x532d('0x44'),_0x532d('0x46'),_0x532d('0x34'),_0x532d('0x47'),_0x532d('0x5'),_0x532d('0x48'),_0x532d('0x6'),'openchannelPause','smsPause',_0x532d('0x9'),_0x532d('0x33'),_0x532d('0x13'),_0x532d('0x14'),_0x532d('0x52'),_0x532d('0x15'),_0x532d('0x53'),_0x532d('0x10'),_0x532d('0x16'),_0x532d('0x5c'),'faxStatusTime','mailStatusTime',_0x532d('0x5d'),_0x532d('0x54'),_0x532d('0x56'),_0x532d('0x5e'),_0x532d('0x5f'),_0x532d('0x4b'),_0x532d('0x49'),_0x532d('0x60'),_0x532d('0x4a'),'whatsappCapacity','chatCurrentCapacity',_0x532d('0x51'),'mailCurrentCapacity','openchannelCurrentCapacity',_0x532d('0x4f'),'whatsappCurrentCapacity',_0x532d('0x59'),'phoneBarEnableAutomaticScreenRecording',_0x532d('0x61'),'onhold','queue',_0x532d('0x58')];}exports[_0x532d('0x62')]=getRealtimeAgentsQueryFields;