5c57c6ddfa6cc3ecdecc6ba2c5f0d7be4fcf512a
[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 _0xa09a=['push','sequelize','forEach','Pause','where','merge','user','role','online','extraQueryConditions','assign','omit','getResources','User','find','filterAgentAttributes','getAgentStatus','voiceStatus','Status','sortAgentsByStatus','getRealtimeAgentsQueryFields','pick','catch','getQueues','isValidChannel','format','startCase','Queue','name','dialActive','userProfileId','outbound','QueueCampaigns','Queues','filter','findAndCountAll','initializeQueues','util','../../components/realtime/agents','../../components/parsers/qs','../../config/utils','../../errors/api','offset','undefined','limit','count','status','set','Content-Range','json','getAgents','getChannels','query','globalStatusFilter','pauseTypeFilter','pause','*pause','resolve','channel','Channel\x20parameter\x20%s\x20is\x20invalid','toLowerCase','sort','includes','globalStatus','validateSortParameter','fields','join','order','then','getAgentIdsByQueues','getRealtimeAgents','rows','length','map','rawAttributes','fieldName','type','key','agent','getOptions'];(function(_0x2d61b2,_0x142947){var _0x12df89=function(_0x31c717){while(--_0x31c717){_0x2d61b2['push'](_0x2d61b2['shift']());}};_0x12df89(++_0x142947);}(_0xa09a,0xc5));var _0xaa09=function(_0x5200d4,_0x204578){_0x5200d4=_0x5200d4-0x0;var _0xe40a=_0xa09a[_0x5200d4];return _0xe40a;};'use strict';var _=require('lodash');var util=require(_0xaa09('0x0'));var rta=require(_0xaa09('0x1'));var rtq=require('../../components/realtime/queues');var qs=require(_0xaa09('0x2'));var utils=require(_0xaa09('0x3'));var db=require('../../mysqldb')['db'];var APIBadRequestError=require(_0xaa09('0x4'))['APIBadRequestError'];var APIHandleError=require('../../errors/api')['handleError'];function respondWithFilteredResult(_0xb96d49,_0x4bcca9){return function(_0x4a1531){if(_0x4a1531){var _0x3427e9=typeof _0x4bcca9[_0xaa09('0x5')]===_0xaa09('0x6')&&typeof _0x4bcca9[_0xaa09('0x7')]==='undefined';var _0x454957=_0x4a1531[_0xaa09('0x8')];var _0x4be1a2=_0x3427e9?0x0:_0x4bcca9[_0xaa09('0x5')];var _0x1a214a=_0x3427e9?_0x4a1531['count']:_0x4bcca9[_0xaa09('0x5')]+_0x4bcca9[_0xaa09('0x7')];var _0x51e6d3;if(_0x1a214a>=_0x454957){_0x1a214a=_0x454957;_0x51e6d3=0xc8;}else{_0x51e6d3=0xce;}_0xb96d49[_0xaa09('0x9')](_0x51e6d3);return _0xb96d49[_0xaa09('0xa')](_0xaa09('0xb'),_0x4be1a2+'-'+_0x1a214a+'/'+_0x454957)[_0xaa09('0xc')](_0x4a1531);}return null;};}exports[_0xaa09('0xd')]=function(_0x2a56e0,_0x4e9115){var _0x106d59={'count':0x0,'rows':[]};var _0x1698f4={};var _0x2b6926;var _0x17a1e0=utils[_0xaa09('0xe')]();var _0x376da6;var _0xc9c90e;var _0x215fdf=_0x2a56e0[_0xaa09('0xf')]['globalQueueFilter'];var _0x1b4a26=_0x2a56e0['query'][_0xaa09('0x10')];var _0x4181b6=_0x2a56e0['query'][_0xaa09('0x11')];var _0x335ee6=_0x1b4a26===_0xaa09('0x12')||_0x1b4a26===_0xaa09('0x13')?!![]:![];var _0x36f993=[];var _0x306a81;var _0x50d53c;Promise[_0xaa09('0x14')]()['then'](function(){if(_0x2a56e0[_0xaa09('0xf')]['channel']){if(!utils['isValidChannel'](_0x2a56e0[_0xaa09('0xf')][_0xaa09('0x15')])){throw new APIBadRequestError(util['format'](_0xaa09('0x16'),_0x2a56e0[_0xaa09('0xf')][_0xaa09('0x15')]));}_0x2b6926=_0x2a56e0['query'][_0xaa09('0x15')][_0xaa09('0x17')]();}if(!_0x2a56e0['query'][_0xaa09('0x18')]||!_0x2a56e0['query'][_0xaa09('0x18')][_0xaa09('0x19')](_0xaa09('0x1a'))){_0x2a56e0[_0xaa09('0xf')][_0xaa09('0x18')]=rta[_0xaa09('0x1b')](_0x2a56e0[_0xaa09('0xf')][_0xaa09('0x18')]);return;}var _0x2d65fc=rta['getUpdatedSortOptions'](_0x2a56e0[_0xaa09('0xf')][_0xaa09('0x18')]);_0x2a56e0[_0xaa09('0xf')][_0xaa09('0x18')]=_0x2d65fc[_0xaa09('0x1c')][_0xaa09('0x1d')](',');_0x306a81=_0x2d65fc[_0xaa09('0x1e')];})[_0xaa09('0x1f')](function(){if(!_0x215fdf){return[];}return rta[_0xaa09('0x20')](_0x215fdf,_0x2b6926);})['then'](function(_0xb3a54f){_0x36f993=_0xb3a54f;return rta[_0xaa09('0x21')]();})['then'](function(_0x5ac70e){_0xc9c90e=_0x5ac70e[_0xaa09('0x22')];if((!_0x1b4a26||_0x335ee6)&&!_0x306a81){return _0x36f993;}if(_0x306a81&&!_0x1b4a26){return rta['getSortedAgentsIdsByStatus'](_0xc9c90e,_0x36f993,_0x306a81);}else{return rta['getAgentIdsByStatus'](_0xc9c90e,_0x36f993,_0x1b4a26);}})[_0xaa09('0x1f')](function(_0xe19cb5){_0x36f993=_0xe19cb5;var _0x10fced=![];if(_0x36f993[_0xaa09('0x23')]===0x0){if(_0x215fdf||_0x1b4a26){_0x10fced=!![];}if(_0x335ee6){_0x10fced=![];}}if(_0x10fced){return _0x106d59;}var _0x5653f8=_[_0xaa09('0x24')](db['User'][_0xaa09('0x25')],function(_0x20c1b8){return{'name':_0x20c1b8[_0xaa09('0x26')],'type':_0x20c1b8[_0xaa09('0x27')][_0xaa09('0x28')]};});_0x2a56e0[_0xaa09('0xf')]['role']=_0xaa09('0x29');_0x1698f4=qs[_0xaa09('0x2a')](_0x5653f8,_0x2a56e0);_0x1698f4['raw']=!![];var _0x54ecad=[];if(_0x36f993['length']>0x0){_0x54ecad[_0xaa09('0x2b')]({'id':{'$in':_0x36f993}});if(_0x306a81&&!_0x1b4a26){_0x50d53c=[db[_0xaa09('0x2c')]['literal']('FIELD(id,'+_0x36f993+')')];_0x1698f4['order']=_0x50d53c;}}if(_0x335ee6){_0x17a1e0[_0xaa09('0x2d')](function(_0x5c1301){var _0x5c8634=!![];if(_0x1b4a26===_0xaa09('0x13')&&_0x2b6926!==_0x5c1301){_0x5c8634=![];}_0x54ecad[_0xaa09('0x2b')]({[_0x5c1301+'Pause']:_0x5c8634});});if(_0x4181b6){_0x54ecad[_0xaa09('0x2b')]({'pauseType':_0x4181b6});}}else if(_0x1b4a26){_0x17a1e0[_0xaa09('0x2d')](function(_0x3623c6){_0x54ecad[_0xaa09('0x2b')]({[_0x3623c6+_0xaa09('0x2e')]:![]});});}_0x1698f4[_0xaa09('0x2f')]=_[_0xaa09('0x30')](_0x1698f4[_0xaa09('0x2f')],{'$and':_0x54ecad});if(_0x2a56e0[_0xaa09('0x31')][_0xaa09('0x32')]===_0xaa09('0x31')){var _0x591737={'params':{'id':_0x2a56e0[_0xaa09('0x31')]['userProfileId']},'query':{'section':'Agents','role':_0xaa09('0x29'),'raw':!![],'ids':_0x36f993,'customSorting':_0x50d53c}};if(_0x2a56e0[_0xaa09('0xf')][_0xaa09('0x33')]){_0x591737['query'][_0xaa09('0x33')]=!![];}if(_0x335ee6){_0x591737[_0xaa09('0xf')][_0xaa09('0x34')]=_0x54ecad;}_0x591737['query']=Object[_0xaa09('0x35')](_0x591737[_0xaa09('0xf')],_[_0xaa09('0x36')](_0x2a56e0['query'],'id'));return db['UserProfile'][_0xaa09('0x37')](_0x591737);}return db[_0xaa09('0x38')]['findAndCountAll'](_0x1698f4);})[_0xaa09('0x1f')](function(_0x1674b7){_0x106d59['count']=_0x1674b7[_0xaa09('0x8')];_0x376da6=_0x1674b7[_0xaa09('0x22')];return _0x376da6['map'](function(_0x2335e0){var _0x57018e=_[_0xaa09('0x39')](_0xc9c90e,['id',_0x2335e0['id']]);if(_0x57018e){var _0x1cce95=rta[_0xaa09('0x3a')](_0x57018e);_['merge'](_0x2335e0,_0x1cce95);}_0x2335e0[_0xaa09('0x1a')]=rta[_0xaa09('0x3b')](_0x2335e0);if(_0x2335e0[_0xaa09('0x1a')][_0xaa09('0x19')](_0xaa09('0x12'))){_0x17a1e0[_0xaa09('0x2d')](function(_0x1204ed){if(_0x2335e0[_0x1204ed+_0xaa09('0x2e')]){if(_0x1204ed==='voice'){if(_0x2335e0['voiceStatus']!=='talking'){_0x2335e0[_0xaa09('0x3c')]='pause';}}else{_0x2335e0[_0x1204ed+_0xaa09('0x3d')]='pause';}}});}return _0x2335e0;});})[_0xaa09('0x1f')](function(_0xfed06c){if(!_0x306a81||_0x50d53c){return _0xfed06c;}return rta[_0xaa09('0x3e')](_0xfed06c,_0x306a81);})[_0xaa09('0x1f')](function(_0x448bb4){var _0x586998=rta[_0xaa09('0x3f')]();_0x106d59['rows']=_0x448bb4[_0xaa09('0x24')](function(_0x4cd580){return _[_0xaa09('0x40')](_0x4cd580,_0x586998);});return _0x106d59;})[_0xaa09('0x1f')](respondWithFilteredResult(_0x4e9115,_0x1698f4))[_0xaa09('0x41')](APIHandleError(_0x4e9115));};exports[_0xaa09('0x42')]=function(_0x1635ae,_0x3cffb3){var _0x4a6b02={'count':0x0,'rows':[]};var _0x2a5e67={};var _0x2305eb;var _0x403c89;var _0x4ed905;Promise['resolve']()[_0xaa09('0x1f')](function(){if(_0x1635ae[_0xaa09('0xf')]['channel']){if(!utils[_0xaa09('0x43')](_0x1635ae[_0xaa09('0xf')][_0xaa09('0x15')])){throw new APIBadRequestError(util[_0xaa09('0x44')]('Channel\x20parameter\x20%s\x20is\x20invalid',_0x1635ae[_0xaa09('0xf')][_0xaa09('0x15')]));}_0x2305eb=_0x1635ae[_0xaa09('0xf')][_0xaa09('0x15')][_0xaa09('0x17')]();}var _0x387beb=_[_0xaa09('0x45')](_0x2305eb)+_0xaa09('0x46');var _0x1cdfd1=_[_0xaa09('0x24')](db[_0x387beb][_0xaa09('0x25')],function(_0x4a7775){return{'name':_0x4a7775[_0xaa09('0x26')],'type':_0x4a7775['type'][_0xaa09('0x28')]};});if(!_0x1635ae['query'][_0xaa09('0x1c')]){var _0x1d7ccb=['id',_0xaa09('0x47')];if(_0x2305eb==='voice'){_0x1d7ccb[_0xaa09('0x2b')](_0xaa09('0x27'));if(_0x1635ae['query']['type']==='outbound'){_0x1d7ccb[_0xaa09('0x2b')]([_0xaa09('0x48'),'dialMethod']);}}_0x1635ae['query'][_0xaa09('0x1c')]=_0x1d7ccb[_0xaa09('0x1d')](',');}_0x2a5e67=qs['getOptions'](_0x1cdfd1,_0x1635ae);if(_0x1635ae['user'][_0xaa09('0x32')]===_0xaa09('0x31')){var _0x56da52={'params':{'id':_0x1635ae[_0xaa09('0x31')][_0xaa09('0x49')]},'query':{'section':_0x2305eb==='voice'&&_0x1635ae[_0xaa09('0xf')][_0xaa09('0x27')]===_0xaa09('0x4a')?_0xaa09('0x4b'):_[_0xaa09('0x45')](_0x2305eb)+_0xaa09('0x4c'),'type':_0x1635ae[_0xaa09('0xf')]['type'],'nolimit':!![],'sort':'name','filter':_0x1635ae[_0xaa09('0xf')][_0xaa09('0x4d')]}};_0x56da52[_0xaa09('0xf')]=Object[_0xaa09('0x35')](_0x56da52[_0xaa09('0xf')],_0x1635ae['query']);delete _0x56da52[_0xaa09('0xf')]['id'];return db['UserProfile'][_0xaa09('0x37')](_0x56da52);}return db[_0x387beb][_0xaa09('0x4e')](_0x2a5e67);})[_0xaa09('0x1f')](function(_0x957747){_0x4a6b02['count']=_0x957747[_0xaa09('0x8')];_0x403c89=_0x957747[_0xaa09('0x22')];return rtq['getRealtimeQueues'](_0x1635ae,_0x2305eb);})[_0xaa09('0x1f')](function(_0x1c860d){_0x4ed905=_0x1c860d[_0xaa09('0x22')];return rtq[_0xaa09('0x4f')](_0x403c89,_0x4ed905,_0x2305eb,_0x1635ae[_0xaa09('0xf')][_0xaa09('0x27')]);})['then'](function(_0x928b05){_0x4a6b02[_0xaa09('0x22')]=_0x928b05;return _0x4a6b02;})[_0xaa09('0x1f')](respondWithFilteredResult(_0x3cffb3,_0x2a5e67))[_0xaa09('0x41')](APIHandleError(_0x3cffb3));};