f115c142f7c6596df7473b1d435eb8a32979a5a6
[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 _0x1280=['findOne','getAgents','all','flatten','value','getAgentIdsByQueues','includes','getAgentIdsByStatus','resolve','filter','User','findAll','name','openchannelPause','smsPause','find','globalStatus','catch','getSortedAgentsIdsByStatus','split','order','startsWith','ASC','getUpdatedSortOptions','fullname,internal','substring','indexOf','fullname','internal','validateSortParameter','DESC','pauseType','toLowerCase','sortAgentsByStatus','userpic','lastLoginAt','lastPauseAt','address','chatCapacity','openchannelCapacity','smsCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','smsCurrentCapacity','faxCurrentCapacity','openchannelStatus','chatStatusTime','openchannelStatusTime','mailStatusTime','smsStatusTime','faxStatusTime','voiceStatusTime','queue','destconnectedlinenum','screenrecording','online','omit','pick','filterAgentAttributes','role','faxStatus','whatsappStatusTime','mailCapacity','whatsappCurrentCapacity','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','onhold','getRealtimeAgentsQueryFields','lodash','../../mysqldb','client','http','chatPause','faxPause','mailPause','voicePause','whatsappPause','every','length','idle','unknown','isNil','voiceStatus','pause','chatStatus','mailStatus','smsStatus','whatsappStatus','request','Agents','then','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','getRealtimeAgents','*pause','busy','getAgentStatus','Queue','map'];(function(_0x3572cb,_0x4149d3){var _0x33a398=function(_0x163e27){while(--_0x163e27){_0x3572cb['push'](_0x3572cb['shift']());}};_0x33a398(++_0x4149d3);}(_0x1280,0xac));var _0x0128=function(_0x34f0fb,_0x3323b2){_0x34f0fb=_0x34f0fb-0x0;var _0x9b7b2b=_0x1280[_0x34f0fb];return _0x9b7b2b;};'use strict';var _=require(_0x0128('0x0'));var jayson=require('jayson/promise');var db=require(_0x0128('0x1'))['db'];var amiClient=jayson[_0x0128('0x2')][_0x0128('0x3')]({'port':0x232a});var routingClient=jayson[_0x0128('0x2')][_0x0128('0x3')]({'port':0x232c});function isAgentPaused(_0x33b978,_0x4bd1f3){var _0x37b58b=[_0x33b978[_0x0128('0x4')],_0x33b978[_0x0128('0x5')],_0x33b978[_0x0128('0x6')],_0x33b978['openchannelPause'],_0x33b978['smsPause'],_0x33b978[_0x0128('0x7')],_0x33b978[_0x0128('0x8')]];if(!_0x4bd1f3)return _[_0x0128('0x9')](_0x37b58b);var _0x43a105=_['filter'](_0x37b58b);return _0x43a105[_0x0128('0xa')]>0x0&&_0x43a105[_0x0128('0xa')]<_0x37b58b['length']?!![]:![];}function isIdle(_0x1ac826){return _0x1ac826===_0x0128('0xb')||_0x1ac826===_0x0128('0xc')||_0x1ac826==='unavailable'||_0x1ac826==='ringing'||_[_0x0128('0xd')](_0x1ac826);}function isAgentIdle(_0x404cb2){if(_0x404cb2[_0x0128('0xe')]!=='idle'&&_0x404cb2[_0x0128('0x7')]){_0x404cb2['voiceStatus']=_0x0128('0xf');return![];}return _['every']([_0x404cb2[_0x0128('0x10')],_0x404cb2['faxStatus'],_0x404cb2[_0x0128('0x11')],_0x404cb2['openchannelStatus'],_0x404cb2[_0x0128('0x12')],_0x404cb2[_0x0128('0xe')],_0x404cb2[_0x0128('0x13')]],isIdle);}function getRealtimeAgents(){return amiClient[_0x0128('0x14')](_0x0128('0x15'),{})[_0x0128('0x16')](function(_0x59a472){if(_0x59a472[_0x0128('0x17')]){throw new Error(_0x0128('0x18'));}var _0x3300d4=_0x59a472[_0x0128('0x19')];return routingClient[_0x0128('0x14')](_0x0128('0x15'),{})['then'](function(_0x2524b1){if(_0x2524b1[_0x0128('0x17')]){throw new Error(_0x0128('0x1a'));}var _0x431b13=_0x2524b1[_0x0128('0x19')];return _[_0x0128('0x1b')]({},_0x3300d4,_0x431b13);});})['catch'](function(_0x172c33){throw _0x172c33;});}exports[_0x0128('0x1c')]=getRealtimeAgents;function getAgentStatus(_0x5d946e){var _0x4ad121=_0x0128('0xc');if(isAgentPaused(_0x5d946e))_0x4ad121=_0x0128('0xf');else if(isAgentPaused(_0x5d946e,!![]))_0x4ad121=_0x0128('0x1d');else if(isAgentIdle(_0x5d946e))_0x4ad121=_0x0128('0xb');else _0x4ad121=_0x0128('0x1e');return _0x4ad121;}exports[_0x0128('0x1f')]=getAgentStatus;function getAgentIdsByQueues(_0x10b436,_0x167c33){var _0x544f5c=_['isArray'](_0x10b436)?_0x10b436:[_0x10b436];var _0x1ce8fc=_['startCase'](_0x167c33)+_0x0128('0x20');var _0x33354b=_[_0x0128('0x21')](_0x544f5c,function(_0x47d79d){return db[_0x1ce8fc][_0x0128('0x22')]({'where':{'id':_0x47d79d}})['then'](function(_0x170f4b){if(!_0x170f4b)return[];return _0x170f4b[_0x0128('0x23')]({'attributes':['id'],'raw':!![]});});});return Promise[_0x0128('0x24')](_0x33354b)[_0x0128('0x16')](function(_0x4b0f88){var _0x545a05=_(_0x4b0f88)[_0x0128('0x25')]()[_0x0128('0x21')]('id')['uniq']()[_0x0128('0x26')]();return _0x545a05;});}exports[_0x0128('0x27')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x4ee634,_0xb6e133,_0x1e98a2){try{if(_0xb6e133[_0x0128('0xa')]>0x0){_0x4ee634=_0x4ee634['filter'](function(_0x5b7ab2){return _0xb6e133[_0x0128('0x28')](_0x5b7ab2['id']);});}var _0x586310=_0x4ee634['filter'](function(_0x5f07c7){var _0x28b27c='busy';if(isAgentIdle(_0x5f07c7)){_0x28b27c=_0x0128('0xb');}return _0x28b27c===_0x1e98a2;});return _[_0x0128('0x21')](_0x586310,'id');}catch(_0x345023){throw _0x345023;}}exports[_0x0128('0x29')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x5a021f,_0x24dad5,_0x1cc531){return Promise[_0x0128('0x2a')]()[_0x0128('0x16')](function(){if(_0x24dad5['length']>0x0){_0x5a021f=_0x5a021f[_0x0128('0x2b')](function(_0x40b088){return _0x24dad5[_0x0128('0x28')](_0x40b088['id']);});}return _0x5a021f;})[_0x0128('0x16')](function(){return db[_0x0128('0x2c')][_0x0128('0x2d')]({'attributes':['id',_0x0128('0x2e'),'fullname','chatPause','faxPause',_0x0128('0x6'),_0x0128('0x2f'),_0x0128('0x30'),'voicePause',_0x0128('0x8'),'pauseType'],'where':{'id':{'$in':_[_0x0128('0x21')](_0x5a021f,'id')}},'raw':!![]});})[_0x0128('0x16')](function(_0x3aaf39){return _0x3aaf39[_0x0128('0x21')](function(_0x5ab89b){var _0x5b354e=_[_0x0128('0x31')](_0x5a021f,['id',_0x5ab89b['id']]);var _0x15742b=filterAgentAttributes(_0x5b354e);_[_0x0128('0x1b')](_0x5ab89b,_0x15742b);_0x5ab89b[_0x0128('0x32')]=getAgentStatus(_0x5ab89b);return _0x5ab89b;});})['then'](function(_0x4de8dc){var _0x2a534b=sortAgentsByStatus(_0x4de8dc,_0x1cc531);return _[_0x0128('0x21')](_0x2a534b,'id');})[_0x0128('0x33')](function(_0xc7a20){throw _0xc7a20;});}exports[_0x0128('0x34')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x478d57){var _0xe72ce4={'fields':[],'order':null};var _0x39f32d=_0x478d57[_0x0128('0x35')](',');_0xe72ce4['fields']=_['filter'](_0x39f32d,function(_0x5d5eba){if(!_0x5d5eba[_0x0128('0x28')](_0x0128('0x32'))){return!![];}_0xe72ce4[_0x0128('0x36')]=_[_0x0128('0x37')](_0x5d5eba,'-')?'DESC':_0x0128('0x38');return![];});return _0xe72ce4;}exports[_0x0128('0x39')]=getUpdatedSortOptions;function validateSortParameter(_0x544664){if(!_0x544664){_0x544664=_0x0128('0x3a');}if(_0x544664[_0x0128('0x28')]('fullname')&&!_0x544664[_0x0128('0x28')]('internal')){var _0x1fe8c8=_0x544664[_0x0128('0x3b')](0x0,_0x544664[_0x0128('0x3c')](_0x0128('0x3d')));_0x544664+=','+_0x1fe8c8+_0x0128('0x3e');}return _0x544664;}exports[_0x0128('0x3f')]=validateSortParameter;function sortAgentsByStatus(_0x5bf361,_0x57fa59){var _0x41c500=_0x5bf361['sort'](function(_0x4ab4f3,_0x2b9c3b){if(_0x4ab4f3['globalStatus']===_0x2b9c3b[_0x0128('0x32')]){if(_0x4ab4f3[_0x0128('0x32')]===_0x0128('0xf')){if(_0x57fa59===_0x0128('0x40')){return(_0x4ab4f3[_0x0128('0x41')]||'')<(_0x2b9c3b[_0x0128('0x41')]||'')||_0x4ab4f3[_0x0128('0x3d')][_0x0128('0x42')]()>_0x2b9c3b[_0x0128('0x3d')][_0x0128('0x42')]()?0x1:-0x1;}else{return(_0x4ab4f3[_0x0128('0x41')]||'')<(_0x2b9c3b[_0x0128('0x41')]||'')||_0x4ab4f3[_0x0128('0x3d')]['toLowerCase']()>_0x2b9c3b[_0x0128('0x3d')][_0x0128('0x42')]()?-0x1:0x1;}}else{if(_0x57fa59==='DESC'){return _0x4ab4f3[_0x0128('0x3d')][_0x0128('0x42')]()<_0x2b9c3b[_0x0128('0x3d')][_0x0128('0x42')]()?0x1:-0x1;}else{return _0x4ab4f3[_0x0128('0x3d')]['toLowerCase']()<_0x2b9c3b[_0x0128('0x3d')][_0x0128('0x42')]()?-0x1:0x1;}}}else{if(_0x57fa59===_0x0128('0x40')){return _0x4ab4f3[_0x0128('0x32')]<_0x2b9c3b[_0x0128('0x32')]?0x1:-0x1;}else{return _0x4ab4f3[_0x0128('0x32')]<_0x2b9c3b[_0x0128('0x32')]?-0x1:0x1;}}});return _0x41c500;}exports[_0x0128('0x43')]=sortAgentsByStatus;function filterAgentAttributes(_0x1915a1){var _0x5d4668=[_0x0128('0x44'),'online',_0x0128('0x45'),_0x0128('0x46'),_0x0128('0x41'),_0x0128('0x46'),_0x0128('0x3e'),_0x0128('0x47'),_0x0128('0x4'),_0x0128('0x2f'),'mailPause','smsPause',_0x0128('0x8'),_0x0128('0x5'),'voicePause',_0x0128('0x48'),_0x0128('0x49'),'mailCapacity',_0x0128('0x4a'),_0x0128('0x4b'),_0x0128('0x4c'),_0x0128('0x4d'),'openchannelCurrentCapacity','mailCurrentCapacity',_0x0128('0x4e'),'whatsappCurrentCapacity',_0x0128('0x4f'),'chatStatus',_0x0128('0x50'),_0x0128('0x11'),_0x0128('0x12'),_0x0128('0x13'),'faxStatus',_0x0128('0xe'),_0x0128('0x51'),_0x0128('0x52'),_0x0128('0x53'),_0x0128('0x54'),'whatsappStatusTime',_0x0128('0x55'),_0x0128('0x56'),_0x0128('0x57'),_0x0128('0x58'),_0x0128('0x59'),'phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording'];var _0x7531e=['chatPause',_0x0128('0x2f'),'mailPause',_0x0128('0x30'),_0x0128('0x8'),'faxPause','voicePause',_0x0128('0x5a')];var _0x13aaa3=_(_0x1915a1)[_0x0128('0x5b')](_0x7531e)[_0x0128('0x5c')](_0x5d4668)['value']();return _0x13aaa3;}exports[_0x0128('0x5d')]=filterAgentAttributes;function getRealtimeAgentsQueryFields(){return['id',_0x0128('0x2e'),_0x0128('0x3d'),_0x0128('0x5e'),_0x0128('0x3e'),'online','globalStatus',_0x0128('0x44'),_0x0128('0x45'),'pauseType',_0x0128('0x46'),_0x0128('0x5'),'chatPause',_0x0128('0x6'),_0x0128('0x2f'),_0x0128('0x30'),_0x0128('0x7'),_0x0128('0x8'),_0x0128('0x10'),_0x0128('0x5f'),'mailStatus','openchannelStatus',_0x0128('0x12'),_0x0128('0xe'),_0x0128('0x13'),_0x0128('0x51'),_0x0128('0x55'),_0x0128('0x53'),_0x0128('0x52'),_0x0128('0x54'),_0x0128('0x56'),_0x0128('0x60'),_0x0128('0x48'),'faxCapacity',_0x0128('0x61'),_0x0128('0x49'),_0x0128('0x4a'),_0x0128('0x4b'),_0x0128('0x4d'),'faxCurrentCapacity','mailCurrentCapacity','openchannelCurrentCapacity',_0x0128('0x4e'),_0x0128('0x62'),_0x0128('0x63'),_0x0128('0x64'),_0x0128('0x58'),_0x0128('0x65'),'queue',_0x0128('0x59')];}exports[_0x0128('0x66')]=getRealtimeAgentsQueryFields;