f50b93e49413e5489fbaaefa46b83d0d262664fb
[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 _0x0309=['substring','indexOf','internal','validateSortParameter','sort','toLowerCase','sortAgentsByStatus','userpic','online','lastLoginAt','lastPauseAt','chatCapacity','openchannelCapacity','mailCapacity','smsCapacity','whatsappCapacity','chatCurrentCapacity','mailCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','chatStatus','chatStatusTime','openchannelStatusTime','mailStatusTime','whatsappStatusTime','voiceStatusTime','queue','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','pick','role','whatsappStatus','faxStatusTime','smsStatusTime','faxCapacity','openchannelCurrentCapacity','smsCurrentCapacity','destconnectedlinenum','onhold','screenrecording','getRealtimeAgentsQueryFields','lodash','jayson/promise','../../mysqldb','client','http','chatPause','smsPause','whatsappPause','every','filter','length','idle','unavailable','isNil','voiceStatus','faxStatus','mailStatus','openchannelStatus','smsStatus','then','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','request','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','result','merge','catch','getRealtimeAgents','unknown','pause','*pause','busy','startCase','Queue','map','findOne','getAgents','all','value','getAgentIdsByQueues','includes','getAgentIdsByStatus','resolve','findAll','name','fullname','faxPause','mailPause','openchannelPause','pauseType','find','globalStatus','getSortedAgentsIdsByStatus','split','order','startsWith','DESC','ASC','getUpdatedSortOptions','fullname,internal'];(function(_0x3eb4dd,_0x428759){var _0x57d05e=function(_0x2efcc8){while(--_0x2efcc8){_0x3eb4dd['push'](_0x3eb4dd['shift']());}};_0x57d05e(++_0x428759);}(_0x0309,0x8d));var _0x9030=function(_0x4cfa3d,_0x3ba268){_0x4cfa3d=_0x4cfa3d-0x0;var _0x38b62e=_0x0309[_0x4cfa3d];return _0x38b62e;};'use strict';var _=require(_0x9030('0x0'));var jayson=require(_0x9030('0x1'));var db=require(_0x9030('0x2'))['db'];var amiClient=jayson[_0x9030('0x3')][_0x9030('0x4')]({'port':0x232a});var routingClient=jayson['client'][_0x9030('0x4')]({'port':0x232c});function isAgentPaused(_0x1131fd,_0x4aa8c5){var _0x52abf3=[_0x1131fd[_0x9030('0x5')],_0x1131fd['faxPause'],_0x1131fd['mailPause'],_0x1131fd['openchannelPause'],_0x1131fd[_0x9030('0x6')],_0x1131fd['voicePause'],_0x1131fd[_0x9030('0x7')]];if(!_0x4aa8c5)return _[_0x9030('0x8')](_0x52abf3);var _0x335d4a=_[_0x9030('0x9')](_0x52abf3);return _0x335d4a[_0x9030('0xa')]>0x0&&_0x335d4a[_0x9030('0xa')]<_0x52abf3[_0x9030('0xa')]?!![]:![];}function isIdle(_0x3e50f3){return _0x3e50f3===_0x9030('0xb')||_0x3e50f3==='unknown'||_0x3e50f3===_0x9030('0xc')||_0x3e50f3==='ringing'||_[_0x9030('0xd')](_0x3e50f3);}function isAgentIdle(_0x36836b){if(_0x36836b['voiceStatus']!==_0x9030('0xb')&&_0x36836b['voicePause']){_0x36836b[_0x9030('0xe')]='pause';return![];}return _[_0x9030('0x8')]([_0x36836b['chatStatus'],_0x36836b[_0x9030('0xf')],_0x36836b[_0x9030('0x10')],_0x36836b[_0x9030('0x11')],_0x36836b[_0x9030('0x12')],_0x36836b['voiceStatus'],_0x36836b['whatsappStatus']],isIdle);}function getRealtimeAgents(){return amiClient['request']('Agents',{})[_0x9030('0x13')](function(_0x3b61cc){if(_0x3b61cc['error']){throw new Error(_0x9030('0x14'));}var _0xccfccb=_0x3b61cc['result'];return routingClient[_0x9030('0x15')]('Agents',{})[_0x9030('0x13')](function(_0x4960fd){if(_0x4960fd['error']){throw new Error(_0x9030('0x16'));}var _0x4de6e3=_0x4960fd[_0x9030('0x17')];return _[_0x9030('0x18')]({},_0xccfccb,_0x4de6e3);});})[_0x9030('0x19')](function(_0x175e61){throw _0x175e61;});}exports[_0x9030('0x1a')]=getRealtimeAgents;function getAgentStatus(_0x4a2551){var _0x19ef2a=_0x9030('0x1b');if(isAgentPaused(_0x4a2551))_0x19ef2a=_0x9030('0x1c');else if(isAgentPaused(_0x4a2551,!![]))_0x19ef2a=_0x9030('0x1d');else if(isAgentIdle(_0x4a2551))_0x19ef2a='idle';else _0x19ef2a=_0x9030('0x1e');return _0x19ef2a;}exports['getAgentStatus']=getAgentStatus;function getAgentIdsByQueues(_0x50a924,_0x2d1041){var _0x350ef3=_['isArray'](_0x50a924)?_0x50a924:[_0x50a924];var _0x23ae15=_[_0x9030('0x1f')](_0x2d1041)+_0x9030('0x20');var _0x303885=_[_0x9030('0x21')](_0x350ef3,function(_0x3fd61d){return db[_0x23ae15][_0x9030('0x22')]({'where':{'id':_0x3fd61d}})[_0x9030('0x13')](function(_0x3c37de){if(!_0x3c37de)return[];return _0x3c37de[_0x9030('0x23')]({'attributes':['id'],'raw':!![]});});});return Promise[_0x9030('0x24')](_0x303885)['then'](function(_0xe7e11a){var _0x434152=_(_0xe7e11a)['flatten']()[_0x9030('0x21')]('id')['uniq']()[_0x9030('0x25')]();return _0x434152;});}exports[_0x9030('0x26')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x7d2c70,_0x4ebfac,_0x41328e){try{if(_0x4ebfac['length']>0x0){_0x7d2c70=_0x7d2c70['filter'](function(_0x3e0c85){return _0x4ebfac[_0x9030('0x27')](_0x3e0c85['id']);});}var _0x1afa08=_0x7d2c70['filter'](function(_0xf71255){var _0x5245a7='busy';if(isAgentIdle(_0xf71255)){_0x5245a7=_0x9030('0xb');}return _0x5245a7===_0x41328e;});return _[_0x9030('0x21')](_0x1afa08,'id');}catch(_0x2535de){throw _0x2535de;}}exports[_0x9030('0x28')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x5a0904,_0x42ef07,_0x55b184){return Promise[_0x9030('0x29')]()[_0x9030('0x13')](function(){if(_0x42ef07[_0x9030('0xa')]>0x0){_0x5a0904=_0x5a0904[_0x9030('0x9')](function(_0x546d55){return _0x42ef07['includes'](_0x546d55['id']);});}return _0x5a0904;})[_0x9030('0x13')](function(){return db['User'][_0x9030('0x2a')]({'attributes':['id',_0x9030('0x2b'),_0x9030('0x2c'),_0x9030('0x5'),_0x9030('0x2d'),_0x9030('0x2e'),_0x9030('0x2f'),'smsPause','voicePause',_0x9030('0x7'),_0x9030('0x30')],'where':{'id':{'$in':_['map'](_0x5a0904,'id')}},'raw':!![]});})[_0x9030('0x13')](function(_0xe349ff){return _0xe349ff[_0x9030('0x21')](function(_0x254ff7){var _0x1ebb8b=_[_0x9030('0x31')](_0x5a0904,['id',_0x254ff7['id']]);var _0x2c5909=filterAgentAttributes(_0x1ebb8b);_['merge'](_0x254ff7,_0x2c5909);_0x254ff7[_0x9030('0x32')]=getAgentStatus(_0x254ff7);return _0x254ff7;});})[_0x9030('0x13')](function(_0x32c723){var _0x543e8b=sortAgentsByStatus(_0x32c723,_0x55b184);return _[_0x9030('0x21')](_0x543e8b,'id');})[_0x9030('0x19')](function(_0x33b26c){throw _0x33b26c;});}exports[_0x9030('0x33')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x2fd410){var _0x212072={'fields':[],'order':null};var _0x5c132e=_0x2fd410[_0x9030('0x34')](',');_0x212072['fields']=_['filter'](_0x5c132e,function(_0x571917){if(!_0x571917['includes']('globalStatus')){return!![];}_0x212072[_0x9030('0x35')]=_[_0x9030('0x36')](_0x571917,'-')?_0x9030('0x37'):_0x9030('0x38');return![];});return _0x212072;}exports[_0x9030('0x39')]=getUpdatedSortOptions;function validateSortParameter(_0x144c50){if(!_0x144c50){_0x144c50=_0x9030('0x3a');}if(_0x144c50[_0x9030('0x27')](_0x9030('0x2c'))&&!_0x144c50[_0x9030('0x27')]('internal')){var _0x4ac19b=_0x144c50[_0x9030('0x3b')](0x0,_0x144c50[_0x9030('0x3c')]('fullname'));_0x144c50+=','+_0x4ac19b+_0x9030('0x3d');}return _0x144c50;}exports[_0x9030('0x3e')]=validateSortParameter;function sortAgentsByStatus(_0x228e89,_0x58f79c){var _0x1d436b=_0x228e89[_0x9030('0x3f')](function(_0x4295ac,_0x11ccb2){if(_0x4295ac[_0x9030('0x32')]===_0x11ccb2[_0x9030('0x32')]){if(_0x4295ac['globalStatus']===_0x9030('0x1c')){if(_0x58f79c===_0x9030('0x37')){return(_0x4295ac[_0x9030('0x30')]||'')<(_0x11ccb2[_0x9030('0x30')]||'')||_0x4295ac['fullname']['toLowerCase']()>_0x11ccb2[_0x9030('0x2c')][_0x9030('0x40')]()?0x1:-0x1;}else{return(_0x4295ac[_0x9030('0x30')]||'')<(_0x11ccb2[_0x9030('0x30')]||'')||_0x4295ac[_0x9030('0x2c')][_0x9030('0x40')]()>_0x11ccb2[_0x9030('0x2c')][_0x9030('0x40')]()?-0x1:0x1;}}else{if(_0x58f79c===_0x9030('0x37')){return _0x4295ac[_0x9030('0x2c')][_0x9030('0x40')]()<_0x11ccb2[_0x9030('0x2c')][_0x9030('0x40')]()?0x1:-0x1;}else{return _0x4295ac[_0x9030('0x2c')][_0x9030('0x40')]()<_0x11ccb2[_0x9030('0x2c')]['toLowerCase']()?-0x1:0x1;}}}else{if(_0x58f79c==='DESC'){return _0x4295ac[_0x9030('0x32')]<_0x11ccb2['globalStatus']?0x1:-0x1;}else{return _0x4295ac[_0x9030('0x32')]<_0x11ccb2[_0x9030('0x32')]?-0x1:0x1;}}});return _0x1d436b;}exports[_0x9030('0x41')]=sortAgentsByStatus;function filterAgentAttributes(_0x84c58f){var _0x5a4fd5=[_0x9030('0x42'),_0x9030('0x43'),_0x9030('0x44'),'lastPauseAt',_0x9030('0x30'),_0x9030('0x45'),'internal','address','chatPause',_0x9030('0x2f'),_0x9030('0x2e'),_0x9030('0x6'),_0x9030('0x7'),_0x9030('0x2d'),'voicePause',_0x9030('0x46'),_0x9030('0x47'),_0x9030('0x48'),_0x9030('0x49'),_0x9030('0x4a'),'faxCapacity',_0x9030('0x4b'),'openchannelCurrentCapacity',_0x9030('0x4c'),'smsCurrentCapacity',_0x9030('0x4d'),_0x9030('0x4e'),_0x9030('0x4f'),_0x9030('0x11'),_0x9030('0x10'),'smsStatus','whatsappStatus',_0x9030('0xf'),_0x9030('0xe'),_0x9030('0x50'),_0x9030('0x51'),_0x9030('0x52'),'smsStatusTime',_0x9030('0x53'),'faxStatusTime',_0x9030('0x54'),_0x9030('0x55'),'destconnectedlinenum','screenrecording',_0x9030('0x56'),_0x9030('0x57')];var _0x33ac2f=[_0x9030('0x5'),_0x9030('0x2f'),_0x9030('0x2e'),_0x9030('0x6'),_0x9030('0x7'),_0x9030('0x2d'),'voicePause',_0x9030('0x43')];var _0x3d9149=_(_0x84c58f)['omit'](_0x33ac2f)[_0x9030('0x58')](_0x5a4fd5)[_0x9030('0x25')]();return _0x3d9149;}exports['filterAgentAttributes']=filterAgentAttributes;function getRealtimeAgentsQueryFields(){return['id','name',_0x9030('0x2c'),_0x9030('0x59'),_0x9030('0x3d'),_0x9030('0x43'),_0x9030('0x32'),_0x9030('0x42'),_0x9030('0x44'),'pauseType',_0x9030('0x45'),_0x9030('0x2d'),'chatPause',_0x9030('0x2e'),_0x9030('0x2f'),_0x9030('0x6'),'voicePause',_0x9030('0x7'),'chatStatus','faxStatus','mailStatus','openchannelStatus','smsStatus',_0x9030('0xe'),_0x9030('0x5a'),'chatStatusTime',_0x9030('0x5b'),_0x9030('0x52'),_0x9030('0x51'),_0x9030('0x5c'),'voiceStatusTime',_0x9030('0x53'),'chatCapacity',_0x9030('0x5d'),_0x9030('0x48'),_0x9030('0x47'),_0x9030('0x49'),_0x9030('0x4a'),_0x9030('0x4b'),_0x9030('0x4e'),_0x9030('0x4c'),_0x9030('0x5e'),_0x9030('0x5f'),_0x9030('0x4d'),'phoneBarEnableScreenRecordingByAgent',_0x9030('0x57'),_0x9030('0x60'),_0x9030('0x61'),_0x9030('0x55'),_0x9030('0x62')];}exports[_0x9030('0x63')]=getRealtimeAgentsQueryFields;