Built motion from commit 1efd3d96.|2.6.31
[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 _0x390a=['destconnectedlinenum','phoneBarEnableAutomaticScreenRecording','omit','pick','filterAgentAttributes','name','role','smsStatus','voiceStatusTime','faxCurrentCapacity','phoneBarEnableScreenRecordingByAgent','onhold','getRealtimeAgentsQueryFields','lodash','jayson/promise','../../mysqldb','client','http','chatPause','faxPause','mailPause','smsPause','voicePause','filter','length','unknown','unavailable','ringing','voiceStatus','chatStatus','faxStatus','openchannelStatus','request','then','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','result','getRealtimeAgents','*pause','idle','startCase','map','getAgents','uniq','value','getAgentIdsByQueues','includes','busy','resolve','User','fullname','whatsappPause','pauseType','find','merge','catch','fields','globalStatus','order','startsWith','DESC','fullname,internal','internal','substring','indexOf','pause','toLowerCase','sortAgentsByStatus','userpic','online','lastLoginAt','lastPauseAt','openchannelPause','chatCapacity','openchannelCapacity','mailCapacity','smsCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','openchannelCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','mailStatus','whatsappStatus','chatStatusTime','openchannelStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','faxStatusTime','queue'];(function(_0x54a0bc,_0x456c20){var _0x5ab0a3=function(_0x3c4dd2){while(--_0x3c4dd2){_0x54a0bc['push'](_0x54a0bc['shift']());}};_0x5ab0a3(++_0x456c20);}(_0x390a,0xc9));var _0xa390=function(_0x473a66,_0x299480){_0x473a66=_0x473a66-0x0;var _0x3ace8b=_0x390a[_0x473a66];return _0x3ace8b;};'use strict';var _=require(_0xa390('0x0'));var jayson=require(_0xa390('0x1'));var db=require(_0xa390('0x2'))['db'];var amiClient=jayson[_0xa390('0x3')]['http']({'port':0x232a});var routingClient=jayson[_0xa390('0x3')][_0xa390('0x4')]({'port':0x232c});function isAgentPaused(_0x4879dd,_0x3f1ee2){var _0x4fe49e=[_0x4879dd[_0xa390('0x5')],_0x4879dd[_0xa390('0x6')],_0x4879dd[_0xa390('0x7')],_0x4879dd['openchannelPause'],_0x4879dd[_0xa390('0x8')],_0x4879dd[_0xa390('0x9')],_0x4879dd['whatsappPause']];if(!_0x3f1ee2)return _['every'](_0x4fe49e);var _0xc8cd85=_[_0xa390('0xa')](_0x4fe49e);return _0xc8cd85[_0xa390('0xb')]>0x0&&_0xc8cd85[_0xa390('0xb')]<_0x4fe49e[_0xa390('0xb')]?!![]:![];}function isIdle(_0x5106eb){return _0x5106eb==='idle'||_0x5106eb===_0xa390('0xc')||_0x5106eb===_0xa390('0xd')||_0x5106eb===_0xa390('0xe')||_['isNil'](_0x5106eb);}function isAgentIdle(_0x41f9f2){if(_0x41f9f2[_0xa390('0xf')]!=='idle'&&_0x41f9f2[_0xa390('0x9')]){_0x41f9f2[_0xa390('0xf')]='pause';return![];}return _['every']([_0x41f9f2[_0xa390('0x10')],_0x41f9f2[_0xa390('0x11')],_0x41f9f2['mailStatus'],_0x41f9f2[_0xa390('0x12')],_0x41f9f2['smsStatus'],_0x41f9f2['voiceStatus'],_0x41f9f2['whatsappStatus']],isIdle);}function getRealtimeAgents(){return amiClient[_0xa390('0x13')]('Agents',{})[_0xa390('0x14')](function(_0x4645be){if(_0x4645be['error']){throw new Error(_0xa390('0x15'));}var _0x180429=_0x4645be['result'];return routingClient[_0xa390('0x13')]('Agents',{})[_0xa390('0x14')](function(_0x225e2c){if(_0x225e2c[_0xa390('0x16')]){throw new Error(_0xa390('0x17'));}var _0x555ade=_0x225e2c[_0xa390('0x18')];return _['merge']({},_0x180429,_0x555ade);});})['catch'](function(_0x4969c9){throw _0x4969c9;});}exports[_0xa390('0x19')]=getRealtimeAgents;function getAgentStatus(_0x555323){var _0x3815bd=_0xa390('0xc');if(isAgentPaused(_0x555323))_0x3815bd='pause';else if(isAgentPaused(_0x555323,!![]))_0x3815bd=_0xa390('0x1a');else if(isAgentIdle(_0x555323))_0x3815bd=_0xa390('0x1b');else _0x3815bd='busy';return _0x3815bd;}exports['getAgentStatus']=getAgentStatus;function getAgentIdsByQueues(_0x18a0f0,_0x374ea9){var _0x130355=_['isArray'](_0x18a0f0)?_0x18a0f0:[_0x18a0f0];var _0x4d320d=_[_0xa390('0x1c')](_0x374ea9)+'Queue';var _0x3f2840=_[_0xa390('0x1d')](_0x130355,function(_0x2aeb9f){return db[_0x4d320d]['findOne']({'where':{'id':_0x2aeb9f}})[_0xa390('0x14')](function(_0x4541a6){if(!_0x4541a6)return[];return _0x4541a6[_0xa390('0x1e')]({'attributes':['id'],'raw':!![]});});});return Promise['all'](_0x3f2840)[_0xa390('0x14')](function(_0x5a92bd){var _0x34f865=_(_0x5a92bd)['flatten']()[_0xa390('0x1d')]('id')[_0xa390('0x1f')]()[_0xa390('0x20')]();return _0x34f865;});}exports[_0xa390('0x21')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x22c5ba,_0x351913,_0x55e360){try{if(_0x351913['length']>0x0){_0x22c5ba=_0x22c5ba[_0xa390('0xa')](function(_0x5022aa){return _0x351913[_0xa390('0x22')](_0x5022aa['id']);});}var _0x45d572=_0x22c5ba[_0xa390('0xa')](function(_0x11ce69){var _0x272949=_0xa390('0x23');if(isAgentIdle(_0x11ce69)){_0x272949='idle';}return _0x272949===_0x55e360;});return _[_0xa390('0x1d')](_0x45d572,'id');}catch(_0x4234e1){throw _0x4234e1;}}exports['getAgentIdsByStatus']=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x2b2448,_0x421ac0,_0x4f5b64){return Promise[_0xa390('0x24')]()[_0xa390('0x14')](function(){if(_0x421ac0['length']>0x0){_0x2b2448=_0x2b2448[_0xa390('0xa')](function(_0x2601c7){return _0x421ac0[_0xa390('0x22')](_0x2601c7['id']);});}return _0x2b2448;})[_0xa390('0x14')](function(){return db[_0xa390('0x25')]['findAll']({'attributes':['id','name',_0xa390('0x26'),_0xa390('0x5'),'faxPause',_0xa390('0x7'),'openchannelPause',_0xa390('0x8'),_0xa390('0x9'),_0xa390('0x27'),_0xa390('0x28')],'where':{'id':{'$in':_[_0xa390('0x1d')](_0x2b2448,'id')}},'raw':!![]});})[_0xa390('0x14')](function(_0x385cfc){return _0x385cfc[_0xa390('0x1d')](function(_0x231616){var _0x32ba94=_[_0xa390('0x29')](_0x2b2448,['id',_0x231616['id']]);var _0x57e821=filterAgentAttributes(_0x32ba94);_[_0xa390('0x2a')](_0x231616,_0x57e821);_0x231616['globalStatus']=getAgentStatus(_0x231616);return _0x231616;});})[_0xa390('0x14')](function(_0x526dd0){var _0x1369bb=sortAgentsByStatus(_0x526dd0,_0x4f5b64);return _[_0xa390('0x1d')](_0x1369bb,'id');})[_0xa390('0x2b')](function(_0x347082){throw _0x347082;});}exports['getSortedAgentsIdsByStatus']=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x3bc936){var _0x5ae5f6={'fields':[],'order':null};var _0x298169=_0x3bc936['split'](',');_0x5ae5f6[_0xa390('0x2c')]=_[_0xa390('0xa')](_0x298169,function(_0x2fe9f3){if(!_0x2fe9f3[_0xa390('0x22')](_0xa390('0x2d'))){return!![];}_0x5ae5f6[_0xa390('0x2e')]=_[_0xa390('0x2f')](_0x2fe9f3,'-')?_0xa390('0x30'):'ASC';return![];});return _0x5ae5f6;}exports['getUpdatedSortOptions']=getUpdatedSortOptions;function validateSortParameter(_0x26a191){if(!_0x26a191){_0x26a191=_0xa390('0x31');}if(_0x26a191[_0xa390('0x22')](_0xa390('0x26'))&&!_0x26a191[_0xa390('0x22')](_0xa390('0x32'))){var _0x49fd4f=_0x26a191[_0xa390('0x33')](0x0,_0x26a191[_0xa390('0x34')](_0xa390('0x26')));_0x26a191+=','+_0x49fd4f+_0xa390('0x32');}return _0x26a191;}exports['validateSortParameter']=validateSortParameter;function sortAgentsByStatus(_0x176acd,_0x222b8d){var _0x5c00fd=_0x176acd['sort'](function(_0x4b8288,_0x9f74fd){if(_0x4b8288[_0xa390('0x2d')]===_0x9f74fd[_0xa390('0x2d')]){if(_0x4b8288[_0xa390('0x2d')]===_0xa390('0x35')){if(_0x222b8d===_0xa390('0x30')){return(_0x4b8288[_0xa390('0x28')]||'')<(_0x9f74fd[_0xa390('0x28')]||'')||_0x4b8288[_0xa390('0x26')]['toLowerCase']()>_0x9f74fd[_0xa390('0x26')][_0xa390('0x36')]()?0x1:-0x1;}else{return(_0x4b8288[_0xa390('0x28')]||'')<(_0x9f74fd[_0xa390('0x28')]||'')||_0x4b8288[_0xa390('0x26')][_0xa390('0x36')]()>_0x9f74fd[_0xa390('0x26')][_0xa390('0x36')]()?-0x1:0x1;}}else{if(_0x222b8d===_0xa390('0x30')){return _0x4b8288[_0xa390('0x26')][_0xa390('0x36')]()<_0x9f74fd[_0xa390('0x26')][_0xa390('0x36')]()?0x1:-0x1;}else{return _0x4b8288[_0xa390('0x26')][_0xa390('0x36')]()<_0x9f74fd[_0xa390('0x26')][_0xa390('0x36')]()?-0x1:0x1;}}}else{if(_0x222b8d===_0xa390('0x30')){return _0x4b8288[_0xa390('0x2d')]<_0x9f74fd[_0xa390('0x2d')]?0x1:-0x1;}else{return _0x4b8288[_0xa390('0x2d')]<_0x9f74fd['globalStatus']?-0x1:0x1;}}});return _0x5c00fd;}exports[_0xa390('0x37')]=sortAgentsByStatus;function filterAgentAttributes(_0x1dc90d){var _0x700837=[_0xa390('0x38'),_0xa390('0x39'),_0xa390('0x3a'),'lastPauseAt',_0xa390('0x28'),_0xa390('0x3b'),_0xa390('0x32'),'address',_0xa390('0x5'),_0xa390('0x3c'),_0xa390('0x7'),'smsPause',_0xa390('0x27'),_0xa390('0x6'),_0xa390('0x9'),_0xa390('0x3d'),_0xa390('0x3e'),_0xa390('0x3f'),_0xa390('0x40'),_0xa390('0x41'),_0xa390('0x42'),_0xa390('0x43'),_0xa390('0x44'),_0xa390('0x45'),_0xa390('0x46'),_0xa390('0x47'),'faxCurrentCapacity','chatStatus',_0xa390('0x12'),_0xa390('0x48'),'smsStatus',_0xa390('0x49'),_0xa390('0x11'),_0xa390('0xf'),_0xa390('0x4a'),_0xa390('0x4b'),_0xa390('0x4c'),_0xa390('0x4d'),_0xa390('0x4e'),_0xa390('0x4f'),'voiceStatusTime',_0xa390('0x50'),_0xa390('0x51'),'screenrecording','phoneBarEnableScreenRecordingByAgent',_0xa390('0x52')];var _0x119d25=[_0xa390('0x5'),'openchannelPause','mailPause',_0xa390('0x8'),_0xa390('0x27'),_0xa390('0x6'),_0xa390('0x9'),_0xa390('0x39')];var _0x5849d9=_(_0x1dc90d)[_0xa390('0x53')](_0x119d25)[_0xa390('0x54')](_0x700837)[_0xa390('0x20')]();return _0x5849d9;}exports[_0xa390('0x55')]=filterAgentAttributes;function getRealtimeAgentsQueryFields(){return['id',_0xa390('0x56'),_0xa390('0x26'),_0xa390('0x57'),_0xa390('0x32'),_0xa390('0x39'),_0xa390('0x2d'),'userpic',_0xa390('0x3a'),_0xa390('0x28'),_0xa390('0x3b'),_0xa390('0x6'),_0xa390('0x5'),_0xa390('0x7'),_0xa390('0x3c'),_0xa390('0x8'),_0xa390('0x9'),'whatsappPause','chatStatus',_0xa390('0x11'),_0xa390('0x48'),'openchannelStatus',_0xa390('0x58'),'voiceStatus',_0xa390('0x49'),_0xa390('0x4a'),_0xa390('0x4f'),'mailStatusTime',_0xa390('0x4b'),_0xa390('0x4d'),_0xa390('0x59'),_0xa390('0x4e'),_0xa390('0x3d'),_0xa390('0x42'),_0xa390('0x3f'),'openchannelCapacity',_0xa390('0x40'),_0xa390('0x41'),_0xa390('0x43'),_0xa390('0x5a'),_0xa390('0x45'),_0xa390('0x44'),'smsCurrentCapacity',_0xa390('0x47'),_0xa390('0x5b'),_0xa390('0x52'),_0xa390('0x51'),_0xa390('0x5c'),_0xa390('0x50'),'screenrecording'];}exports[_0xa390('0x5d')]=getRealtimeAgentsQueryFields;