6623b4a0814d6ec1059051c538f1df1c68c21eac
[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 _0xa880=['catch','*pause','busy','getAgentStatus','isArray','Queue','findOne','getAgents','getAgentIdsByQueues','length','map','getAgentIdsByStatus','includes','User','findAll','name','fullname','faxPause','whatsappPause','pauseType','find','globalStatus','split','fields','order','DESC','ASC','getUpdatedSortOptions','fullname,internal','internal','indexOf','sort','toLowerCase','sortAgentsByStatus','userpic','online','lastPauseAt','address','chatCapacity','openchannelCapacity','mailCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','openchannelCurrentCapacity','smsCurrentCapacity','mailStatus','chatStatusTime','openchannelStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','faxStatusTime','voiceStatusTime','queue','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','pick','filterAgentAttributes','role','lastLoginAt','whatsappStatus','faxCurrentCapacity','whatsappCurrentCapacity','destconnectedlinenum','onhold','screenrecording','getRealtimeAgentsQueryFields','lodash','jayson/promise','../../mysqldb','client','http','chatPause','mailPause','openchannelPause','smsPause','voicePause','every','filter','idle','unknown','unavailable','ringing','isNil','voiceStatus','pause','chatStatus','faxStatus','openchannelStatus','smsStatus','request','Agents','then','error','result','merge'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0xa880,0x106));var _0x0a88=function(_0x2b12b0,_0x4480ce){_0x2b12b0=_0x2b12b0-0x0;var _0x221d21=_0xa880[_0x2b12b0];return _0x221d21;};'use strict';var _=require(_0x0a88('0x0'));var jayson=require(_0x0a88('0x1'));var db=require(_0x0a88('0x2'))['db'];var amiClient=jayson[_0x0a88('0x3')][_0x0a88('0x4')]({'port':0x232a});var routingClient=jayson[_0x0a88('0x3')][_0x0a88('0x4')]({'port':0x232c});function isAgentPaused(_0x321ae4,_0x552e9d){var _0x4091c4=[_0x321ae4[_0x0a88('0x5')],_0x321ae4['faxPause'],_0x321ae4[_0x0a88('0x6')],_0x321ae4[_0x0a88('0x7')],_0x321ae4[_0x0a88('0x8')],_0x321ae4[_0x0a88('0x9')],_0x321ae4['whatsappPause']];if(!_0x552e9d)return _[_0x0a88('0xa')](_0x4091c4);var _0x62b055=_[_0x0a88('0xb')](_0x4091c4);return _0x62b055['length']>0x0&&_0x62b055['length']<_0x4091c4['length']?!![]:![];}function isIdle(_0x317042){return _0x317042===_0x0a88('0xc')||_0x317042===_0x0a88('0xd')||_0x317042===_0x0a88('0xe')||_0x317042===_0x0a88('0xf')||_[_0x0a88('0x10')](_0x317042);}function isAgentIdle(_0x3a53be){if(_0x3a53be[_0x0a88('0x11')]!==_0x0a88('0xc')&&_0x3a53be[_0x0a88('0x9')]){_0x3a53be['voiceStatus']=_0x0a88('0x12');return![];}return _[_0x0a88('0xa')]([_0x3a53be[_0x0a88('0x13')],_0x3a53be[_0x0a88('0x14')],_0x3a53be['mailStatus'],_0x3a53be[_0x0a88('0x15')],_0x3a53be[_0x0a88('0x16')],_0x3a53be[_0x0a88('0x11')],_0x3a53be['whatsappStatus']],isIdle);}function getRealtimeAgents(){return amiClient[_0x0a88('0x17')](_0x0a88('0x18'),{})[_0x0a88('0x19')](function(_0x371834){if(_0x371834[_0x0a88('0x1a')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');}var _0x42e3e8=_0x371834[_0x0a88('0x1b')];return routingClient[_0x0a88('0x17')]('Agents',{})[_0x0a88('0x19')](function(_0x3da111){if(_0x3da111[_0x0a88('0x1a')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');}var _0xce5d6e=_0x3da111[_0x0a88('0x1b')];return _[_0x0a88('0x1c')]({},_0x42e3e8,_0xce5d6e);});})[_0x0a88('0x1d')](function(_0x239ec7){throw _0x239ec7;});}exports['getRealtimeAgents']=getRealtimeAgents;function getAgentStatus(_0x32593e){var _0x238af8=_0x0a88('0xd');if(isAgentPaused(_0x32593e))_0x238af8=_0x0a88('0x12');else if(isAgentPaused(_0x32593e,!![]))_0x238af8=_0x0a88('0x1e');else if(isAgentIdle(_0x32593e))_0x238af8=_0x0a88('0xc');else _0x238af8=_0x0a88('0x1f');return _0x238af8;}exports[_0x0a88('0x20')]=getAgentStatus;function getAgentIdsByQueues(_0x412bde,_0x3f7ec0){var _0xf9fe78=_[_0x0a88('0x21')](_0x412bde)?_0x412bde:[_0x412bde];var _0xe59c31=_['startCase'](_0x3f7ec0)+_0x0a88('0x22');var _0x3a296f=_['map'](_0xf9fe78,function(_0x423e28){return db[_0xe59c31][_0x0a88('0x23')]({'where':{'id':_0x423e28}})[_0x0a88('0x19')](function(_0x43c848){if(!_0x43c848)return[];return _0x43c848[_0x0a88('0x24')]({'attributes':['id'],'raw':!![]});});});return Promise['all'](_0x3a296f)['then'](function(_0x177b73){var _0x4f5add=_(_0x177b73)['flatten']()['map']('id')['uniq']()['value']();return _0x4f5add;});}exports[_0x0a88('0x25')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x330ed7,_0x5cee64,_0x21e4d4){try{if(_0x5cee64[_0x0a88('0x26')]>0x0){_0x330ed7=_0x330ed7['filter'](function(_0xf29ba5){return _0x5cee64['includes'](_0xf29ba5['id']);});}var _0x4d8044=_0x330ed7[_0x0a88('0xb')](function(_0x5656b0){var _0x342713='busy';if(isAgentIdle(_0x5656b0)){_0x342713='idle';}return _0x342713===_0x21e4d4;});return _[_0x0a88('0x27')](_0x4d8044,'id');}catch(_0x28a8f3){throw _0x28a8f3;}}exports[_0x0a88('0x28')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x6cdf8,_0x310844,_0x41f517){return Promise['resolve']()['then'](function(){if(_0x310844[_0x0a88('0x26')]>0x0){_0x6cdf8=_0x6cdf8[_0x0a88('0xb')](function(_0x44e449){return _0x310844[_0x0a88('0x29')](_0x44e449['id']);});}return _0x6cdf8;})[_0x0a88('0x19')](function(){return db[_0x0a88('0x2a')][_0x0a88('0x2b')]({'attributes':['id',_0x0a88('0x2c'),_0x0a88('0x2d'),_0x0a88('0x5'),_0x0a88('0x2e'),'mailPause',_0x0a88('0x7'),'smsPause',_0x0a88('0x9'),_0x0a88('0x2f'),_0x0a88('0x30')],'where':{'id':{'$in':_[_0x0a88('0x27')](_0x6cdf8,'id')}},'raw':!![]});})[_0x0a88('0x19')](function(_0x4653ef){return _0x4653ef[_0x0a88('0x27')](function(_0x9b3eb6){var _0x36a94f=_[_0x0a88('0x31')](_0x6cdf8,['id',_0x9b3eb6['id']]);var _0x57233a=filterAgentAttributes(_0x36a94f);_[_0x0a88('0x1c')](_0x9b3eb6,_0x57233a);_0x9b3eb6[_0x0a88('0x32')]=getAgentStatus(_0x9b3eb6);return _0x9b3eb6;});})[_0x0a88('0x19')](function(_0x440cc2){var _0x376514=sortAgentsByStatus(_0x440cc2,_0x41f517);return _['map'](_0x376514,'id');})[_0x0a88('0x1d')](function(_0x3b2ae4){throw _0x3b2ae4;});}exports['getSortedAgentsIdsByStatus']=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x4223ff){var _0x581fb4={'fields':[],'order':null};var _0x1e01bf=_0x4223ff[_0x0a88('0x33')](',');_0x581fb4[_0x0a88('0x34')]=_[_0x0a88('0xb')](_0x1e01bf,function(_0x4454be){if(!_0x4454be[_0x0a88('0x29')](_0x0a88('0x32'))){return!![];}_0x581fb4[_0x0a88('0x35')]=_['startsWith'](_0x4454be,'-')?_0x0a88('0x36'):_0x0a88('0x37');return![];});return _0x581fb4;}exports[_0x0a88('0x38')]=getUpdatedSortOptions;function validateSortParameter(_0x5bdc7b){if(!_0x5bdc7b){_0x5bdc7b=_0x0a88('0x39');}if(_0x5bdc7b[_0x0a88('0x29')](_0x0a88('0x2d'))&&!_0x5bdc7b[_0x0a88('0x29')](_0x0a88('0x3a'))){var _0x228fa7=_0x5bdc7b['substring'](0x0,_0x5bdc7b[_0x0a88('0x3b')]('fullname'));_0x5bdc7b+=','+_0x228fa7+_0x0a88('0x3a');}return _0x5bdc7b;}exports['validateSortParameter']=validateSortParameter;function sortAgentsByStatus(_0x7f49e5,_0x2ae97d){var _0x35f3a1=_0x7f49e5[_0x0a88('0x3c')](function(_0x1c0f7c,_0x1dcba2){if(_0x1c0f7c[_0x0a88('0x32')]===_0x1dcba2[_0x0a88('0x32')]){if(_0x1c0f7c[_0x0a88('0x32')]===_0x0a88('0x12')){if(_0x2ae97d===_0x0a88('0x36')){return(_0x1c0f7c[_0x0a88('0x30')]||'')<(_0x1dcba2[_0x0a88('0x30')]||'')||_0x1c0f7c[_0x0a88('0x2d')][_0x0a88('0x3d')]()>_0x1dcba2['fullname'][_0x0a88('0x3d')]()?0x1:-0x1;}else{return(_0x1c0f7c[_0x0a88('0x30')]||'')<(_0x1dcba2['pauseType']||'')||_0x1c0f7c[_0x0a88('0x2d')][_0x0a88('0x3d')]()>_0x1dcba2['fullname']['toLowerCase']()?-0x1:0x1;}}else{if(_0x2ae97d==='DESC'){return _0x1c0f7c[_0x0a88('0x2d')][_0x0a88('0x3d')]()<_0x1dcba2[_0x0a88('0x2d')]['toLowerCase']()?0x1:-0x1;}else{return _0x1c0f7c[_0x0a88('0x2d')][_0x0a88('0x3d')]()<_0x1dcba2[_0x0a88('0x2d')]['toLowerCase']()?-0x1:0x1;}}}else{if(_0x2ae97d==='DESC'){return _0x1c0f7c[_0x0a88('0x32')]<_0x1dcba2[_0x0a88('0x32')]?0x1:-0x1;}else{return _0x1c0f7c[_0x0a88('0x32')]<_0x1dcba2[_0x0a88('0x32')]?-0x1:0x1;}}});return _0x35f3a1;}exports[_0x0a88('0x3e')]=sortAgentsByStatus;function filterAgentAttributes(_0x3ee008){var _0x1af4af=[_0x0a88('0x3f'),_0x0a88('0x40'),'lastLoginAt',_0x0a88('0x41'),_0x0a88('0x30'),_0x0a88('0x41'),_0x0a88('0x3a'),_0x0a88('0x42'),'chatPause','openchannelPause',_0x0a88('0x6'),_0x0a88('0x8'),_0x0a88('0x2f'),'faxPause',_0x0a88('0x9'),_0x0a88('0x43'),_0x0a88('0x44'),_0x0a88('0x45'),'smsCapacity',_0x0a88('0x46'),_0x0a88('0x47'),_0x0a88('0x48'),_0x0a88('0x49'),'mailCurrentCapacity',_0x0a88('0x4a'),'whatsappCurrentCapacity','faxCurrentCapacity','chatStatus',_0x0a88('0x15'),_0x0a88('0x4b'),_0x0a88('0x16'),'whatsappStatus','faxStatus',_0x0a88('0x11'),_0x0a88('0x4c'),_0x0a88('0x4d'),_0x0a88('0x4e'),_0x0a88('0x4f'),_0x0a88('0x50'),_0x0a88('0x51'),_0x0a88('0x52'),_0x0a88('0x53'),'destconnectedlinenum','screenrecording',_0x0a88('0x54'),_0x0a88('0x55')];var _0x5a3269=[_0x0a88('0x5'),_0x0a88('0x7'),'mailPause',_0x0a88('0x8'),_0x0a88('0x2f'),_0x0a88('0x2e'),_0x0a88('0x9'),_0x0a88('0x40')];var _0x2e90e5=_(_0x3ee008)['omit'](_0x5a3269)[_0x0a88('0x56')](_0x1af4af)['value']();return _0x2e90e5;}exports[_0x0a88('0x57')]=filterAgentAttributes;function getRealtimeAgentsQueryFields(){return['id',_0x0a88('0x2c'),'fullname',_0x0a88('0x58'),'internal',_0x0a88('0x40'),_0x0a88('0x32'),_0x0a88('0x3f'),_0x0a88('0x59'),'pauseType','lastPauseAt',_0x0a88('0x2e'),_0x0a88('0x5'),_0x0a88('0x6'),_0x0a88('0x7'),'smsPause','voicePause',_0x0a88('0x2f'),'chatStatus',_0x0a88('0x14'),_0x0a88('0x4b'),_0x0a88('0x15'),'smsStatus',_0x0a88('0x11'),_0x0a88('0x5a'),_0x0a88('0x4c'),_0x0a88('0x51'),_0x0a88('0x4e'),_0x0a88('0x4d'),_0x0a88('0x4f'),_0x0a88('0x52'),_0x0a88('0x50'),_0x0a88('0x43'),_0x0a88('0x47'),_0x0a88('0x45'),'openchannelCapacity','smsCapacity',_0x0a88('0x46'),_0x0a88('0x48'),_0x0a88('0x5b'),'mailCurrentCapacity',_0x0a88('0x49'),_0x0a88('0x4a'),_0x0a88('0x5c'),'phoneBarEnableScreenRecordingByAgent',_0x0a88('0x55'),_0x0a88('0x5d'),_0x0a88('0x5e'),_0x0a88('0x53'),_0x0a88('0x5f')];}exports[_0x0a88('0x60')]=getRealtimeAgentsQueryFields;