a42cab4db90cffd527cb207eff85c5cee93a5e22
[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 _0x820d=['openchannelCapacity','mailCapacity','smsCapacity','faxCapacity','openchannelCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','openchannelStatus','chatStatusTime','openchannelStatusTime','mailStatusTime','whatsappStatusTime','faxStatusTime','queue','screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','omit','pick','filterAgentAttributes','lodash','jayson/promise','http','client','mailPause','openchannelPause','smsPause','voicePause','whatsappPause','every','length','idle','unknown','isNil','voiceStatus','pause','chatStatus','faxStatus','mailStatus','smsStatus','whatsappStatus','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','catch','getRealtimeAgents','getAgentStatus','isArray','startCase','map','findOne','then','getAgents','all','flatten','uniq','value','getAgentIdsByQueues','includes','filter','busy','getAgentIdsByStatus','findAll','chatPause','faxPause','find','globalStatus','split','fields','order','startsWith','DESC','ASC','getUpdatedSortOptions','fullname','internal','indexOf','sort','toLowerCase','pauseType','sortAgentsByStatus','userpic','online','lastLoginAt','lastPauseAt','address','chatCapacity'];(function(_0x25a817,_0x1bf6b7){var _0x5a0a94=function(_0x351f64){while(--_0x351f64){_0x25a817['push'](_0x25a817['shift']());}};_0x5a0a94(++_0x1bf6b7);}(_0x820d,0x129));var _0xd820=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0x820d[_0x110c3d];return _0x226d67;};'use strict';var _=require(_0xd820('0x0'));var jayson=require(_0xd820('0x1'));var db=require('../../mysqldb')['db'];var amiClient=jayson['client'][_0xd820('0x2')]({'port':0x232a});var routingClient=jayson[_0xd820('0x3')][_0xd820('0x2')]({'port':0x232c});function isAgentPaused(_0x27378e,_0x2f2d75){var _0x5dc7c3=[_0x27378e['chatPause'],_0x27378e['faxPause'],_0x27378e[_0xd820('0x4')],_0x27378e[_0xd820('0x5')],_0x27378e[_0xd820('0x6')],_0x27378e[_0xd820('0x7')],_0x27378e[_0xd820('0x8')]];if(!_0x2f2d75)return _[_0xd820('0x9')](_0x5dc7c3);var _0x11e61b=_['filter'](_0x5dc7c3);return _0x11e61b['length']>0x0&&_0x11e61b[_0xd820('0xa')]<_0x5dc7c3['length']?!![]:![];}function isIdle(_0x287443){return _0x287443===_0xd820('0xb')||_0x287443===_0xd820('0xc')||_0x287443==='unavailable'||_0x287443==='ringing'||_[_0xd820('0xd')](_0x287443);}function isAgentIdle(_0x486ce6){if(_0x486ce6['voiceStatus']!==_0xd820('0xb')&&_0x486ce6[_0xd820('0x7')]){_0x486ce6[_0xd820('0xe')]=_0xd820('0xf');return![];}return _[_0xd820('0x9')]([_0x486ce6[_0xd820('0x10')],_0x486ce6[_0xd820('0x11')],_0x486ce6[_0xd820('0x12')],_0x486ce6['openchannelStatus'],_0x486ce6[_0xd820('0x13')],_0x486ce6[_0xd820('0xe')],_0x486ce6[_0xd820('0x14')]],isIdle);}function getRealtimeAgents(){return amiClient[_0xd820('0x15')](_0xd820('0x16'),{})['then'](function(_0x5cd1d6){if(_0x5cd1d6['error']){throw new Error(_0xd820('0x17'));}var _0x2aa142=_0x5cd1d6[_0xd820('0x18')];return routingClient[_0xd820('0x15')]('Agents',{})['then'](function(_0x203bf7){if(_0x203bf7[_0xd820('0x19')]){throw new Error(_0xd820('0x1a'));}var _0xc5ade6=_0x203bf7['result'];return _[_0xd820('0x1b')]({},_0x2aa142,_0xc5ade6);});})[_0xd820('0x1c')](function(_0x571c5f){throw _0x571c5f;});}exports[_0xd820('0x1d')]=getRealtimeAgents;function getAgentStatus(_0x41406f){var _0x233d80=_0xd820('0xc');if(isAgentPaused(_0x41406f))_0x233d80='pause';else if(isAgentPaused(_0x41406f,!![]))_0x233d80='*pause';else if(isAgentIdle(_0x41406f))_0x233d80=_0xd820('0xb');else _0x233d80='busy';return _0x233d80;}exports[_0xd820('0x1e')]=getAgentStatus;function getAgentIdsByQueues(_0xa84000,_0x15213e){var _0x3613cd=_[_0xd820('0x1f')](_0xa84000)?_0xa84000:[_0xa84000];var _0x20e7dc=_[_0xd820('0x20')](_0x15213e)+'Queue';var _0x522ac=_[_0xd820('0x21')](_0x3613cd,function(_0x2e3cd7){return db[_0x20e7dc][_0xd820('0x22')]({'where':{'id':_0x2e3cd7}})[_0xd820('0x23')](function(_0x43990e){if(!_0x43990e)return[];return _0x43990e[_0xd820('0x24')]({'attributes':['id'],'raw':!![]});});});return Promise[_0xd820('0x25')](_0x522ac)['then'](function(_0x23e289){var _0x35b26c=_(_0x23e289)[_0xd820('0x26')]()[_0xd820('0x21')]('id')[_0xd820('0x27')]()[_0xd820('0x28')]();return _0x35b26c;});}exports[_0xd820('0x29')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x4653c2,_0x2aad30,_0x5a3fff){try{if(_0x2aad30['length']>0x0){_0x4653c2=_0x4653c2['filter'](function(_0x38e946){return _0x2aad30[_0xd820('0x2a')](_0x38e946['id']);});}var _0x3560d=_0x4653c2[_0xd820('0x2b')](function(_0x3797d6){var _0x44178e=_0xd820('0x2c');if(isAgentIdle(_0x3797d6)){_0x44178e=_0xd820('0xb');}return _0x44178e===_0x5a3fff;});return _[_0xd820('0x21')](_0x3560d,'id');}catch(_0x3a19b5){throw _0x3a19b5;}}exports[_0xd820('0x2d')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x67d72b,_0x5de0c3,_0x10d879){return Promise['resolve']()[_0xd820('0x23')](function(){if(_0x5de0c3[_0xd820('0xa')]>0x0){_0x67d72b=_0x67d72b[_0xd820('0x2b')](function(_0x4bdce2){return _0x5de0c3[_0xd820('0x2a')](_0x4bdce2['id']);});}return _0x67d72b;})[_0xd820('0x23')](function(){return db['User'][_0xd820('0x2e')]({'attributes':['id','name','fullname',_0xd820('0x2f'),_0xd820('0x30'),_0xd820('0x4'),'openchannelPause','smsPause','voicePause','whatsappPause','pauseType'],'where':{'id':{'$in':_['map'](_0x67d72b,'id')}},'raw':!![]});})[_0xd820('0x23')](function(_0x499685){return _0x499685[_0xd820('0x21')](function(_0x3fdb95){var _0x703ed2=_[_0xd820('0x31')](_0x67d72b,['id',_0x3fdb95['id']]);var _0x39565e=filterAgentAttributes(_0x703ed2);_[_0xd820('0x1b')](_0x3fdb95,_0x39565e);_0x3fdb95[_0xd820('0x32')]=getAgentStatus(_0x3fdb95);return _0x3fdb95;});})[_0xd820('0x23')](function(_0x1953e4){var _0x3a2a67=sortAgentsByStatus(_0x1953e4,_0x10d879);return _['map'](_0x3a2a67,'id');})['catch'](function(_0x48e730){throw _0x48e730;});}exports['getSortedAgentsIdsByStatus']=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0xf42eba){var _0x20d116={'fields':[],'order':null};var _0x4bcae9=_0xf42eba[_0xd820('0x33')](',');_0x20d116[_0xd820('0x34')]=_[_0xd820('0x2b')](_0x4bcae9,function(_0x3c6311){if(!_0x3c6311[_0xd820('0x2a')]('globalStatus')){return!![];}_0x20d116[_0xd820('0x35')]=_[_0xd820('0x36')](_0x3c6311,'-')?_0xd820('0x37'):_0xd820('0x38');return![];});return _0x20d116;}exports[_0xd820('0x39')]=getUpdatedSortOptions;function validateSortParameter(_0x804b1a){if(_0x804b1a[_0xd820('0x2a')](_0xd820('0x3a'))&&!_0x804b1a[_0xd820('0x2a')](_0xd820('0x3b'))){var _0x4f8229=_0x804b1a['substring'](0x0,_0x804b1a[_0xd820('0x3c')](_0xd820('0x3a')));_0x804b1a+=','+_0x4f8229+_0xd820('0x3b');}return _0x804b1a;}exports['validateSortParameter']=validateSortParameter;function sortAgentsByStatus(_0x56d0a9,_0x474839){var _0x188c29=_0x56d0a9[_0xd820('0x3d')](function(_0x5e8224,_0x411e5b){if(_0x5e8224['globalStatus']===_0x411e5b[_0xd820('0x32')]){if(_0x5e8224[_0xd820('0x32')]==='pause'){if(_0x474839===_0xd820('0x37')){return(_0x5e8224['pauseType']||'')<(_0x411e5b['pauseType']||'')||_0x5e8224[_0xd820('0x3a')][_0xd820('0x3e')]()>_0x411e5b[_0xd820('0x3a')][_0xd820('0x3e')]()?0x1:-0x1;}else{return(_0x5e8224[_0xd820('0x3f')]||'')<(_0x411e5b[_0xd820('0x3f')]||'')||_0x5e8224['fullname'][_0xd820('0x3e')]()>_0x411e5b[_0xd820('0x3a')][_0xd820('0x3e')]()?-0x1:0x1;}}else{if(_0x474839===_0xd820('0x37')){return _0x5e8224[_0xd820('0x3a')][_0xd820('0x3e')]()<_0x411e5b[_0xd820('0x3a')][_0xd820('0x3e')]()?0x1:-0x1;}else{return _0x5e8224[_0xd820('0x3a')][_0xd820('0x3e')]()<_0x411e5b[_0xd820('0x3a')][_0xd820('0x3e')]()?-0x1:0x1;}}}else{if(_0x474839===_0xd820('0x37')){return _0x5e8224[_0xd820('0x32')]<_0x411e5b[_0xd820('0x32')]?0x1:-0x1;}else{return _0x5e8224[_0xd820('0x32')]<_0x411e5b[_0xd820('0x32')]?-0x1:0x1;}}});return _0x188c29;}exports[_0xd820('0x40')]=sortAgentsByStatus;function filterAgentAttributes(_0x560ef0){var _0xef1d6f=[_0xd820('0x41'),_0xd820('0x42'),_0xd820('0x43'),_0xd820('0x44'),_0xd820('0x3f'),_0xd820('0x44'),'internal',_0xd820('0x45'),_0xd820('0x2f'),'openchannelPause','mailPause',_0xd820('0x6'),'whatsappPause',_0xd820('0x30'),_0xd820('0x7'),_0xd820('0x46'),_0xd820('0x47'),_0xd820('0x48'),_0xd820('0x49'),'whatsappCapacity',_0xd820('0x4a'),'chatCurrentCapacity',_0xd820('0x4b'),_0xd820('0x4c'),_0xd820('0x4d'),_0xd820('0x4e'),'faxCurrentCapacity',_0xd820('0x10'),_0xd820('0x4f'),_0xd820('0x12'),'smsStatus',_0xd820('0x14'),'faxStatus','voiceStatus',_0xd820('0x50'),_0xd820('0x51'),_0xd820('0x52'),'smsStatusTime',_0xd820('0x53'),_0xd820('0x54'),'voiceStatusTime',_0xd820('0x55'),'destconnectedlinenum',_0xd820('0x56'),_0xd820('0x57'),_0xd820('0x58'),'routealias'];var _0x1e1aae=[_0xd820('0x2f'),_0xd820('0x5'),'mailPause',_0xd820('0x6'),_0xd820('0x8'),'faxPause',_0xd820('0x7'),_0xd820('0x42')];var _0x54065d=_(_0x560ef0)[_0xd820('0x59')](_0x1e1aae)[_0xd820('0x5a')](_0xef1d6f)[_0xd820('0x28')]();return _0x54065d;}exports[_0xd820('0x5b')]=filterAgentAttributes;