Built motion from commit b0a9a629.|2.6.33
[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 _0xe051=['query','globalQueueFilter','globalStatusFilter','pause','resolve','channel','format','Channel\x20parameter\x20%s\x20is\x20invalid','toLowerCase','sort','includes','globalStatus','getUpdatedSortOptions','fields','order','then','getRealtimeAgents','rows','getSortedAgentsIdsByStatus','getAgentIdsByStatus','length','User','rawAttributes','fieldName','type','key','role','agent','getOptions','raw','push','FIELD(id,','*pause','Pause','forEach','where','merge','user','Agents','online','extraQueryConditions','omit','UserProfile','findAndCountAll','map','find','filterAgentAttributes','getAgentStatus','voice','voiceStatus','talking','Status','sortAgentsByStatus','catch','isValidChannel','startCase','Queue','name','dialActive','join','userProfileId','outbound','QueueCampaigns','Queues','filter','getRealtimeQueues','initializeQueues','lodash','util','../../components/realtime/queues','../../components/parsers/qs','../../mysqldb','../../errors/api','APIBadRequestError','undefined','count','offset','limit','status','set','Content-Range','json','getChannels'];(function(_0x3dde30,_0xd2eb96){var _0x19574b=function(_0x88308){while(--_0x88308){_0x3dde30['push'](_0x3dde30['shift']());}};_0x19574b(++_0xd2eb96);}(_0xe051,0xe9));var _0x1e05=function(_0x321ee6,_0x55caee){_0x321ee6=_0x321ee6-0x0;var _0x3c4f1a=_0xe051[_0x321ee6];return _0x3c4f1a;};'use strict';var _=require(_0x1e05('0x0'));var util=require(_0x1e05('0x1'));var rta=require('../../components/realtime/agents');var rtq=require(_0x1e05('0x2'));var qs=require(_0x1e05('0x3'));var utils=require('../../config/utils');var db=require(_0x1e05('0x4'))['db'];var APIBadRequestError=require(_0x1e05('0x5'))[_0x1e05('0x6')];var APIHandleError=require('../../errors/api')['handleError'];function respondWithFilteredResult(_0x4f1c22,_0x4ae84d){return function(_0x5ce5ff){if(_0x5ce5ff){var _0x1211ae=typeof _0x4ae84d['offset']===_0x1e05('0x7')&&typeof _0x4ae84d['limit']===_0x1e05('0x7');var _0x58867d=_0x5ce5ff[_0x1e05('0x8')];var _0x16b3ed=_0x1211ae?0x0:_0x4ae84d[_0x1e05('0x9')];var _0x1cc278=_0x1211ae?_0x5ce5ff[_0x1e05('0x8')]:_0x4ae84d[_0x1e05('0x9')]+_0x4ae84d[_0x1e05('0xa')];var _0x3ceec3;if(_0x1cc278>=_0x58867d){_0x1cc278=_0x58867d;_0x3ceec3=0xc8;}else{_0x3ceec3=0xce;}_0x4f1c22[_0x1e05('0xb')](_0x3ceec3);return _0x4f1c22[_0x1e05('0xc')](_0x1e05('0xd'),_0x16b3ed+'-'+_0x1cc278+'/'+_0x58867d)[_0x1e05('0xe')](_0x5ce5ff);}return null;};}exports['getAgents']=function(_0x4b2aac,_0x3bafcb){var _0x387513={'count':0x0,'rows':[]};var _0x9d0db={};var _0xf8152c;var _0x5acfe8=utils[_0x1e05('0xf')]();var _0x3370ed;var _0x41b0d5;var _0x126853=_0x4b2aac[_0x1e05('0x10')][_0x1e05('0x11')];var _0x43f37f=_0x4b2aac[_0x1e05('0x10')][_0x1e05('0x12')];var _0x404a64=_0x4b2aac[_0x1e05('0x10')]['pauseTypeFilter'];var _0x271eae=_0x43f37f===_0x1e05('0x13')||_0x43f37f==='*pause'?!![]:![];var _0x1bc12d=[];var _0x2d2033;var _0x263330;Promise[_0x1e05('0x14')]()['then'](function(){if(_0x4b2aac['query'][_0x1e05('0x15')]){if(!utils['isValidChannel'](_0x4b2aac[_0x1e05('0x10')][_0x1e05('0x15')])){throw new APIBadRequestError(util[_0x1e05('0x16')](_0x1e05('0x17'),_0x4b2aac['query']['channel']));}_0xf8152c=_0x4b2aac['query'][_0x1e05('0x15')][_0x1e05('0x18')]();}if(!_0x4b2aac[_0x1e05('0x10')][_0x1e05('0x19')]||!_0x4b2aac[_0x1e05('0x10')][_0x1e05('0x19')][_0x1e05('0x1a')](_0x1e05('0x1b'))){_0x4b2aac[_0x1e05('0x10')]['sort']=rta['validateSortParameter'](_0x4b2aac[_0x1e05('0x10')][_0x1e05('0x19')]);return;}var _0x102de3=rta[_0x1e05('0x1c')](_0x4b2aac[_0x1e05('0x10')]['sort']);_0x4b2aac['query'][_0x1e05('0x19')]=_0x102de3[_0x1e05('0x1d')]['join'](',');_0x2d2033=_0x102de3[_0x1e05('0x1e')];})[_0x1e05('0x1f')](function(){if(!_0x126853){return[];}return rta['getAgentIdsByQueues'](_0x126853,_0xf8152c);})[_0x1e05('0x1f')](function(_0x2e995f){_0x1bc12d=_0x2e995f;return rta[_0x1e05('0x20')]();})[_0x1e05('0x1f')](function(_0x2978eb){_0x41b0d5=_0x2978eb[_0x1e05('0x21')];if((!_0x43f37f||_0x271eae)&&!_0x2d2033){return _0x1bc12d;}if(_0x2d2033&&!_0x43f37f){return rta[_0x1e05('0x22')](_0x41b0d5,_0x1bc12d,_0x2d2033);}else{return rta[_0x1e05('0x23')](_0x41b0d5,_0x1bc12d,_0x43f37f);}})[_0x1e05('0x1f')](function(_0x2f3335){_0x1bc12d=_0x2f3335;var _0x2cf14a=![];if(_0x1bc12d[_0x1e05('0x24')]===0x0){if(_0x126853||_0x43f37f){_0x2cf14a=!![];}if(_0x271eae){_0x2cf14a=![];}}if(_0x2cf14a){return _0x387513;}var _0x5ee702=_['map'](db[_0x1e05('0x25')][_0x1e05('0x26')],function(_0x58368b){return{'name':_0x58368b[_0x1e05('0x27')],'type':_0x58368b[_0x1e05('0x28')][_0x1e05('0x29')]};});_0x4b2aac[_0x1e05('0x10')][_0x1e05('0x2a')]=_0x1e05('0x2b');_0x9d0db=qs[_0x1e05('0x2c')](_0x5ee702,_0x4b2aac);_0x9d0db[_0x1e05('0x2d')]=!![];var _0x1934bf=[];if(_0x1bc12d[_0x1e05('0x24')]>0x0){_0x1934bf[_0x1e05('0x2e')]({'id':{'$in':_0x1bc12d}});if(_0x2d2033&&!_0x43f37f){_0x263330=[db['sequelize']['literal'](_0x1e05('0x2f')+_0x1bc12d+')')];_0x9d0db[_0x1e05('0x1e')]=_0x263330;}}if(_0x271eae){_0x5acfe8['forEach'](function(_0x2252f5){var _0x2d33cd=!![];if(_0x43f37f===_0x1e05('0x30')&&_0xf8152c!==_0x2252f5){_0x2d33cd=![];}_0x1934bf[_0x1e05('0x2e')]({[_0x2252f5+_0x1e05('0x31')]:_0x2d33cd});});if(_0x404a64){_0x1934bf[_0x1e05('0x2e')]({'pauseType':_0x404a64});}}else if(_0x43f37f){_0x5acfe8[_0x1e05('0x32')](function(_0x10371d){_0x1934bf['push']({[_0x10371d+_0x1e05('0x31')]:![]});});}_0x9d0db[_0x1e05('0x33')]=_[_0x1e05('0x34')](_0x9d0db[_0x1e05('0x33')],{'$and':_0x1934bf});if(_0x4b2aac[_0x1e05('0x35')][_0x1e05('0x2a')]===_0x1e05('0x35')){var _0x593045={'params':{'id':_0x4b2aac['user']['userProfileId']},'query':{'section':_0x1e05('0x36'),'role':_0x1e05('0x2b'),'raw':!![],'ids':_0x1bc12d,'customSorting':_0x263330}};if(_0x4b2aac[_0x1e05('0x10')]['online']){_0x593045['query'][_0x1e05('0x37')]=!![];}if(_0x271eae){_0x593045[_0x1e05('0x10')][_0x1e05('0x38')]=_0x1934bf;}_0x593045[_0x1e05('0x10')]=Object['assign'](_0x593045['query'],_[_0x1e05('0x39')](_0x4b2aac[_0x1e05('0x10')],'id'));return db[_0x1e05('0x3a')]['getResources'](_0x593045);}return db[_0x1e05('0x25')][_0x1e05('0x3b')](_0x9d0db);})[_0x1e05('0x1f')](function(_0x444d11){_0x387513[_0x1e05('0x8')]=_0x444d11['count'];_0x3370ed=_0x444d11[_0x1e05('0x21')];return _0x3370ed[_0x1e05('0x3c')](function(_0x39059f){var _0x2e94b2=_[_0x1e05('0x3d')](_0x41b0d5,['id',_0x39059f['id']]);if(_0x2e94b2){var _0x4af172=rta[_0x1e05('0x3e')](_0x2e94b2);_[_0x1e05('0x34')](_0x39059f,_0x4af172);}_0x39059f[_0x1e05('0x1b')]=rta[_0x1e05('0x3f')](_0x39059f);if(_0x39059f[_0x1e05('0x1b')][_0x1e05('0x1a')]('pause')){_0x5acfe8[_0x1e05('0x32')](function(_0xbdfdd8){if(_0x39059f[_0xbdfdd8+'Pause']){if(_0xbdfdd8===_0x1e05('0x40')){if(_0x39059f[_0x1e05('0x41')]!==_0x1e05('0x42')){_0x39059f['voiceStatus']=_0x1e05('0x13');}}else{_0x39059f[_0xbdfdd8+_0x1e05('0x43')]='pause';}}});}return _0x39059f;});})['then'](function(_0x241154){if(!_0x2d2033||_0x263330){return _0x241154;}return rta[_0x1e05('0x44')](_0x241154,_0x2d2033);})[_0x1e05('0x1f')](function(_0x345792){var _0x2c1fb2=rta['getRealtimeAgentsQueryFields']();_0x387513['rows']=_0x345792[_0x1e05('0x3c')](function(_0x60acd2){return _['pick'](_0x60acd2,_0x2c1fb2);});return _0x387513;})[_0x1e05('0x1f')](respondWithFilteredResult(_0x3bafcb,_0x9d0db))[_0x1e05('0x45')](APIHandleError(_0x3bafcb));};exports['getQueues']=function(_0x1c4cb0,_0x111937){var _0x3602cc={'count':0x0,'rows':[]};var _0x2ccaf0={};var _0xc90aae;var _0x56fd83;var _0x4fbfb4;Promise[_0x1e05('0x14')]()[_0x1e05('0x1f')](function(){if(_0x1c4cb0[_0x1e05('0x10')][_0x1e05('0x15')]){if(!utils[_0x1e05('0x46')](_0x1c4cb0[_0x1e05('0x10')][_0x1e05('0x15')])){throw new APIBadRequestError(util[_0x1e05('0x16')](_0x1e05('0x17'),_0x1c4cb0[_0x1e05('0x10')][_0x1e05('0x15')]));}_0xc90aae=_0x1c4cb0[_0x1e05('0x10')][_0x1e05('0x15')][_0x1e05('0x18')]();}var _0x2a4d76=_[_0x1e05('0x47')](_0xc90aae)+_0x1e05('0x48');var _0x3e20bc=_[_0x1e05('0x3c')](db[_0x2a4d76][_0x1e05('0x26')],function(_0x2aab6b){return{'name':_0x2aab6b['fieldName'],'type':_0x2aab6b[_0x1e05('0x28')][_0x1e05('0x29')]};});if(!_0x1c4cb0[_0x1e05('0x10')][_0x1e05('0x1d')]){var _0x6e732a=['id',_0x1e05('0x49')];if(_0xc90aae===_0x1e05('0x40')){_0x6e732a['push'](_0x1e05('0x28'));if(_0x1c4cb0[_0x1e05('0x10')][_0x1e05('0x28')]==='outbound'){_0x6e732a[_0x1e05('0x2e')]([_0x1e05('0x4a'),'dialMethod']);}}_0x1c4cb0[_0x1e05('0x10')][_0x1e05('0x1d')]=_0x6e732a[_0x1e05('0x4b')](',');}_0x2ccaf0=qs[_0x1e05('0x2c')](_0x3e20bc,_0x1c4cb0);if(_0x1c4cb0[_0x1e05('0x35')][_0x1e05('0x2a')]===_0x1e05('0x35')){var _0x4230d7={'params':{'id':_0x1c4cb0[_0x1e05('0x35')][_0x1e05('0x4c')]},'query':{'section':_0xc90aae==='voice'&&_0x1c4cb0[_0x1e05('0x10')][_0x1e05('0x28')]===_0x1e05('0x4d')?_0x1e05('0x4e'):_[_0x1e05('0x47')](_0xc90aae)+_0x1e05('0x4f'),'type':_0x1c4cb0[_0x1e05('0x10')][_0x1e05('0x28')],'nolimit':!![],'sort':'name','filter':_0x1c4cb0[_0x1e05('0x10')][_0x1e05('0x50')]}};_0x4230d7[_0x1e05('0x10')]=Object['assign'](_0x4230d7[_0x1e05('0x10')],_0x1c4cb0[_0x1e05('0x10')]);delete _0x4230d7[_0x1e05('0x10')]['id'];return db[_0x1e05('0x3a')]['getResources'](_0x4230d7);}return db[_0x2a4d76][_0x1e05('0x3b')](_0x2ccaf0);})['then'](function(_0x39ed8e){_0x3602cc[_0x1e05('0x8')]=_0x39ed8e['count'];_0x56fd83=_0x39ed8e['rows'];return rtq[_0x1e05('0x51')](_0x1c4cb0,_0xc90aae);})['then'](function(_0x2c80d4){_0x4fbfb4=_0x2c80d4[_0x1e05('0x21')];return rtq[_0x1e05('0x52')](_0x56fd83,_0x4fbfb4,_0xc90aae,_0x1c4cb0[_0x1e05('0x10')][_0x1e05('0x28')]);})['then'](function(_0x4c32b2){_0x3602cc[_0x1e05('0x21')]=_0x4c32b2;return _0x3602cc;})['then'](respondWithFilteredResult(_0x111937,_0x2ccaf0))['catch'](APIHandleError(_0x111937));};