Built motion from commit e1760111.|2.6.18
[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 _0x08c9=['raw','push','FIELD(id,','forEach','*pause','Pause','merge','user','userProfileId','Agents','agent','assign','getResources','User','findAndCountAll','map','find','filterAgentAttributes','getAgentStatus','voiceStatus','talking','Status','fields','pick','resolve','Channel\x20parameter\x20%s\x20is\x20invalid','toLowerCase','fieldName','key','voice','outbound','dialActive','QueueCampaigns','startCase','Queues','name','getRealtimeQueues','catch','util','../../components/realtime/agents','../../components/realtime/queues','../../mysqldb','APIBadRequestError','handleError','offset','undefined','limit','count','status','Content-Range','json','getAgents','getChannels','query','globalQueueFilter','globalStatusFilter','pauseTypeFilter','pause','channel','isValidChannel','format','sort','includes','validateSortParameter','getUpdatedSortOptions','join','order','then','getAgentIdsByQueues','rows','getSortedAgentsIdsByStatus','getAgentIdsByStatus','length','rawAttributes','type','role','online','getOptions'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0x08c9,0x15e));var _0x908c=function(_0x38055a,_0x114cf8){_0x38055a=_0x38055a-0x0;var _0x2381d1=_0x08c9[_0x38055a];return _0x2381d1;};'use strict';var _=require('lodash');var util=require(_0x908c('0x0'));var rta=require(_0x908c('0x1'));var rtq=require(_0x908c('0x2'));var qs=require('../../components/parsers/qs');var utils=require('../../config/utils');var db=require(_0x908c('0x3'))['db'];var APIBadRequestError=require('../../errors/api')[_0x908c('0x4')];var APIHandleError=require('../../errors/api')[_0x908c('0x5')];function respondWithFilteredResult(_0x3ce592,_0x854b50){return function(_0x318f62){if(_0x318f62){var _0x170178=typeof _0x854b50[_0x908c('0x6')]===_0x908c('0x7')&&typeof _0x854b50[_0x908c('0x8')]===_0x908c('0x7');var _0x493a3c=_0x318f62['count'];var _0x316554=_0x170178?0x0:_0x854b50[_0x908c('0x6')];var _0x342ab0=_0x170178?_0x318f62[_0x908c('0x9')]:_0x854b50[_0x908c('0x6')]+_0x854b50[_0x908c('0x8')];var _0x1b6f5e;if(_0x342ab0>=_0x493a3c){_0x342ab0=_0x493a3c;_0x1b6f5e=0xc8;}else{_0x1b6f5e=0xce;}_0x3ce592[_0x908c('0xa')](_0x1b6f5e);return _0x3ce592['set'](_0x908c('0xb'),_0x316554+'-'+_0x342ab0+'/'+_0x493a3c)[_0x908c('0xc')](_0x318f62);}return null;};}exports[_0x908c('0xd')]=function(_0x3be40b,_0x3d8a38){var _0xe331fa={'count':0x0,'rows':[]};var _0x1ad42e={};var _0x2675d8;var _0x53a0b1=utils[_0x908c('0xe')]();var _0x3b1e64;var _0x163827;var _0x2e743e=_0x3be40b[_0x908c('0xf')][_0x908c('0x10')];var _0xf3409=_0x3be40b[_0x908c('0xf')][_0x908c('0x11')];var _0x50475c=_0x3be40b['query'][_0x908c('0x12')];var _0x173041=_0xf3409===_0x908c('0x13')||_0xf3409==='*pause'?!![]:![];var _0x440151=[];var _0x2d4638;var _0x5040cc;Promise['resolve']()['then'](function(){if(_0x3be40b['query'][_0x908c('0x14')]){if(!utils[_0x908c('0x15')](_0x3be40b[_0x908c('0xf')][_0x908c('0x14')])){throw new APIBadRequestError(util[_0x908c('0x16')]('Channel\x20parameter\x20%s\x20is\x20invalid',_0x3be40b[_0x908c('0xf')][_0x908c('0x14')]));}_0x2675d8=_0x3be40b['query']['channel']['toLowerCase']();}if(!_0x3be40b[_0x908c('0xf')][_0x908c('0x17')]||!_0x3be40b['query'][_0x908c('0x17')][_0x908c('0x18')]('globalStatus')){_0x3be40b[_0x908c('0xf')][_0x908c('0x17')]=rta[_0x908c('0x19')](_0x3be40b['query'][_0x908c('0x17')]);return;}var _0x35803f=rta[_0x908c('0x1a')](_0x3be40b[_0x908c('0xf')][_0x908c('0x17')]);_0x3be40b[_0x908c('0xf')][_0x908c('0x17')]=_0x35803f['fields'][_0x908c('0x1b')](',');_0x2d4638=_0x35803f[_0x908c('0x1c')];})[_0x908c('0x1d')](function(){if(!_0x2e743e){return[];}return rta[_0x908c('0x1e')](_0x2e743e,_0x2675d8);})[_0x908c('0x1d')](function(_0x3268a7){_0x440151=_0x3268a7;return rta['getRealtimeAgents']();})[_0x908c('0x1d')](function(_0x1bf604){_0x163827=_0x1bf604[_0x908c('0x1f')];if((!_0xf3409||_0x173041)&&!_0x2d4638){return _0x440151;}if(_0x2d4638&&!_0xf3409){return rta[_0x908c('0x20')](_0x163827,_0x440151,_0x2d4638);}else{return rta[_0x908c('0x21')](_0x163827,_0x440151,_0xf3409);}})[_0x908c('0x1d')](function(_0x3f019b){_0x440151=_0x3f019b;var _0x38303f=![];if(_0x440151[_0x908c('0x22')]===0x0){if(_0x2e743e||_0xf3409){_0x38303f=!![];}if(_0x173041){_0x38303f=![];}}if(_0x38303f){return _0xe331fa;}var _0x356727=_['map'](db['User'][_0x908c('0x23')],function(_0x53c78d){return{'name':_0x53c78d['fieldName'],'type':_0x53c78d[_0x908c('0x24')]['key']};});_0x3be40b['query'][_0x908c('0x25')]='agent';_0x3be40b[_0x908c('0xf')][_0x908c('0x26')]=!![];_0x1ad42e=qs[_0x908c('0x27')](_0x356727,_0x3be40b);_0x1ad42e[_0x908c('0x28')]=!![];var _0x550a2a=[];if(_0x440151['length']>0x0){_0x550a2a[_0x908c('0x29')]({'id':{'$in':_0x440151}});if(_0x2d4638&&!_0xf3409){_0x5040cc=[db['sequelize']['literal'](_0x908c('0x2a')+_0x440151+')')];_0x1ad42e['order']=_0x5040cc;}}if(_0x173041){_0x53a0b1[_0x908c('0x2b')](function(_0x1bbb65){var _0x40ba93=!![];if(_0xf3409===_0x908c('0x2c')&&_0x2675d8!==_0x1bbb65){_0x40ba93=![];}_0x550a2a['push']({[_0x1bbb65+'Pause']:_0x40ba93});});if(_0x50475c){_0x550a2a['push']({'pauseType':_0x50475c});}}else if(_0xf3409){_0x53a0b1[_0x908c('0x2b')](function(_0x1617ca){_0x550a2a[_0x908c('0x29')]({[_0x1617ca+_0x908c('0x2d')]:![]});});}_0x1ad42e['where']=_[_0x908c('0x2e')](_0x1ad42e['where'],{'$and':_0x550a2a});if(_0x3be40b[_0x908c('0x2f')]['role']===_0x908c('0x2f')){var _0x15f661={'params':{'id':_0x3be40b[_0x908c('0x2f')][_0x908c('0x30')]},'query':{'section':_0x908c('0x31'),'role':_0x908c('0x32'),'online':!![],'raw':!![],'ids':_0x440151,'customSorting':_0x5040cc}};if(_0x173041){_0x15f661[_0x908c('0xf')]['extraQueryConditions']=_0x550a2a;}_0x15f661[_0x908c('0xf')]=Object[_0x908c('0x33')](_0x15f661[_0x908c('0xf')],_0x3be40b[_0x908c('0xf')]);delete _0x15f661[_0x908c('0xf')]['id'];return db['UserProfile'][_0x908c('0x34')](_0x15f661);}return db[_0x908c('0x35')][_0x908c('0x36')](_0x1ad42e);})[_0x908c('0x1d')](function(_0x5cedd1){_0xe331fa[_0x908c('0x9')]=_0x5cedd1[_0x908c('0x9')];_0x3b1e64=_0x5cedd1[_0x908c('0x1f')];return _0x3b1e64[_0x908c('0x37')](function(_0x44e817){var _0xf3cae6=_[_0x908c('0x38')](_0x163827,['id',_0x44e817['id']]);if(_0xf3cae6){var _0x491627=rta[_0x908c('0x39')](_0xf3cae6);_['merge'](_0x44e817,_0x491627);}_0x44e817['globalStatus']=rta[_0x908c('0x3a')](_0x44e817);if(_0x44e817['globalStatus'][_0x908c('0x18')](_0x908c('0x13'))){_0x53a0b1[_0x908c('0x2b')](function(_0x2020b4){if(_0x44e817[_0x2020b4+_0x908c('0x2d')]){if(_0x2020b4==='voice'){if(_0x44e817[_0x908c('0x3b')]!==_0x908c('0x3c')){_0x44e817[_0x908c('0x3b')]=_0x908c('0x13');}}else{_0x44e817[_0x2020b4+_0x908c('0x3d')]=_0x908c('0x13');}}});}return _0x44e817;});})[_0x908c('0x1d')](function(_0x47de32){if(!_0x2d4638||_0x5040cc){return _0x47de32;}return rta['sortAgentsByStatus'](_0x47de32,_0x2d4638);})[_0x908c('0x1d')](function(_0xa62f1f){var _0x2373f7=null;if(_0x3be40b['query'][_0x908c('0x3e')]){var _0x139ccb=_0x3be40b['query']['fields']['split'](',');_0x2373f7=_0xa62f1f['map'](function(_0xf4d731){return _[_0x908c('0x3f')](_0xf4d731,_0x139ccb);});}_0xe331fa[_0x908c('0x1f')]=_0x2373f7||_0xa62f1f;return _0xe331fa;})['then'](respondWithFilteredResult(_0x3d8a38,_0x1ad42e))['catch'](APIHandleError(_0x3d8a38));};exports['getQueues']=function(_0x13efd0,_0x564457){var _0x2816a4={'count':0x0,'rows':[]};var _0x3f924e={};var _0x1f96ab;var _0x48e03d;var _0x19b78d;Promise[_0x908c('0x40')]()['then'](function(){if(_0x13efd0[_0x908c('0xf')][_0x908c('0x14')]){if(!utils[_0x908c('0x15')](_0x13efd0[_0x908c('0xf')][_0x908c('0x14')])){throw new APIBadRequestError(util[_0x908c('0x16')](_0x908c('0x41'),_0x13efd0['query'][_0x908c('0x14')]));}_0x1f96ab=_0x13efd0['query']['channel'][_0x908c('0x42')]();}var _0x3917fe=_['startCase'](_0x1f96ab)+'Queue';var _0x476359=_['map'](db[_0x3917fe][_0x908c('0x23')],function(_0x17a83e){return{'name':_0x17a83e[_0x908c('0x43')],'type':_0x17a83e['type'][_0x908c('0x44')]};});if(!_0x13efd0['query'][_0x908c('0x3e')]){var _0x1587d9=['id','name'];if(_0x1f96ab===_0x908c('0x45')){_0x1587d9[_0x908c('0x29')](_0x908c('0x24'));if(_0x13efd0[_0x908c('0xf')]['type']===_0x908c('0x46')){_0x1587d9[_0x908c('0x29')]([_0x908c('0x47'),'dialMethod']);}}_0x13efd0[_0x908c('0xf')]['fields']=_0x1587d9[_0x908c('0x1b')](',');}_0x3f924e=qs['getOptions'](_0x476359,_0x13efd0);if(_0x13efd0[_0x908c('0x2f')][_0x908c('0x25')]==='user'){var _0x4e5061={'params':{'id':_0x13efd0[_0x908c('0x2f')][_0x908c('0x30')]},'query':{'section':_0x1f96ab===_0x908c('0x45')&&_0x13efd0[_0x908c('0xf')][_0x908c('0x24')]===_0x908c('0x46')?_0x908c('0x48'):_[_0x908c('0x49')](_0x1f96ab)+_0x908c('0x4a'),'type':_0x13efd0[_0x908c('0xf')]['type'],'nolimit':!![],'sort':_0x908c('0x4b'),'filter':_0x13efd0['query']['filter']}};_0x4e5061[_0x908c('0xf')]=Object[_0x908c('0x33')](_0x4e5061[_0x908c('0xf')],_0x13efd0[_0x908c('0xf')]);delete _0x4e5061[_0x908c('0xf')]['id'];return db['UserProfile'][_0x908c('0x34')](_0x4e5061);}return db[_0x3917fe][_0x908c('0x36')](_0x3f924e);})['then'](function(_0x4e0382){_0x2816a4[_0x908c('0x9')]=_0x4e0382['count'];_0x48e03d=_0x4e0382[_0x908c('0x1f')];return rtq[_0x908c('0x4c')](_0x13efd0,_0x1f96ab);})['then'](function(_0x49bbcf){_0x19b78d=_0x49bbcf[_0x908c('0x1f')];return rtq['initializeQueues'](_0x48e03d,_0x19b78d,_0x1f96ab,_0x13efd0['query']['type']);})['then'](function(_0x3cef5c){_0x2816a4[_0x908c('0x1f')]=_0x3cef5c;return _0x2816a4;})['then'](respondWithFilteredResult(_0x564457,_0x3f924e))[_0x908c('0x4d')](APIHandleError(_0x564457));};