Built motion from commit 1fa89557.|2.6.10
[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 _0x219c=['query','globalQueueFilter','globalStatusFilter','pause','*pause','resolve','includes','globalStatus','sort','validateSortParameter','getUpdatedSortOptions','fields','join','getAgentIdsByQueues','getRealtimeAgents','rows','getSortedAgentsIdsByStatus','rawAttributes','type','key','role','agent','getOptions','raw','sequelize','FIELD(id,','order','forEach','Pause','where','user','userProfileId','extraQueryConditions','assign','UserProfile','findAndCountAll','filterAgentAttributes','Status','getQueues','channel','Queue','fieldName','getResources','all','util','lodash','jayson/promise','../../components/realtime/agents','../../components/parsers/qs','../../config/utils','../../config/logger','api','client','http','offset','undefined','limit','count','status','set','Content-Range','json','error','stack','name','send','request','startCase','Queues','then','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','catch','VoiceQueuesChannels','Unable\x20to\x20retrieve\x20voice\x20queues\x20channels','talking','voice','outbound','push','originated','message','dialActive','Trunk','startPredictive','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','map','agents','paused','loggedInDb','loggedIn','available','busy','pTalking','merge','pick','filter','queue','length','connectedlinenum','toString','find','getMembers','UserId','accountcode','voiceStatus','online','User','findAll','QueueId','Invalid\x20channel','getAgents','getChannels'];(function(_0x1f3fa2,_0x1f43a9){var _0x49b84f=function(_0x2913ba){while(--_0x2913ba){_0x1f3fa2['push'](_0x1f3fa2['shift']());}};_0x49b84f(++_0x1f43a9);}(_0x219c,0xa9));var _0xc219=function(_0x56b82b,_0x1c90d2){_0x56b82b=_0x56b82b-0x0;var _0xe7bf9=_0x219c[_0x56b82b];return _0xe7bf9;};'use strict';var util=require(_0xc219('0x0'));var _=require(_0xc219('0x1'));var jayson=require(_0xc219('0x2'));var rta=require(_0xc219('0x3'));var qs=require(_0xc219('0x4'));var utils=require(_0xc219('0x5'));var logger=require(_0xc219('0x6'))(_0xc219('0x7'));var db=require('../../mysqldb')['db'];var amiClient=jayson[_0xc219('0x8')][_0xc219('0x9')]({'port':0x232a});var routingClient=jayson[_0xc219('0x8')][_0xc219('0x9')]({'port':0x232c});function respondWithFilteredResult(_0x2ca484,_0x54b700){return function(_0x578846){if(_0x578846){var _0x4e5f0e=typeof _0x54b700[_0xc219('0xa')]===_0xc219('0xb')&&typeof _0x54b700[_0xc219('0xc')]==='undefined';var _0x4548eb=_0x578846[_0xc219('0xd')];var _0x16df13=_0x4e5f0e?0x0:_0x54b700[_0xc219('0xa')];var _0xed1bf=_0x4e5f0e?_0x578846[_0xc219('0xd')]:_0x54b700[_0xc219('0xa')]+_0x54b700[_0xc219('0xc')];var _0x14d751;if(_0xed1bf>=_0x4548eb){_0xed1bf=_0x4548eb;_0x14d751=0xc8;}else{_0x14d751=0xce;}_0x2ca484[_0xc219('0xe')](_0x14d751);return _0x2ca484[_0xc219('0xf')](_0xc219('0x10'),_0x16df13+'-'+_0xed1bf+'/'+_0x4548eb)[_0xc219('0x11')](_0x578846);}return null;};}function handleError(_0x34e40c,_0x13fc99){_0x13fc99=_0x13fc99||0x1f4;return function(_0x33c515){logger[_0xc219('0x12')](_0x33c515[_0xc219('0x13')]);if(_0x33c515[_0xc219('0x14')]){delete _0x33c515[_0xc219('0x14')];}_0x34e40c[_0xc219('0xe')](_0x13fc99)[_0xc219('0x15')](_0x33c515);};}function getRealtimeQueues(_0x57035b,_0x29ae0c){return new Promise(function(_0x26a4f3,_0x2f930c){var _0x18fe3a=_0x29ae0c==='voice'?amiClient:routingClient;return _0x18fe3a[_0xc219('0x16')](_[_0xc219('0x17')](_0x29ae0c)+_0xc219('0x18'),_0x57035b)[_0xc219('0x19')](function(_0x36cd7b){if(_0x36cd7b[_0xc219('0x12')])throw new Error(util['format'](_0xc219('0x1a'),_0x29ae0c));return _0x26a4f3(_0x36cd7b[_0xc219('0x1b')]);})[_0xc219('0x1c')](function(_0x1163fe){_0x2f930c(_0x1163fe);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x5ad257,_0x44bfc7){return amiClient['request'](_0xc219('0x1d'),{})[_0xc219('0x19')](function(_0x3bd66f){if(_0x3bd66f[_0xc219('0x12')])throw new Error(_0xc219('0x1e'));return _0x5ad257(_0x3bd66f[_0xc219('0x1b')]);})[_0xc219('0x1c')](function(_0x56091d){_0x44bfc7(_0x56091d);});});}function initializeQueues(_0x116068,_0x8c7cf2,_0x2ea4ac,_0x219ff2){var _0x5c92c0=['loggedIn','available','waiting',_0xc219('0x1f'),'paused'];if(_0x2ea4ac===_0xc219('0x20')&&_0x219ff2===_0xc219('0x21')){_0x5c92c0[_0xc219('0x22')]('pTalking',_0xc219('0x23'),_0xc219('0x24'),_0xc219('0x25'),'dialMethod',_0xc219('0x26'),_0xc219('0x27'),_0xc219('0x28'),_0xc219('0x29'),_0xc219('0x2a'),_0xc219('0x2b'),_0xc219('0x2c'),_0xc219('0x2d'),_0xc219('0x2e'),_0xc219('0x2f'),_0xc219('0x30'),_0xc219('0x31'),_0xc219('0x32'),_0xc219('0x33'),'predictiveIntervalDroppedCallsCallersExit',_0xc219('0x34'),_0xc219('0x35'));}return _0x116068[_0xc219('0x36')](function(_0x2e8a89){var _0x9ecb03=_0x2e8a89['get']({'plain':!![]});_0x9ecb03[_0xc219('0x37')]=[];_0x9ecb03[_0xc219('0x38')]=0x0;_0x9ecb03[_0xc219('0x39')]=0x0;_0x9ecb03[_0xc219('0x3a')]=0x0;_0x9ecb03[_0xc219('0x3b')]=0x0;_0x9ecb03['waiting']=0x0;if(_0x2ea4ac==='voice'){_0x9ecb03[_0xc219('0x1f')]=0x0;_0x9ecb03[_0xc219('0x3c')]=0x0;if(_0x219ff2===_0xc219('0x21')){_0x9ecb03[_0xc219('0x3d')]=0x0;_0x9ecb03[_0xc219('0x23')]=0x0;}}var _0x138de9=_['find'](_0x8c7cf2,['id',_0x9ecb03['id']]);if(_0x138de9)_[_0xc219('0x3e')](_0x9ecb03,_[_0xc219('0x3f')](_0x138de9,_0x5c92c0));return _0x9ecb03;});}function updateAgentVoiceStatus(_0x68345f,_0x4be2a9,_0x562e00){var _0x1cce08=_[_0xc219('0x40')](_0x562e00,[_0xc219('0x41'),_0x4be2a9[_0xc219('0x14')]]);if(_0x1cce08[_0xc219('0x42')]===0x0)return _0x68345f[_0xc219('0x3c')]=!![];if(_['some'](_0x1cce08,[_0xc219('0x43'),_0x68345f['internal'][_0xc219('0x44')]()]))return _0x68345f['talking']=!![];if(!_0x68345f['talking'])return _0x68345f[_0xc219('0x3c')]=!![];}function getVoiceQueueAgents(_0x188a63,_0x5dd650,_0x2d300b,_0xea1ddb){var _0x13c813=_[_0xc219('0x45')](_0x5dd650,['id',_0x188a63['id']]);if(!_0x13c813)return _0x188a63;return _0x13c813[_0xc219('0x46')]({'raw':!![]})[_0xc219('0x19')](function(_0x164e9a){for(var _0x292ae7=0x0;_0x292ae7<_0x164e9a[_0xc219('0x42')];_0x292ae7++){var _0x338b8a=_['find'](_0x2d300b,['id',_0x164e9a[_0x292ae7][_0xc219('0x47')]]);if(!_0x338b8a){_0x338b8a={'id':_0x164e9a[_0x292ae7][_0xc219('0x47')],'name':_0x164e9a[_0x292ae7][_0xc219('0x47')],'accountcode':'','online':![]};}var _0x4d88d3={'id':_0x338b8a['id'],'name':_0x338b8a[_0xc219('0x14')],'internal':_0x338b8a[_0xc219('0x48')],'online':Boolean(_0x338b8a['online']),'paused':Boolean(_0x164e9a[_0x292ae7][_0xc219('0x38')])};if(_0x338b8a[_0xc219('0x49')]===_0xc219('0x1f'))updateAgentVoiceStatus(_0x4d88d3,_0x188a63,_0xea1ddb);if(_0x4d88d3[_0xc219('0x4a')])_0x188a63[_0xc219('0x39')]++;if(_0x4d88d3[_0xc219('0x3c')])_0x188a63[_0xc219('0x3c')]++;if(_0x4d88d3['paused']&&!_0x4d88d3[_0xc219('0x3c')]&&!_0x4d88d3[_0xc219('0x1f')])_0x188a63['paused']++;_0x188a63[_0xc219('0x37')][_0xc219('0x22')](_0x4d88d3);}return _0x188a63;});}function getQueueAgents(_0x4df369,_0x141252,_0x4d50ee){var _0x4f07fe=_0xc219('0x4b')+_[_0xc219('0x17')](_0x4d50ee)+'Queue';var _0x577760=_0x4d50ee+'Pause';return db[_0x4f07fe][_0xc219('0x4c')]({'where':{[_[_0xc219('0x17')](_0x4d50ee)+_0xc219('0x4d')]:_0x4df369['id']},'raw':!![]})[_0xc219('0x19')](function(_0x1eaba6){for(var _0x4f57ca=0x0;_0x4f57ca<_0x1eaba6[_0xc219('0x42')];_0x4f57ca++){var _0x2f4134=_[_0xc219('0x45')](_0x141252,['id',_0x1eaba6[_0x4f57ca][_0xc219('0x47')]]);if(!_0x2f4134){_0x2f4134={'id':_0x1eaba6[_0x4f57ca][_0xc219('0x47')],'name':_0x1eaba6[_0x4f57ca][_0xc219('0x47')],'online':![],['pauseField']:![]};}var _0x2448fa={'id':_0x2f4134['id'],'name':_0x2f4134[_0xc219('0x14')],'online':Boolean(_0x2f4134[_0xc219('0x4a')]),'paused':Boolean(_0x2f4134[_0x577760])};if(_0x2448fa[_0xc219('0x4a')])_0x4df369[_0xc219('0x39')]++;_0x4df369[_0xc219('0x37')]['push'](_0x2448fa);}return _0x4df369;});}function validateChannel(_0x12dc16){var _0x3fdced=utils['getChannels']();if(!_['includes'](_0x3fdced,_0x12dc16['toLowerCase']()))throw new Error(_0xc219('0x4e'));return _0x12dc16['toLowerCase']();}exports[_0xc219('0x4f')]=function(_0x5c8f28,_0x153a58){var _0x17a5ef={'count':0x0,'rows':[]};var _0x3528c5={};var _0x9eae77;var _0x5150fc;var _0xdb9699;var _0x435d1f;var _0x1853ee=utils[_0xc219('0x50')]();var _0x206f8e=_0x5c8f28[_0xc219('0x51')][_0xc219('0x52')];var _0x58eab3=_0x5c8f28[_0xc219('0x51')][_0xc219('0x53')];var _0x96c136=_0x5c8f28['query']['pauseTypeFilter'];var _0x2fcf1e=_0x58eab3===_0xc219('0x54')||_0x58eab3===_0xc219('0x55')?!![]:![];var _0x4b10b0=[];var _0x3a68b8;Promise[_0xc219('0x56')]()[_0xc219('0x19')](function(){if(_0x5c8f28[_0xc219('0x51')]['channel']){_0x9eae77=validateChannel(_0x5c8f28[_0xc219('0x51')]['channel']);}if(!_0x5c8f28[_0xc219('0x51')]['sort']||!_0x5c8f28[_0xc219('0x51')]['sort'][_0xc219('0x57')](_0xc219('0x58'))){_0x5c8f28[_0xc219('0x51')][_0xc219('0x59')]=rta[_0xc219('0x5a')](_0x5c8f28['query'][_0xc219('0x59')]);return;}var _0x5d33a9=rta[_0xc219('0x5b')](_0x5c8f28['query'][_0xc219('0x59')]);_0x5c8f28[_0xc219('0x51')][_0xc219('0x59')]=_0x5d33a9[_0xc219('0x5c')][_0xc219('0x5d')](',');_0x5150fc=_0x5d33a9['order'];})[_0xc219('0x19')](function(){if(!_0x206f8e){return[];}return rta[_0xc219('0x5e')](_0x206f8e,_0x9eae77);})[_0xc219('0x19')](function(_0x47def7){_0x4b10b0=_0x47def7;return rta[_0xc219('0x5f')]();})[_0xc219('0x19')](function(_0x103637){_0x435d1f=_0x103637[_0xc219('0x60')];if((!_0x58eab3||_0x2fcf1e)&&!_0x5150fc){return _0x4b10b0;}if(_0x5150fc&&!_0x58eab3){return rta[_0xc219('0x61')](_0x435d1f,_0x4b10b0,_0x5150fc);}else{return rta['getAgentIdsByStatus'](_0x435d1f,_0x4b10b0,_0x58eab3);}})['then'](function(_0x1857d6){_0x4b10b0=_0x1857d6;var _0x25a3a4=![];if(_0x4b10b0['length']===0x0){if(_0x206f8e||_0x58eab3){_0x25a3a4=!![];}if(_0x2fcf1e){_0x25a3a4=![];}}if(_0x25a3a4){return _0x17a5ef;}var _0x44c80c=_['map'](db[_0xc219('0x4b')][_0xc219('0x62')],function(_0x3ce5f4){return{'name':_0x3ce5f4['fieldName'],'type':_0x3ce5f4[_0xc219('0x63')][_0xc219('0x64')]};});_0x5c8f28[_0xc219('0x51')][_0xc219('0x65')]=_0xc219('0x66');_0x5c8f28[_0xc219('0x51')]['online']=!![];_0x3528c5=qs[_0xc219('0x67')](_0x44c80c,_0x5c8f28);_0x3528c5[_0xc219('0x68')]=!![];var _0x4559f7=[];if(_0x4b10b0[_0xc219('0x42')]>0x0){_0x4559f7[_0xc219('0x22')]({'id':{'$in':_0x4b10b0}});if(_0x5150fc&&!_0x58eab3){_0x3a68b8=[db[_0xc219('0x69')]['literal'](_0xc219('0x6a')+_0x4b10b0+')')];_0x3528c5[_0xc219('0x6b')]=_0x3a68b8;}}if(_0x2fcf1e){_0x1853ee[_0xc219('0x6c')](function(_0xaa4468){var _0x374a3c=!![];if(_0x58eab3===_0xc219('0x55')&&_0x9eae77!==_0xaa4468){_0x374a3c=![];}_0x4559f7['push']({[_0xaa4468+_0xc219('0x6d')]:_0x374a3c});});if(_0x96c136){_0x4559f7[_0xc219('0x22')]({'pauseType':_0x96c136});}}else if(_0x58eab3){_0x1853ee[_0xc219('0x6c')](function(_0x172e7d){_0x4559f7[_0xc219('0x22')]({[_0x172e7d+_0xc219('0x6d')]:![]});});}_0x3528c5['where']=_[_0xc219('0x3e')](_0x3528c5[_0xc219('0x6e')],{'$and':_0x4559f7});if(_0x5c8f28[_0xc219('0x6f')][_0xc219('0x65')]===_0xc219('0x6f')){var _0x386e7f={'params':{'id':_0x5c8f28[_0xc219('0x6f')][_0xc219('0x70')]},'query':{'section':'Agents','role':'agent','online':!![],'raw':!![],'ids':_0x4b10b0,'customSorting':_0x3a68b8}};if(_0x2fcf1e){_0x386e7f[_0xc219('0x51')][_0xc219('0x71')]=_0x4559f7;}_0x386e7f['query']=Object[_0xc219('0x72')](_0x386e7f[_0xc219('0x51')],_0x5c8f28[_0xc219('0x51')]);delete _0x386e7f['query']['id'];return db[_0xc219('0x73')]['getResources'](_0x386e7f);}return db['User'][_0xc219('0x74')](_0x3528c5);})[_0xc219('0x19')](function(_0x33a248){_0x17a5ef[_0xc219('0xd')]=_0x33a248[_0xc219('0xd')];_0xdb9699=_0x33a248[_0xc219('0x60')];return _0xdb9699[_0xc219('0x36')](function(_0x351e20){var _0x5352e2=_[_0xc219('0x45')](_0x435d1f,['id',_0x351e20['id']]);if(_0x5352e2){var _0x2f1608=rta[_0xc219('0x75')](_0x5352e2);_[_0xc219('0x3e')](_0x351e20,_0x2f1608);}_0x351e20['globalStatus']=rta['getAgentStatus'](_0x351e20);if(_0x351e20[_0xc219('0x58')][_0xc219('0x57')](_0xc219('0x54'))){_0x1853ee[_0xc219('0x6c')](function(_0x4f60ee){if(_0x351e20[_0x4f60ee+_0xc219('0x6d')]){_0x351e20[_0x4f60ee+_0xc219('0x76')]=_0xc219('0x54');}});}return _0x351e20;});})['then'](function(_0x3e740c){if(!_0x5150fc||_0x3a68b8){return _0x3e740c;}return rta['sortAgentsByStatus'](_0x3e740c,_0x5150fc);})['then'](function(_0x55b33c){_0x17a5ef[_0xc219('0x60')]=_0x55b33c;return _0x17a5ef;})[_0xc219('0x19')](respondWithFilteredResult(_0x153a58,_0x3528c5))['catch'](handleError(_0x153a58,null));};exports[_0xc219('0x77')]=function(_0x3c2927,_0x21af78){var _0x5cb2ae={'count':0x0,'rows':[]},_0x361d81={},_0x8fc6ae,_0x572c81,_0x48f2b6,_0x715157,_0xa774f6;Promise['resolve']()[_0xc219('0x19')](function(){if(_0x3c2927['query'][_0xc219('0x78')])_0x8fc6ae=validateChannel(_0x3c2927[_0xc219('0x51')][_0xc219('0x78')]);var _0x2b5eeb=_['startCase'](_0x8fc6ae)+_0xc219('0x79');var _0x22d0ce=_[_0xc219('0x36')](db[_0x2b5eeb][_0xc219('0x62')],function(_0x4eec8b){return{'name':_0x4eec8b[_0xc219('0x7a')],'type':_0x4eec8b[_0xc219('0x63')][_0xc219('0x64')]};});_0x361d81=qs['getOptions'](_0x22d0ce,_0x3c2927);if(_0x3c2927[_0xc219('0x6f')]['role']===_0xc219('0x6f')){var _0x943023={'params':{'id':_0x3c2927[_0xc219('0x6f')]['userProfileId']},'query':{'section':_0x8fc6ae===_0xc219('0x20')&&_0x3c2927[_0xc219('0x51')][_0xc219('0x63')]===_0xc219('0x21')?'QueueCampaigns':_['startCase'](_0x8fc6ae)+_0xc219('0x18'),'type':_0x3c2927[_0xc219('0x51')][_0xc219('0x63')],'nolimit':!![],'sort':'name','filter':_0x3c2927[_0xc219('0x51')][_0xc219('0x40')]}};return db['UserProfile'][_0xc219('0x7b')](_0x943023);}return db[_0x2b5eeb][_0xc219('0x74')](_0x361d81);})[_0xc219('0x19')](function(_0x37fc06){_0x5cb2ae[_0xc219('0xd')]=_0x37fc06[_0xc219('0xd')];_0x572c81=_0x37fc06['rows'];return getRealtimeQueues(_0x3c2927,_0x8fc6ae);})[_0xc219('0x19')](function(_0x3f186e){_0x715157=_0x3f186e[_0xc219('0x60')];return rta[_0xc219('0x5f')]();})['then'](function(_0x4157f7){_0x48f2b6=_0x4157f7['rows'];if(_0x8fc6ae!=_0xc219('0x20'))return;return getRealtimeVoiceQueueChannels();})[_0xc219('0x19')](function(_0x34c91e){_0xa774f6=_0x34c91e?_0x34c91e[_0xc219('0x60')]:[];return initializeQueues(_0x572c81,_0x715157,_0x8fc6ae,_0x3c2927[_0xc219('0x51')][_0xc219('0x63')]);})['then'](function(_0x16c8b6){var _0x5209b5=_0x16c8b6[_0xc219('0x36')](function(_0x486ece){if(_0x8fc6ae===_0xc219('0x20'))return getVoiceQueueAgents(_0x486ece,_0x572c81,_0x48f2b6,_0xa774f6);else return getQueueAgents(_0x486ece,_0x48f2b6,_0x8fc6ae);});return Promise[_0xc219('0x7c')](_0x5209b5);})[_0xc219('0x19')](function(_0x18f92e){_0x5cb2ae[_0xc219('0x60')]=_0x18f92e;return _0x5cb2ae;})['then'](respondWithFilteredResult(_0x21af78,_0x361d81))[_0xc219('0x1c')](handleError(_0x21af78,null));};