Built motion from commit 9d0783e6.|2.6.13
[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 _0xea7d=['openchannelPause','whatsappPause','pauseType','find','merge','getSortedAgentsIdsByStatus','split','globalStatus','order','startsWith','DESC','ASC','getUpdatedSortOptions','includes','internal','substring','validateSortParameter','sort','toLowerCase','sortAgentsByStatus','userpic','online','lastLoginAt','lastPauseAt','address','openchannelCapacity','mailCapacity','smsCapacity','faxCapacity','chatCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','chatStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','faxStatusTime','voiceStatusTime','queue','destconnectedlinenum','screenrecording','phoneBarEnableAutomaticScreenRecording','omit','filterAgentAttributes','lodash','../../mysqldb','client','chatPause','faxPause','smsPause','voicePause','every','filter','length','idle','unknown','unavailable','ringing','voiceStatus','chatStatus','faxStatus','mailStatus','openchannelStatus','smsStatus','whatsappStatus','request','Agents','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','then','catch','getRealtimeAgents','pause','*pause','busy','getAgentStatus','startCase','map','getAgents','all','flatten','value','getAgentIdsByQueues','getAgentIdsByStatus','User','findAll','name','fullname','mailPause'];(function(_0x23c73d,_0x357b21){var _0x36ba47=function(_0x317b8e){while(--_0x317b8e){_0x23c73d['push'](_0x23c73d['shift']());}};_0x36ba47(++_0x357b21);}(_0xea7d,0x88));var _0xdea7=function(_0x553a87,_0x1d621f){_0x553a87=_0x553a87-0x0;var _0x12d1e6=_0xea7d[_0x553a87];return _0x12d1e6;};'use strict';var _=require(_0xdea7('0x0'));var jayson=require('jayson/promise');var db=require(_0xdea7('0x1'))['db'];var amiClient=jayson[_0xdea7('0x2')]['http']({'port':0x232a});var routingClient=jayson[_0xdea7('0x2')]['http']({'port':0x232c});function isAgentPaused(_0x44f735,_0x45ce06){var _0x17451c=[_0x44f735[_0xdea7('0x3')],_0x44f735[_0xdea7('0x4')],_0x44f735['mailPause'],_0x44f735['openchannelPause'],_0x44f735[_0xdea7('0x5')],_0x44f735[_0xdea7('0x6')],_0x44f735['whatsappPause']];if(!_0x45ce06)return _[_0xdea7('0x7')](_0x17451c);var _0x3734aa=_[_0xdea7('0x8')](_0x17451c);return _0x3734aa[_0xdea7('0x9')]>0x0&&_0x3734aa[_0xdea7('0x9')]<_0x17451c['length']?!![]:![];}function isIdle(_0xdd7a10){return _0xdd7a10===_0xdea7('0xa')||_0xdd7a10===_0xdea7('0xb')||_0xdd7a10===_0xdea7('0xc')||_0xdd7a10===_0xdea7('0xd')||_['isNil'](_0xdd7a10);}function isAgentIdle(_0x33800a){if(_0x33800a[_0xdea7('0xe')]!==_0xdea7('0xa')&&_0x33800a[_0xdea7('0x6')]){_0x33800a[_0xdea7('0xe')]='pause';return![];}return _['every']([_0x33800a[_0xdea7('0xf')],_0x33800a[_0xdea7('0x10')],_0x33800a[_0xdea7('0x11')],_0x33800a[_0xdea7('0x12')],_0x33800a[_0xdea7('0x13')],_0x33800a[_0xdea7('0xe')],_0x33800a[_0xdea7('0x14')]],isIdle);}function getRealtimeAgents(){return amiClient[_0xdea7('0x15')](_0xdea7('0x16'),{})['then'](function(_0x55686c){if(_0x55686c[_0xdea7('0x17')]){throw new Error(_0xdea7('0x18'));}var _0x23ec8e=_0x55686c[_0xdea7('0x19')];return routingClient[_0xdea7('0x15')](_0xdea7('0x16'),{})[_0xdea7('0x1a')](function(_0x7e5d82){if(_0x7e5d82[_0xdea7('0x17')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');}var _0x4d666f=_0x7e5d82['result'];return _['merge']({},_0x23ec8e,_0x4d666f);});})[_0xdea7('0x1b')](function(_0x1d9686){throw _0x1d9686;});}exports[_0xdea7('0x1c')]=getRealtimeAgents;function getAgentStatus(_0x12c280){var _0x4850b5=_0xdea7('0xb');if(isAgentPaused(_0x12c280))_0x4850b5=_0xdea7('0x1d');else if(isAgentPaused(_0x12c280,!![]))_0x4850b5=_0xdea7('0x1e');else if(isAgentIdle(_0x12c280))_0x4850b5=_0xdea7('0xa');else _0x4850b5=_0xdea7('0x1f');return _0x4850b5;}exports[_0xdea7('0x20')]=getAgentStatus;function getAgentIdsByQueues(_0x21877c,_0xa24f7d){var _0x24267c=_['isArray'](_0x21877c)?_0x21877c:[_0x21877c];var _0x543e6a=_[_0xdea7('0x21')](_0xa24f7d)+'Queue';var _0x3ccd7d=_[_0xdea7('0x22')](_0x24267c,function(_0x4692ad){return db[_0x543e6a]['findOne']({'where':{'id':_0x4692ad}})[_0xdea7('0x1a')](function(_0x4e1ccd){if(!_0x4e1ccd)return[];return _0x4e1ccd[_0xdea7('0x23')]({'attributes':['id'],'raw':!![]});});});return Promise[_0xdea7('0x24')](_0x3ccd7d)[_0xdea7('0x1a')](function(_0x1be059){var _0x2f3da0=_(_0x1be059)[_0xdea7('0x25')]()['map']('id')['uniq']()[_0xdea7('0x26')]();return _0x2f3da0;});}exports[_0xdea7('0x27')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x1a30d9,_0xead704,_0x4580f0){try{if(_0xead704[_0xdea7('0x9')]>0x0){_0x1a30d9=_0x1a30d9['filter'](function(_0x28a463){return _0xead704['includes'](_0x28a463['id']);});}var _0x24ccbd=_0x1a30d9['filter'](function(_0xec02e8){var _0x54ef01=_0xdea7('0x1f');if(isAgentIdle(_0xec02e8)){_0x54ef01=_0xdea7('0xa');}return _0x54ef01===_0x4580f0;});return _[_0xdea7('0x22')](_0x24ccbd,'id');}catch(_0x3c1846){throw _0x3c1846;}}exports[_0xdea7('0x28')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x26a4e1,_0x1a72a1,_0x14ae8b){return Promise['resolve']()['then'](function(){if(_0x1a72a1[_0xdea7('0x9')]>0x0){_0x26a4e1=_0x26a4e1[_0xdea7('0x8')](function(_0x5a18d9){return _0x1a72a1['includes'](_0x5a18d9['id']);});}return _0x26a4e1;})['then'](function(){return db[_0xdea7('0x29')][_0xdea7('0x2a')]({'attributes':['id',_0xdea7('0x2b'),_0xdea7('0x2c'),_0xdea7('0x3'),_0xdea7('0x4'),_0xdea7('0x2d'),_0xdea7('0x2e'),'smsPause','voicePause',_0xdea7('0x2f'),_0xdea7('0x30')],'where':{'id':{'$in':_['map'](_0x26a4e1,'id')}},'raw':!![]});})[_0xdea7('0x1a')](function(_0x5382cf){return _0x5382cf[_0xdea7('0x22')](function(_0x4a17be){var _0x4343f5=_[_0xdea7('0x31')](_0x26a4e1,['id',_0x4a17be['id']]);var _0x43fedc=filterAgentAttributes(_0x4343f5);_[_0xdea7('0x32')](_0x4a17be,_0x43fedc);_0x4a17be['globalStatus']=getAgentStatus(_0x4a17be);return _0x4a17be;});})[_0xdea7('0x1a')](function(_0x21ab81){var _0x5bb676=sortAgentsByStatus(_0x21ab81,_0x14ae8b);return _['map'](_0x5bb676,'id');})[_0xdea7('0x1b')](function(_0x5ca190){throw _0x5ca190;});}exports[_0xdea7('0x33')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x4860bc){var _0xcbe3de={'fields':[],'order':null};var _0x42a831=_0x4860bc[_0xdea7('0x34')](',');_0xcbe3de['fields']=_[_0xdea7('0x8')](_0x42a831,function(_0x170baf){if(!_0x170baf['includes'](_0xdea7('0x35'))){return!![];}_0xcbe3de[_0xdea7('0x36')]=_[_0xdea7('0x37')](_0x170baf,'-')?_0xdea7('0x38'):_0xdea7('0x39');return![];});return _0xcbe3de;}exports[_0xdea7('0x3a')]=getUpdatedSortOptions;function validateSortParameter(_0x21d26f){if(_0x21d26f[_0xdea7('0x3b')](_0xdea7('0x2c'))&&!_0x21d26f['includes'](_0xdea7('0x3c'))){var _0x9c99e2=_0x21d26f[_0xdea7('0x3d')](0x0,_0x21d26f['indexOf']('fullname'));_0x21d26f+=','+_0x9c99e2+_0xdea7('0x3c');}return _0x21d26f;}exports[_0xdea7('0x3e')]=validateSortParameter;function sortAgentsByStatus(_0x16cfcc,_0x40ab8f){var _0x496142=_0x16cfcc[_0xdea7('0x3f')](function(_0x3d4702,_0x326091){if(_0x3d4702[_0xdea7('0x35')]===_0x326091['globalStatus']){if(_0x3d4702[_0xdea7('0x35')]===_0xdea7('0x1d')){if(_0x40ab8f===_0xdea7('0x38')){return(_0x3d4702[_0xdea7('0x30')]||'')<(_0x326091['pauseType']||'')||_0x3d4702[_0xdea7('0x2c')][_0xdea7('0x40')]()>_0x326091['fullname']['toLowerCase']()?0x1:-0x1;}else{return(_0x3d4702[_0xdea7('0x30')]||'')<(_0x326091['pauseType']||'')||_0x3d4702[_0xdea7('0x2c')][_0xdea7('0x40')]()>_0x326091['fullname'][_0xdea7('0x40')]()?-0x1:0x1;}}else{if(_0x40ab8f===_0xdea7('0x38')){return _0x3d4702['fullname'][_0xdea7('0x40')]()<_0x326091['fullname']['toLowerCase']()?0x1:-0x1;}else{return _0x3d4702[_0xdea7('0x2c')][_0xdea7('0x40')]()<_0x326091[_0xdea7('0x2c')][_0xdea7('0x40')]()?-0x1:0x1;}}}else{if(_0x40ab8f===_0xdea7('0x38')){return _0x3d4702['globalStatus']<_0x326091[_0xdea7('0x35')]?0x1:-0x1;}else{return _0x3d4702['globalStatus']<_0x326091[_0xdea7('0x35')]?-0x1:0x1;}}});return _0x496142;}exports[_0xdea7('0x41')]=sortAgentsByStatus;function filterAgentAttributes(_0x58a66a){var _0x38b862=[_0xdea7('0x42'),_0xdea7('0x43'),_0xdea7('0x44'),_0xdea7('0x45'),_0xdea7('0x30'),_0xdea7('0x45'),'internal',_0xdea7('0x46'),_0xdea7('0x3'),_0xdea7('0x2e'),_0xdea7('0x2d'),_0xdea7('0x5'),'whatsappPause',_0xdea7('0x4'),'voicePause','chatCapacity',_0xdea7('0x47'),_0xdea7('0x48'),_0xdea7('0x49'),'whatsappCapacity',_0xdea7('0x4a'),_0xdea7('0x4b'),'openchannelCurrentCapacity',_0xdea7('0x4c'),_0xdea7('0x4d'),_0xdea7('0x4e'),'faxCurrentCapacity',_0xdea7('0xf'),_0xdea7('0x12'),'mailStatus',_0xdea7('0x13'),_0xdea7('0x14'),_0xdea7('0x10'),'voiceStatus',_0xdea7('0x4f'),'openchannelStatusTime',_0xdea7('0x50'),_0xdea7('0x51'),_0xdea7('0x52'),_0xdea7('0x53'),_0xdea7('0x54'),_0xdea7('0x55'),_0xdea7('0x56'),_0xdea7('0x57'),'phoneBarEnableScreenRecordingByAgent',_0xdea7('0x58'),'routealias'];var _0x30fde4=[_0xdea7('0x3'),_0xdea7('0x2e'),_0xdea7('0x2d'),_0xdea7('0x5'),_0xdea7('0x2f'),_0xdea7('0x4'),_0xdea7('0x6'),_0xdea7('0x43')];var _0x7c1209=_(_0x58a66a)[_0xdea7('0x59')](_0x30fde4)['pick'](_0x38b862)[_0xdea7('0x26')]();return _0x7c1209;}exports[_0xdea7('0x5a')]=filterAgentAttributes;