ecdb840258d9571a3a7fc0d2376281a3141a0654
[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 _0xbbb8=['filterAgentAttributes','lodash','jayson/promise','http','client','mailPause','openchannelPause','voicePause','whatsappPause','filter','idle','unknown','unavailable','ringing','voiceStatus','every','chatStatus','faxStatus','mailStatus','openchannelStatus','smsStatus','whatsappStatus','then','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','catch','getRealtimeAgents','*pause','busy','isArray','startCase','Queue','map','getAgents','all','flatten','uniq','value','length','getAgentIdsByStatus','includes','findAll','name','fullname','chatPause','pauseType','find','globalStatus','fields','startsWith','DESC','ASC','internal','substring','indexOf','sort','pause','toLowerCase','sortAgentsByStatus','userpic','online','lastPauseAt','address','smsPause','chatCapacity','mailCapacity','smsCapacity','whatsappCapacity','chatCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','openchannelStatusTime','whatsappStatusTime','voiceStatusTime','destconnectedlinenum','routealias','faxPause','omit','pick'];(function(_0x45db4e,_0x26659e){var _0x2f714c=function(_0x4cabee){while(--_0x4cabee){_0x45db4e['push'](_0x45db4e['shift']());}};_0x2f714c(++_0x26659e);}(_0xbbb8,0x155));var _0x8bbb=function(_0x167a30,_0x5b0089){_0x167a30=_0x167a30-0x0;var _0x3b589a=_0xbbb8[_0x167a30];return _0x3b589a;};'use strict';var _=require(_0x8bbb('0x0'));var jayson=require(_0x8bbb('0x1'));var db=require('../../mysqldb')['db'];var amiClient=jayson['client'][_0x8bbb('0x2')]({'port':0x232a});var routingClient=jayson[_0x8bbb('0x3')][_0x8bbb('0x2')]({'port':0x232c});function isAgentPaused(_0x107410,_0x1a3e6a){var _0x37275b=[_0x107410['chatPause'],_0x107410['faxPause'],_0x107410[_0x8bbb('0x4')],_0x107410[_0x8bbb('0x5')],_0x107410['smsPause'],_0x107410[_0x8bbb('0x6')],_0x107410[_0x8bbb('0x7')]];if(!_0x1a3e6a)return _['every'](_0x37275b);var _0x48260a=_[_0x8bbb('0x8')](_0x37275b);return _0x48260a['length']>0x0&&_0x48260a['length']<_0x37275b['length']?!![]:![];}function isIdle(_0x34bb7f){return _0x34bb7f===_0x8bbb('0x9')||_0x34bb7f===_0x8bbb('0xa')||_0x34bb7f===_0x8bbb('0xb')||_0x34bb7f===_0x8bbb('0xc')||_['isNil'](_0x34bb7f);}function isAgentIdle(_0x2fdef3){if(_0x2fdef3[_0x8bbb('0xd')]!==_0x8bbb('0x9')&&_0x2fdef3['voicePause']){_0x2fdef3[_0x8bbb('0xd')]='pause';return![];}return _[_0x8bbb('0xe')]([_0x2fdef3[_0x8bbb('0xf')],_0x2fdef3[_0x8bbb('0x10')],_0x2fdef3[_0x8bbb('0x11')],_0x2fdef3[_0x8bbb('0x12')],_0x2fdef3[_0x8bbb('0x13')],_0x2fdef3[_0x8bbb('0xd')],_0x2fdef3[_0x8bbb('0x14')]],isIdle);}function getRealtimeAgents(){return amiClient['request']('Agents',{})[_0x8bbb('0x15')](function(_0x5d3690){if(_0x5d3690[_0x8bbb('0x16')]){throw new Error(_0x8bbb('0x17'));}var _0xec1154=_0x5d3690[_0x8bbb('0x18')];return routingClient[_0x8bbb('0x19')](_0x8bbb('0x1a'),{})[_0x8bbb('0x15')](function(_0x2e993d){if(_0x2e993d[_0x8bbb('0x16')]){throw new Error(_0x8bbb('0x1b'));}var _0xd31cee=_0x2e993d[_0x8bbb('0x18')];return _[_0x8bbb('0x1c')]({},_0xec1154,_0xd31cee);});})[_0x8bbb('0x1d')](function(_0x3cc9b0){throw _0x3cc9b0;});}exports[_0x8bbb('0x1e')]=getRealtimeAgents;function getAgentStatus(_0x4988df){var _0x175f3a='unknown';if(isAgentPaused(_0x4988df))_0x175f3a='pause';else if(isAgentPaused(_0x4988df,!![]))_0x175f3a=_0x8bbb('0x1f');else if(isAgentIdle(_0x4988df))_0x175f3a='idle';else _0x175f3a=_0x8bbb('0x20');return _0x175f3a;}exports['getAgentStatus']=getAgentStatus;function getAgentIdsByQueues(_0x375275,_0x2b4cdd){var _0x213cef=_[_0x8bbb('0x21')](_0x375275)?_0x375275:[_0x375275];var _0x557333=_[_0x8bbb('0x22')](_0x2b4cdd)+_0x8bbb('0x23');var _0x233792=_[_0x8bbb('0x24')](_0x213cef,function(_0x44a80b){return db[_0x557333]['findOne']({'where':{'id':_0x44a80b}})['then'](function(_0x1b2c80){if(!_0x1b2c80)return[];return _0x1b2c80[_0x8bbb('0x25')]({'attributes':['id'],'raw':!![]});});});return Promise[_0x8bbb('0x26')](_0x233792)[_0x8bbb('0x15')](function(_0x4d52b7){var _0x46943e=_(_0x4d52b7)[_0x8bbb('0x27')]()[_0x8bbb('0x24')]('id')[_0x8bbb('0x28')]()[_0x8bbb('0x29')]();return _0x46943e;});}exports['getAgentIdsByQueues']=getAgentIdsByQueues;function getAgentIdsByStatus(_0x1a8cdf,_0x4a29d3,_0x85ba75){try{if(_0x4a29d3[_0x8bbb('0x2a')]>0x0){_0x1a8cdf=_0x1a8cdf[_0x8bbb('0x8')](function(_0x3fc1cc){return _0x4a29d3['includes'](_0x3fc1cc['id']);});}var _0x211126=_0x1a8cdf['filter'](function(_0x45a25f){var _0x1a6e2e=_0x8bbb('0x20');if(isAgentIdle(_0x45a25f)){_0x1a6e2e=_0x8bbb('0x9');}return _0x1a6e2e===_0x85ba75;});return _[_0x8bbb('0x24')](_0x211126,'id');}catch(_0x524cef){throw _0x524cef;}}exports[_0x8bbb('0x2b')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x2876d0,_0x481d34,_0x511e49){return Promise['resolve']()['then'](function(){if(_0x481d34[_0x8bbb('0x2a')]>0x0){_0x2876d0=_0x2876d0[_0x8bbb('0x8')](function(_0x10017c){return _0x481d34[_0x8bbb('0x2c')](_0x10017c['id']);});}return _0x2876d0;})[_0x8bbb('0x15')](function(){return db['User'][_0x8bbb('0x2d')]({'attributes':['id',_0x8bbb('0x2e'),_0x8bbb('0x2f'),_0x8bbb('0x30'),'faxPause',_0x8bbb('0x4'),_0x8bbb('0x5'),'smsPause','voicePause',_0x8bbb('0x7'),_0x8bbb('0x31')],'where':{'id':{'$in':_[_0x8bbb('0x24')](_0x2876d0,'id')}},'raw':!![]});})[_0x8bbb('0x15')](function(_0x4030a6){return _0x4030a6['map'](function(_0x34508f){var _0x9601c6=_[_0x8bbb('0x32')](_0x2876d0,['id',_0x34508f['id']]);var _0xfbcbe6=filterAgentAttributes(_0x9601c6);_[_0x8bbb('0x1c')](_0x34508f,_0xfbcbe6);_0x34508f[_0x8bbb('0x33')]=getAgentStatus(_0x34508f);return _0x34508f;});})[_0x8bbb('0x15')](function(_0x51dcf0){var _0x3a6e12=sortAgentsByStatus(_0x51dcf0,_0x511e49);return _[_0x8bbb('0x24')](_0x3a6e12,'id');})[_0x8bbb('0x1d')](function(_0x1c3fc6){throw _0x1c3fc6;});}exports['getSortedAgentsIdsByStatus']=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0xae1b91){var _0x2e8d2e={'fields':[],'order':null};var _0x512f2b=_0xae1b91['split'](',');_0x2e8d2e[_0x8bbb('0x34')]=_[_0x8bbb('0x8')](_0x512f2b,function(_0x5ca3c5){if(!_0x5ca3c5[_0x8bbb('0x2c')]('globalStatus')){return!![];}_0x2e8d2e['order']=_[_0x8bbb('0x35')](_0x5ca3c5,'-')?_0x8bbb('0x36'):_0x8bbb('0x37');return![];});return _0x2e8d2e;}exports['getUpdatedSortOptions']=getUpdatedSortOptions;function validateSortParameter(_0x296690){if(_0x296690[_0x8bbb('0x2c')]('fullname')&&!_0x296690[_0x8bbb('0x2c')](_0x8bbb('0x38'))){var _0x794a0a=_0x296690[_0x8bbb('0x39')](0x0,_0x296690[_0x8bbb('0x3a')](_0x8bbb('0x2f')));_0x296690+=','+_0x794a0a+_0x8bbb('0x38');}return _0x296690;}exports['validateSortParameter']=validateSortParameter;function sortAgentsByStatus(_0x512258,_0x46bf3e){var _0x2c6624=_0x512258[_0x8bbb('0x3b')](function(_0x3f1126,_0x398a40){if(_0x3f1126[_0x8bbb('0x33')]===_0x398a40[_0x8bbb('0x33')]){if(_0x3f1126[_0x8bbb('0x33')]===_0x8bbb('0x3c')){if(_0x46bf3e===_0x8bbb('0x36')){return(_0x3f1126[_0x8bbb('0x31')]||'')<(_0x398a40[_0x8bbb('0x31')]||'')||_0x3f1126['fullname'][_0x8bbb('0x3d')]()>_0x398a40['fullname'][_0x8bbb('0x3d')]()?0x1:-0x1;}else{return(_0x3f1126['pauseType']||'')<(_0x398a40[_0x8bbb('0x31')]||'')||_0x3f1126[_0x8bbb('0x2f')][_0x8bbb('0x3d')]()>_0x398a40[_0x8bbb('0x2f')]['toLowerCase']()?-0x1:0x1;}}else{if(_0x46bf3e===_0x8bbb('0x36')){return _0x3f1126[_0x8bbb('0x2f')][_0x8bbb('0x3d')]()<_0x398a40[_0x8bbb('0x2f')]['toLowerCase']()?0x1:-0x1;}else{return _0x3f1126[_0x8bbb('0x2f')][_0x8bbb('0x3d')]()<_0x398a40[_0x8bbb('0x2f')][_0x8bbb('0x3d')]()?-0x1:0x1;}}}else{if(_0x46bf3e==='DESC'){return _0x3f1126[_0x8bbb('0x33')]<_0x398a40['globalStatus']?0x1:-0x1;}else{return _0x3f1126['globalStatus']<_0x398a40[_0x8bbb('0x33')]?-0x1:0x1;}}});return _0x2c6624;}exports[_0x8bbb('0x3e')]=sortAgentsByStatus;function filterAgentAttributes(_0x2291bc){var _0x445c9b=[_0x8bbb('0x3f'),_0x8bbb('0x40'),'lastLoginAt','lastPauseAt',_0x8bbb('0x31'),_0x8bbb('0x41'),_0x8bbb('0x38'),_0x8bbb('0x42'),_0x8bbb('0x30'),'openchannelPause',_0x8bbb('0x4'),_0x8bbb('0x43'),_0x8bbb('0x7'),'faxPause',_0x8bbb('0x6'),_0x8bbb('0x44'),'openchannelCapacity',_0x8bbb('0x45'),_0x8bbb('0x46'),_0x8bbb('0x47'),'faxCapacity',_0x8bbb('0x48'),'openchannelCurrentCapacity','mailCurrentCapacity',_0x8bbb('0x49'),_0x8bbb('0x4a'),_0x8bbb('0x4b'),_0x8bbb('0xf'),_0x8bbb('0x12'),'mailStatus','smsStatus',_0x8bbb('0x14'),_0x8bbb('0x10'),_0x8bbb('0xd'),'chatStatusTime',_0x8bbb('0x4c'),'mailStatusTime','smsStatusTime',_0x8bbb('0x4d'),'faxStatusTime',_0x8bbb('0x4e'),'queue',_0x8bbb('0x4f'),'screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording',_0x8bbb('0x50')];var _0xabe6ba=[_0x8bbb('0x30'),'openchannelPause','mailPause',_0x8bbb('0x43'),_0x8bbb('0x7'),_0x8bbb('0x51'),_0x8bbb('0x6'),_0x8bbb('0x40')];var _0x2414b5=_(_0x2291bc)[_0x8bbb('0x52')](_0xabe6ba)[_0x8bbb('0x53')](_0x445c9b)[_0x8bbb('0x29')]();return _0x2414b5;}exports[_0x8bbb('0x54')]=filterAgentAttributes;