4a7034395dc10066faa4efee4b893354e6a2dcc9
[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 _0x4d03=['Agents','then','error','result','merge','catch','getRealtimeAgents','*pause','busy','getAgentStatus','isArray','Queue','map','getAgents','all','flatten','value','getAgentIdsByQueues','includes','getAgentIdsByStatus','User','findAll','name','fullname','pauseType','find','globalStatus','split','fields','order','startsWith','ASC','getUpdatedSortOptions','internal','indexOf','sort','DESC','toLowerCase','sortAgentsByStatus','userpic','lastLoginAt','lastPauseAt','address','chatCapacity','mailCapacity','smsCapacity','whatsappCapacity','faxCapacity','openchannelCurrentCapacity','mailCurrentCapacity','faxCurrentCapacity','faxStatus','chatStatusTime','openchannelStatusTime','smsStatusTime','whatsappStatusTime','faxStatusTime','queue','destconnectedlinenum','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','routealias','pick','lodash','../../mysqldb','client','http','chatPause','faxPause','mailPause','openchannelPause','smsPause','whatsappPause','every','filter','length','idle','unknown','unavailable','ringing','isNil','voiceStatus','voicePause','pause','chatStatus','mailStatus','openchannelStatus','smsStatus','whatsappStatus','request'];(function(_0x37756b,_0x24db76){var _0x46efec=function(_0x319807){while(--_0x319807){_0x37756b['push'](_0x37756b['shift']());}};_0x46efec(++_0x24db76);}(_0x4d03,0x99));var _0x34d0=function(_0xf8a129,_0x1b4a7b){_0xf8a129=_0xf8a129-0x0;var _0x4ca873=_0x4d03[_0xf8a129];return _0x4ca873;};'use strict';var _=require(_0x34d0('0x0'));var jayson=require('jayson/promise');var db=require(_0x34d0('0x1'))['db'];var amiClient=jayson[_0x34d0('0x2')][_0x34d0('0x3')]({'port':0x232a});var routingClient=jayson[_0x34d0('0x2')][_0x34d0('0x3')]({'port':0x232c});function isAgentPaused(_0x23c118,_0x515af2){var _0x1fdc71=[_0x23c118[_0x34d0('0x4')],_0x23c118[_0x34d0('0x5')],_0x23c118[_0x34d0('0x6')],_0x23c118[_0x34d0('0x7')],_0x23c118[_0x34d0('0x8')],_0x23c118['voicePause'],_0x23c118[_0x34d0('0x9')]];if(!_0x515af2)return _[_0x34d0('0xa')](_0x1fdc71);var _0xb22129=_[_0x34d0('0xb')](_0x1fdc71);return _0xb22129[_0x34d0('0xc')]>0x0&&_0xb22129['length']<_0x1fdc71['length']?!![]:![];}function isIdle(_0x5a7ad6){return _0x5a7ad6===_0x34d0('0xd')||_0x5a7ad6===_0x34d0('0xe')||_0x5a7ad6===_0x34d0('0xf')||_0x5a7ad6===_0x34d0('0x10')||_[_0x34d0('0x11')](_0x5a7ad6);}function isAgentIdle(_0x1acf3c){if(_0x1acf3c[_0x34d0('0x12')]!==_0x34d0('0xd')&&_0x1acf3c[_0x34d0('0x13')]){_0x1acf3c[_0x34d0('0x12')]=_0x34d0('0x14');return![];}return _[_0x34d0('0xa')]([_0x1acf3c[_0x34d0('0x15')],_0x1acf3c['faxStatus'],_0x1acf3c[_0x34d0('0x16')],_0x1acf3c[_0x34d0('0x17')],_0x1acf3c[_0x34d0('0x18')],_0x1acf3c[_0x34d0('0x12')],_0x1acf3c[_0x34d0('0x19')]],isIdle);}function getRealtimeAgents(){return amiClient[_0x34d0('0x1a')](_0x34d0('0x1b'),{})[_0x34d0('0x1c')](function(_0x84d2c8){if(_0x84d2c8[_0x34d0('0x1d')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');}var _0x18dfde=_0x84d2c8[_0x34d0('0x1e')];return routingClient[_0x34d0('0x1a')](_0x34d0('0x1b'),{})[_0x34d0('0x1c')](function(_0x28f73b){if(_0x28f73b[_0x34d0('0x1d')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');}var _0x18c94c=_0x28f73b['result'];return _[_0x34d0('0x1f')]({},_0x18dfde,_0x18c94c);});})[_0x34d0('0x20')](function(_0x5edb10){throw _0x5edb10;});}exports[_0x34d0('0x21')]=getRealtimeAgents;function getAgentStatus(_0x3ae8c7){var _0x4bc80b='unknown';if(isAgentPaused(_0x3ae8c7))_0x4bc80b=_0x34d0('0x14');else if(isAgentPaused(_0x3ae8c7,!![]))_0x4bc80b=_0x34d0('0x22');else if(isAgentIdle(_0x3ae8c7))_0x4bc80b=_0x34d0('0xd');else _0x4bc80b=_0x34d0('0x23');return _0x4bc80b;}exports[_0x34d0('0x24')]=getAgentStatus;function getAgentIdsByQueues(_0xadb5f7,_0x6cfef8){var _0x19acb7=_[_0x34d0('0x25')](_0xadb5f7)?_0xadb5f7:[_0xadb5f7];var _0x1bf379=_['startCase'](_0x6cfef8)+_0x34d0('0x26');var _0xc7fd91=_[_0x34d0('0x27')](_0x19acb7,function(_0x21bff4){return db[_0x1bf379]['findOne']({'where':{'id':_0x21bff4}})['then'](function(_0x52b7bd){if(!_0x52b7bd)return[];return _0x52b7bd[_0x34d0('0x28')]({'attributes':['id'],'raw':!![]});});});return Promise[_0x34d0('0x29')](_0xc7fd91)[_0x34d0('0x1c')](function(_0x55ac03){var _0x434188=_(_0x55ac03)[_0x34d0('0x2a')]()[_0x34d0('0x27')]('id')['uniq']()[_0x34d0('0x2b')]();return _0x434188;});}exports[_0x34d0('0x2c')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x10bc8e,_0x58ec21,_0x13a7c5){try{if(_0x58ec21[_0x34d0('0xc')]>0x0){_0x10bc8e=_0x10bc8e[_0x34d0('0xb')](function(_0x33e524){return _0x58ec21[_0x34d0('0x2d')](_0x33e524['id']);});}var _0x415ba6=_0x10bc8e['filter'](function(_0x22de2f){var _0x589631=_0x34d0('0x23');if(isAgentIdle(_0x22de2f)){_0x589631='idle';}return _0x589631===_0x13a7c5;});return _['map'](_0x415ba6,'id');}catch(_0x36d838){throw _0x36d838;}}exports[_0x34d0('0x2e')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x2978c2,_0x4bd7e3,_0x28568a){return Promise['resolve']()[_0x34d0('0x1c')](function(){if(_0x4bd7e3[_0x34d0('0xc')]>0x0){_0x2978c2=_0x2978c2[_0x34d0('0xb')](function(_0x15c172){return _0x4bd7e3[_0x34d0('0x2d')](_0x15c172['id']);});}return _0x2978c2;})[_0x34d0('0x1c')](function(){return db[_0x34d0('0x2f')][_0x34d0('0x30')]({'attributes':['id',_0x34d0('0x31'),_0x34d0('0x32'),'chatPause',_0x34d0('0x5'),_0x34d0('0x6'),_0x34d0('0x7'),_0x34d0('0x8'),_0x34d0('0x13'),'whatsappPause',_0x34d0('0x33')],'where':{'id':{'$in':_['map'](_0x2978c2,'id')}},'raw':!![]});})[_0x34d0('0x1c')](function(_0x24bc5a){return _0x24bc5a[_0x34d0('0x27')](function(_0x2ab2b0){var _0x4c7052=_[_0x34d0('0x34')](_0x2978c2,['id',_0x2ab2b0['id']]);var _0x55f6b9=filterAgentAttributes(_0x4c7052);_[_0x34d0('0x1f')](_0x2ab2b0,_0x55f6b9);_0x2ab2b0[_0x34d0('0x35')]=getAgentStatus(_0x2ab2b0);return _0x2ab2b0;});})[_0x34d0('0x1c')](function(_0x4e309e){var _0x1070a0=sortAgentsByStatus(_0x4e309e,_0x28568a);return _[_0x34d0('0x27')](_0x1070a0,'id');})['catch'](function(_0x3664ac){throw _0x3664ac;});}exports['getSortedAgentsIdsByStatus']=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x546b12){var _0x102686={'fields':[],'order':null};var _0x49195d=_0x546b12[_0x34d0('0x36')](',');_0x102686[_0x34d0('0x37')]=_['filter'](_0x49195d,function(_0x5a5d72){if(!_0x5a5d72[_0x34d0('0x2d')](_0x34d0('0x35'))){return!![];}_0x102686[_0x34d0('0x38')]=_[_0x34d0('0x39')](_0x5a5d72,'-')?'DESC':_0x34d0('0x3a');return![];});return _0x102686;}exports[_0x34d0('0x3b')]=getUpdatedSortOptions;function validateSortParameter(_0x59d862){if(_0x59d862[_0x34d0('0x2d')](_0x34d0('0x32'))&&!_0x59d862[_0x34d0('0x2d')](_0x34d0('0x3c'))){var _0x5824fe=_0x59d862['substring'](0x0,_0x59d862[_0x34d0('0x3d')](_0x34d0('0x32')));_0x59d862+=','+_0x5824fe+_0x34d0('0x3c');}return _0x59d862;}exports['validateSortParameter']=validateSortParameter;function sortAgentsByStatus(_0x4f9406,_0x22cca9){var _0x43a6c3=_0x4f9406[_0x34d0('0x3e')](function(_0x10c4c5,_0xe0f27a){if(_0x10c4c5['globalStatus']===_0xe0f27a[_0x34d0('0x35')]){if(_0x10c4c5[_0x34d0('0x35')]===_0x34d0('0x14')){if(_0x22cca9===_0x34d0('0x3f')){return(_0x10c4c5[_0x34d0('0x33')]||'')<(_0xe0f27a[_0x34d0('0x33')]||'')||_0x10c4c5['fullname'][_0x34d0('0x40')]()>_0xe0f27a[_0x34d0('0x32')][_0x34d0('0x40')]()?0x1:-0x1;}else{return(_0x10c4c5['pauseType']||'')<(_0xe0f27a[_0x34d0('0x33')]||'')||_0x10c4c5['fullname'][_0x34d0('0x40')]()>_0xe0f27a[_0x34d0('0x32')][_0x34d0('0x40')]()?-0x1:0x1;}}else{if(_0x22cca9==='DESC'){return _0x10c4c5[_0x34d0('0x32')][_0x34d0('0x40')]()<_0xe0f27a[_0x34d0('0x32')]['toLowerCase']()?0x1:-0x1;}else{return _0x10c4c5[_0x34d0('0x32')][_0x34d0('0x40')]()<_0xe0f27a['fullname'][_0x34d0('0x40')]()?-0x1:0x1;}}}else{if(_0x22cca9===_0x34d0('0x3f')){return _0x10c4c5['globalStatus']<_0xe0f27a[_0x34d0('0x35')]?0x1:-0x1;}else{return _0x10c4c5[_0x34d0('0x35')]<_0xe0f27a[_0x34d0('0x35')]?-0x1:0x1;}}});return _0x43a6c3;}exports[_0x34d0('0x41')]=sortAgentsByStatus;function filterAgentAttributes(_0xbcc3e7){var _0x587571=[_0x34d0('0x42'),'online',_0x34d0('0x43'),'lastPauseAt',_0x34d0('0x33'),_0x34d0('0x44'),'internal',_0x34d0('0x45'),'chatPause',_0x34d0('0x7'),_0x34d0('0x6'),_0x34d0('0x8'),_0x34d0('0x9'),_0x34d0('0x5'),_0x34d0('0x13'),_0x34d0('0x46'),'openchannelCapacity',_0x34d0('0x47'),_0x34d0('0x48'),_0x34d0('0x49'),_0x34d0('0x4a'),'chatCurrentCapacity',_0x34d0('0x4b'),_0x34d0('0x4c'),'smsCurrentCapacity','whatsappCurrentCapacity',_0x34d0('0x4d'),_0x34d0('0x15'),_0x34d0('0x17'),_0x34d0('0x16'),_0x34d0('0x18'),_0x34d0('0x19'),_0x34d0('0x4e'),'voiceStatus',_0x34d0('0x4f'),_0x34d0('0x50'),'mailStatusTime',_0x34d0('0x51'),_0x34d0('0x52'),_0x34d0('0x53'),'voiceStatusTime',_0x34d0('0x54'),_0x34d0('0x55'),'screenrecording',_0x34d0('0x56'),_0x34d0('0x57'),_0x34d0('0x58')];var _0x6ecb89=[_0x34d0('0x4'),_0x34d0('0x7'),_0x34d0('0x6'),_0x34d0('0x8'),_0x34d0('0x9'),_0x34d0('0x5'),_0x34d0('0x13'),'online'];var _0x30065a=_(_0xbcc3e7)['omit'](_0x6ecb89)[_0x34d0('0x59')](_0x587571)[_0x34d0('0x2b')]();return _0x30065a;}exports['filterAgentAttributes']=filterAgentAttributes;