06986db6adb3956993be3807c0ee8f2167f19192
[motion2.git] / server / api / realtime / realtime.controller.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 _0xafab=['key','role','agent','getOptions','raw','sequelize','FIELD(id,','forEach','*pause','Pause','where','user','userProfileId','Agents','UserProfile','getResources','findAndCountAll','filterAgentAttributes','globalStatus','getAgentStatus','Status','sortAgentsByStatus','Queue','rawAttributes','fieldName','QueueCampaigns','all','util','lodash','jayson/promise','../../components/parsers/qs','../../config/utils','../../config/logger','api','../../mysqldb','client','http','offset','undefined','limit','count','status','set','Content-Range','json','error','stack','name','voice','request','startCase','Queues','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','catch','VoiceQueuesChannels','then','result','loggedIn','available','waiting','talking','paused','outbound','push','originated','dialActive','dialMethod','Trunk','startPredictive','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgTalktime','map','get','agents','loggedInDb','busy','pTalking','find','merge','pick','filter','queue','length','some','connectedlinenum','toString','getMembers','UserId','accountcode','online','User','findAll','QueueId','getChannels','includes','toLowerCase','Invalid\x20channel','getAgents','query','globalQueueFilter','globalStatusFilter','pause','resolve','channel','sort','getUpdatedSortOptions','join','order','getAgentIdsByQueues','getRealtimeAgents','rows','getSortedAgentsIdsByStatus','getAgentIdsByStatus','type'];(function(_0x1fcc55,_0x6f617e){var _0x3ae024=function(_0xfbdc93){while(--_0xfbdc93){_0x1fcc55['push'](_0x1fcc55['shift']());}};_0x3ae024(++_0x6f617e);}(_0xafab,0x192));var _0xbafa=function(_0x154279,_0xeab21f){_0x154279=_0x154279-0x0;var _0x20bb97=_0xafab[_0x154279];return _0x20bb97;};'use strict';var util=require(_0xbafa('0x0'));var _=require(_0xbafa('0x1'));var jayson=require(_0xbafa('0x2'));var rta=require('../../components/realtime/agents');var qs=require(_0xbafa('0x3'));var utils=require(_0xbafa('0x4'));var logger=require(_0xbafa('0x5'))(_0xbafa('0x6'));var db=require(_0xbafa('0x7'))['db'];var amiClient=jayson[_0xbafa('0x8')][_0xbafa('0x9')]({'port':0x232a});var routingClient=jayson[_0xbafa('0x8')][_0xbafa('0x9')]({'port':0x232c});function respondWithFilteredResult(_0x2e9849,_0x21da8a){return function(_0x318d00){if(_0x318d00){var _0x125f86=typeof _0x21da8a[_0xbafa('0xa')]===_0xbafa('0xb')&&typeof _0x21da8a[_0xbafa('0xc')]===_0xbafa('0xb');var _0x920d0e=_0x318d00[_0xbafa('0xd')];var _0x390b81=_0x125f86?0x0:_0x21da8a[_0xbafa('0xa')];var _0x4fc1f6=_0x125f86?_0x318d00['count']:_0x21da8a['offset']+_0x21da8a[_0xbafa('0xc')];var _0x2caeab;if(_0x4fc1f6>=_0x920d0e){_0x4fc1f6=_0x920d0e;_0x2caeab=0xc8;}else{_0x2caeab=0xce;}_0x2e9849[_0xbafa('0xe')](_0x2caeab);return _0x2e9849[_0xbafa('0xf')](_0xbafa('0x10'),_0x390b81+'-'+_0x4fc1f6+'/'+_0x920d0e)[_0xbafa('0x11')](_0x318d00);}return null;};}function handleError(_0x2c8a5c,_0x3c830b){_0x3c830b=_0x3c830b||0x1f4;return function(_0x2522ac){logger[_0xbafa('0x12')](_0x2522ac[_0xbafa('0x13')]);if(_0x2522ac[_0xbafa('0x14')]){delete _0x2522ac[_0xbafa('0x14')];}_0x2c8a5c['status'](_0x3c830b)['send'](_0x2522ac);};}function getRealtimeQueues(_0x25322d,_0xc8b1ae){return new Promise(function(_0x2ede8e,_0x1cbb8f){var _0x2e584c=_0xc8b1ae===_0xbafa('0x15')?amiClient:routingClient;return _0x2e584c[_0xbafa('0x16')](_[_0xbafa('0x17')](_0xc8b1ae)+_0xbafa('0x18'),_0x25322d)['then'](function(_0x4f47c6){if(_0x4f47c6[_0xbafa('0x12')])throw new Error(util['format'](_0xbafa('0x19'),_0xc8b1ae));return _0x2ede8e(_0x4f47c6['result']);})[_0xbafa('0x1a')](function(_0x564a49){_0x1cbb8f(_0x564a49);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x29f91a,_0x54cc5f){return amiClient[_0xbafa('0x16')](_0xbafa('0x1b'),{})[_0xbafa('0x1c')](function(_0x107cc6){if(_0x107cc6[_0xbafa('0x12')])throw new Error('Unable\x20to\x20retrieve\x20voice\x20queues\x20channels');return _0x29f91a(_0x107cc6[_0xbafa('0x1d')]);})[_0xbafa('0x1a')](function(_0x9c8a1d){_0x54cc5f(_0x9c8a1d);});});}function initializeQueues(_0x1c9d51,_0x4d0197,_0x10b4be,_0x45fe4e){var _0x48de2e=[_0xbafa('0x1e'),_0xbafa('0x1f'),_0xbafa('0x20'),_0xbafa('0x21'),_0xbafa('0x22')];if(_0x10b4be==='voice'&&_0x45fe4e===_0xbafa('0x23')){_0x48de2e[_0xbafa('0x24')]('pTalking',_0xbafa('0x25'),'message',_0xbafa('0x26'),_0xbafa('0x27'),_0xbafa('0x28'),_0xbafa('0x29'),_0xbafa('0x2a'),_0xbafa('0x2b'),_0xbafa('0x2c'),_0xbafa('0x2d'),'erlangBusyFactor',_0xbafa('0x2e'),_0xbafa('0x2f'),_0xbafa('0x30'),_0xbafa('0x31'),_0xbafa('0x32'),_0xbafa('0x33'),_0xbafa('0x34'),_0xbafa('0x35'),'predictiveIntervalAvgHoldtime',_0xbafa('0x36'));}return _0x1c9d51[_0xbafa('0x37')](function(_0x206cf6){var _0x2e7f1e=_0x206cf6[_0xbafa('0x38')]({'plain':!![]});_0x2e7f1e[_0xbafa('0x39')]=[];_0x2e7f1e[_0xbafa('0x22')]=0x0;_0x2e7f1e[_0xbafa('0x3a')]=0x0;_0x2e7f1e[_0xbafa('0x1e')]=0x0;_0x2e7f1e[_0xbafa('0x1f')]=0x0;_0x2e7f1e[_0xbafa('0x20')]=0x0;if(_0x10b4be===_0xbafa('0x15')){_0x2e7f1e[_0xbafa('0x21')]=0x0;_0x2e7f1e[_0xbafa('0x3b')]=0x0;if(_0x45fe4e===_0xbafa('0x23')){_0x2e7f1e[_0xbafa('0x3c')]=0x0;_0x2e7f1e[_0xbafa('0x25')]=0x0;}}var _0x2d1ba4=_[_0xbafa('0x3d')](_0x4d0197,['id',_0x2e7f1e['id']]);if(_0x2d1ba4)_[_0xbafa('0x3e')](_0x2e7f1e,_[_0xbafa('0x3f')](_0x2d1ba4,_0x48de2e));return _0x2e7f1e;});}function updateAgentVoiceStatus(_0x573cfb,_0x3272a9,_0x307763){var _0x44db68=_[_0xbafa('0x40')](_0x307763,[_0xbafa('0x41'),_0x3272a9[_0xbafa('0x14')]]);if(_0x44db68[_0xbafa('0x42')]===0x0)return _0x573cfb[_0xbafa('0x3b')]=!![];if(_[_0xbafa('0x43')](_0x44db68,[_0xbafa('0x44'),_0x573cfb['internal'][_0xbafa('0x45')]()]))return _0x573cfb[_0xbafa('0x21')]=!![];if(!_0x573cfb[_0xbafa('0x21')])return _0x573cfb[_0xbafa('0x3b')]=!![];}function getVoiceQueueAgents(_0x3f04ac,_0x1d9f78,_0x4c4618,_0x4bc466){var _0x5ec11f=_[_0xbafa('0x3d')](_0x1d9f78,['id',_0x3f04ac['id']]);if(!_0x5ec11f)return _0x3f04ac;return _0x5ec11f[_0xbafa('0x46')]({'raw':!![]})['then'](function(_0x54f98c){for(var _0x4419e2=0x0;_0x4419e2<_0x54f98c['length'];_0x4419e2++){var _0x1fd63c=_[_0xbafa('0x3d')](_0x4c4618,['id',_0x54f98c[_0x4419e2][_0xbafa('0x47')]]);if(!_0x1fd63c){_0x1fd63c={'id':_0x54f98c[_0x4419e2][_0xbafa('0x47')],'name':_0x54f98c[_0x4419e2][_0xbafa('0x47')],'accountcode':'','online':![]};}var _0x5e70ff={'id':_0x1fd63c['id'],'name':_0x1fd63c[_0xbafa('0x14')],'internal':_0x1fd63c[_0xbafa('0x48')],'online':Boolean(_0x1fd63c[_0xbafa('0x49')]),'paused':Boolean(_0x54f98c[_0x4419e2][_0xbafa('0x22')])};if(_0x1fd63c['voiceStatus']==='talking')updateAgentVoiceStatus(_0x5e70ff,_0x3f04ac,_0x4bc466);if(_0x5e70ff[_0xbafa('0x49')])_0x3f04ac[_0xbafa('0x3a')]++;if(_0x5e70ff[_0xbafa('0x3b')])_0x3f04ac['busy']++;if(_0x5e70ff[_0xbafa('0x22')]&&!_0x5e70ff[_0xbafa('0x3b')]&&!_0x5e70ff[_0xbafa('0x21')])_0x3f04ac[_0xbafa('0x22')]++;_0x3f04ac['agents'][_0xbafa('0x24')](_0x5e70ff);}return _0x3f04ac;});}function getQueueAgents(_0x4e1b1d,_0x1a422d,_0x45e8ae){var _0x14a892=_0xbafa('0x4a')+_[_0xbafa('0x17')](_0x45e8ae)+'Queue';var _0x1c853d=_0x45e8ae+'Pause';return db[_0x14a892][_0xbafa('0x4b')]({'where':{[_['startCase'](_0x45e8ae)+_0xbafa('0x4c')]:_0x4e1b1d['id']},'raw':!![]})[_0xbafa('0x1c')](function(_0x2d6d6c){for(var _0x426cd8=0x0;_0x426cd8<_0x2d6d6c['length'];_0x426cd8++){var _0x424d23=_[_0xbafa('0x3d')](_0x1a422d,['id',_0x2d6d6c[_0x426cd8][_0xbafa('0x47')]]);if(!_0x424d23){_0x424d23={'id':_0x2d6d6c[_0x426cd8][_0xbafa('0x47')],'name':_0x2d6d6c[_0x426cd8][_0xbafa('0x47')],'online':![],['pauseField']:![]};}var _0x3f6b50={'id':_0x424d23['id'],'name':_0x424d23['name'],'online':Boolean(_0x424d23[_0xbafa('0x49')]),'paused':Boolean(_0x424d23[_0x1c853d])};if(_0x3f6b50[_0xbafa('0x49')])_0x4e1b1d[_0xbafa('0x3a')]++;_0x4e1b1d[_0xbafa('0x39')][_0xbafa('0x24')](_0x3f6b50);}return _0x4e1b1d;});}function validateChannel(_0x19e485){var _0x2fbdf5=utils[_0xbafa('0x4d')]();if(!_[_0xbafa('0x4e')](_0x2fbdf5,_0x19e485[_0xbafa('0x4f')]()))throw new Error(_0xbafa('0x50'));return _0x19e485[_0xbafa('0x4f')]();}exports[_0xbafa('0x51')]=function(_0x17e1d7,_0x241c0d){var _0x3c14d9={'count':0x0,'rows':[]};var _0x188570={};var _0x590c8d;var _0x1356bd;var _0x2d1fdd;var _0x1ea5b1;var _0x39dd91=utils['getChannels']();var _0xf89571=_0x17e1d7[_0xbafa('0x52')][_0xbafa('0x53')];var _0x482c9b=_0x17e1d7[_0xbafa('0x52')][_0xbafa('0x54')];var _0x1c2a3d=_0x17e1d7['query']['pauseTypeFilter'];var _0x4e6ce4=_0x482c9b===_0xbafa('0x55')||_0x482c9b==='*pause'?!![]:![];var _0x426426=[];var _0x9abb6a;Promise[_0xbafa('0x56')]()[_0xbafa('0x1c')](function(){if(_0x17e1d7[_0xbafa('0x52')]['channel']){_0x590c8d=validateChannel(_0x17e1d7[_0xbafa('0x52')][_0xbafa('0x57')]);}if(!_0x17e1d7[_0xbafa('0x52')][_0xbafa('0x58')]||!_0x17e1d7['query'][_0xbafa('0x58')][_0xbafa('0x4e')]('globalStatus')){_0x17e1d7[_0xbafa('0x52')][_0xbafa('0x58')]=rta['validateSortParameter'](_0x17e1d7[_0xbafa('0x52')][_0xbafa('0x58')]);return;}var _0x407f48=rta[_0xbafa('0x59')](_0x17e1d7[_0xbafa('0x52')]['sort']);_0x17e1d7[_0xbafa('0x52')][_0xbafa('0x58')]=_0x407f48['fields'][_0xbafa('0x5a')](',');_0x1356bd=_0x407f48[_0xbafa('0x5b')];})['then'](function(){if(!_0xf89571){return[];}return rta[_0xbafa('0x5c')](_0xf89571,_0x590c8d);})[_0xbafa('0x1c')](function(_0x3289cd){_0x426426=_0x3289cd;return rta[_0xbafa('0x5d')]();})[_0xbafa('0x1c')](function(_0x2766b4){_0x1ea5b1=_0x2766b4[_0xbafa('0x5e')];if((!_0x482c9b||_0x4e6ce4)&&!_0x1356bd){return _0x426426;}if(_0x1356bd&&!_0x482c9b){return rta[_0xbafa('0x5f')](_0x1ea5b1,_0x426426,_0x1356bd);}else{return rta[_0xbafa('0x60')](_0x1ea5b1,_0x426426,_0x482c9b);}})[_0xbafa('0x1c')](function(_0x34f41c){_0x426426=_0x34f41c;var _0x475ea6=![];if(_0x426426[_0xbafa('0x42')]===0x0){if(_0xf89571||_0x482c9b){_0x475ea6=!![];}if(_0x4e6ce4){_0x475ea6=![];}}if(_0x475ea6){return _0x3c14d9;}var _0x17d5b1=_[_0xbafa('0x37')](db[_0xbafa('0x4a')]['rawAttributes'],function(_0x2013e5){return{'name':_0x2013e5['fieldName'],'type':_0x2013e5[_0xbafa('0x61')][_0xbafa('0x62')]};});_0x17e1d7['query'][_0xbafa('0x63')]=_0xbafa('0x64');_0x17e1d7[_0xbafa('0x52')][_0xbafa('0x49')]=!![];_0x188570=qs[_0xbafa('0x65')](_0x17d5b1,_0x17e1d7);_0x188570[_0xbafa('0x66')]=!![];var _0x195c44=[];if(_0x426426[_0xbafa('0x42')]>0x0){_0x195c44[_0xbafa('0x24')]({'id':{'$in':_0x426426}});if(_0x1356bd&&!_0x482c9b){_0x9abb6a=[db[_0xbafa('0x67')]['literal'](_0xbafa('0x68')+_0x426426+')')];_0x188570[_0xbafa('0x5b')]=_0x9abb6a;}}if(_0x4e6ce4){_0x39dd91[_0xbafa('0x69')](function(_0x3be47e){var _0xc3d414=!![];if(_0x482c9b===_0xbafa('0x6a')&&_0x590c8d!==_0x3be47e){_0xc3d414=![];}_0x195c44[_0xbafa('0x24')]({[_0x3be47e+_0xbafa('0x6b')]:_0xc3d414});});if(_0x1c2a3d){_0x195c44[_0xbafa('0x24')]({'pauseType':_0x1c2a3d});}}else if(_0x482c9b){_0x39dd91[_0xbafa('0x69')](function(_0x3489d5){_0x195c44[_0xbafa('0x24')]({[_0x3489d5+_0xbafa('0x6b')]:![]});});}_0x188570[_0xbafa('0x6c')]=_[_0xbafa('0x3e')](_0x188570['where'],{'$and':_0x195c44});if(_0x17e1d7[_0xbafa('0x6d')][_0xbafa('0x63')]===_0xbafa('0x6d')){var _0x2279b2={'params':{'id':_0x17e1d7[_0xbafa('0x6d')][_0xbafa('0x6e')]},'query':{'section':_0xbafa('0x6f'),'role':_0xbafa('0x64'),'online':!![],'raw':!![],'ids':_0x426426,'customSorting':_0x9abb6a}};if(_0x4e6ce4){_0x2279b2[_0xbafa('0x52')]['extraQueryConditions']=_0x195c44;}_0x2279b2[_0xbafa('0x52')]=Object['assign'](_0x2279b2[_0xbafa('0x52')],_0x17e1d7[_0xbafa('0x52')]);delete _0x2279b2['query']['id'];return db[_0xbafa('0x70')][_0xbafa('0x71')](_0x2279b2);}return db['User'][_0xbafa('0x72')](_0x188570);})[_0xbafa('0x1c')](function(_0x5d1a96){_0x3c14d9[_0xbafa('0xd')]=_0x5d1a96[_0xbafa('0xd')];_0x2d1fdd=_0x5d1a96[_0xbafa('0x5e')];return _0x2d1fdd[_0xbafa('0x37')](function(_0x5abbf5){var _0xbcb5bf=_[_0xbafa('0x3d')](_0x1ea5b1,['id',_0x5abbf5['id']]);if(_0xbcb5bf){var _0x3afd06=rta[_0xbafa('0x73')](_0xbcb5bf);_[_0xbafa('0x3e')](_0x5abbf5,_0x3afd06);}_0x5abbf5[_0xbafa('0x74')]=rta[_0xbafa('0x75')](_0x5abbf5);if(_0x5abbf5['globalStatus']['includes'](_0xbafa('0x55'))){_0x39dd91[_0xbafa('0x69')](function(_0x1c668d){if(_0x5abbf5[_0x1c668d+_0xbafa('0x6b')]){_0x5abbf5[_0x1c668d+_0xbafa('0x76')]='pause';}});}return _0x5abbf5;});})[_0xbafa('0x1c')](function(_0x432cb5){if(!_0x1356bd||_0x9abb6a){return _0x432cb5;}return rta[_0xbafa('0x77')](_0x432cb5,_0x1356bd);})['then'](function(_0x4c23c5){_0x3c14d9['rows']=_0x4c23c5;return _0x3c14d9;})[_0xbafa('0x1c')](respondWithFilteredResult(_0x241c0d,_0x188570))[_0xbafa('0x1a')](handleError(_0x241c0d,null));};exports['getQueues']=function(_0x5ce30f,_0x3cf443){var _0x18f241={'count':0x0,'rows':[]},_0x29ee4e={},_0x58e735,_0x30532f,_0xd0fc64,_0x2a74fb,_0x3952f7;Promise['resolve']()['then'](function(){if(_0x5ce30f['query'][_0xbafa('0x57')])_0x58e735=validateChannel(_0x5ce30f['query'][_0xbafa('0x57')]);var _0xfe71b0=_[_0xbafa('0x17')](_0x58e735)+_0xbafa('0x78');var _0x50d8ce=_[_0xbafa('0x37')](db[_0xfe71b0][_0xbafa('0x79')],function(_0x3f44ed){return{'name':_0x3f44ed[_0xbafa('0x7a')],'type':_0x3f44ed[_0xbafa('0x61')][_0xbafa('0x62')]};});_0x29ee4e=qs[_0xbafa('0x65')](_0x50d8ce,_0x5ce30f);if(_0x5ce30f[_0xbafa('0x6d')][_0xbafa('0x63')]===_0xbafa('0x6d')){var _0x2701d1={'params':{'id':_0x5ce30f[_0xbafa('0x6d')][_0xbafa('0x6e')]},'query':{'section':_0x58e735===_0xbafa('0x15')&&_0x5ce30f[_0xbafa('0x52')]['type']===_0xbafa('0x23')?_0xbafa('0x7b'):_[_0xbafa('0x17')](_0x58e735)+'Queues','type':_0x5ce30f['query']['type'],'nolimit':!![],'sort':_0xbafa('0x14'),'filter':_0x5ce30f['query'][_0xbafa('0x40')]}};return db[_0xbafa('0x70')][_0xbafa('0x71')](_0x2701d1);}return db[_0xfe71b0][_0xbafa('0x72')](_0x29ee4e);})[_0xbafa('0x1c')](function(_0x2a0a47){_0x18f241['count']=_0x2a0a47['count'];_0x30532f=_0x2a0a47[_0xbafa('0x5e')];return getRealtimeQueues(_0x5ce30f,_0x58e735);})[_0xbafa('0x1c')](function(_0x245a57){_0x2a74fb=_0x245a57['rows'];return rta['getRealtimeAgents']();})['then'](function(_0x2f7f90){_0xd0fc64=_0x2f7f90[_0xbafa('0x5e')];if(_0x58e735!='voice')return;return getRealtimeVoiceQueueChannels();})[_0xbafa('0x1c')](function(_0x8972b1){_0x3952f7=_0x8972b1?_0x8972b1[_0xbafa('0x5e')]:[];return initializeQueues(_0x30532f,_0x2a74fb,_0x58e735,_0x5ce30f[_0xbafa('0x52')][_0xbafa('0x61')]);})['then'](function(_0x5a8bb2){var _0x282d9f=_0x5a8bb2[_0xbafa('0x37')](function(_0x4580c8){if(_0x58e735==='voice')return getVoiceQueueAgents(_0x4580c8,_0x30532f,_0xd0fc64,_0x3952f7);else return getQueueAgents(_0x4580c8,_0xd0fc64,_0x58e735);});return Promise[_0xbafa('0x7c')](_0x282d9f);})['then'](function(_0x287f47){_0x18f241[_0xbafa('0x5e')]=_0x287f47;return _0x18f241;})['then'](respondWithFilteredResult(_0x3cf443,_0x29ee4e))['catch'](handleError(_0x3cf443,null));};