06d92068fdca26fa2eeb305dd79fbd93ba649146
[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 _0x57da=['sequelize','literal','FIELD(id,','forEach','Pause','push','where','merge','user','userProfileId','Agents','assign','UserProfile','getResources','findAndCountAll','find','voice','voiceStatus','Status','sortAgentsByStatus','getRealtimeAgentsQueryFields','catch','getQueues','Channel\x20parameter\x20%s\x20is\x20invalid','startCase','type','name','outbound','dialActive','dialMethod','fields','join','QueueCampaigns','Queues','filter','getRealtimeQueues','initializeQueues','lodash','util','../../components/realtime/agents','../../components/realtime/queues','../../components/parsers/qs','../../config/utils','../../mysqldb','APIBadRequestError','offset','undefined','limit','count','set','json','getAgents','getChannels','query','globalQueueFilter','globalStatusFilter','pause','*pause','resolve','then','channel','isValidChannel','format','toLowerCase','sort','includes','globalStatus','order','getAgentIdsByQueues','getRealtimeAgents','rows','getSortedAgentsIdsByStatus','length','map','User','rawAttributes','key','role','agent','raw'];(function(_0x14c414,_0xf3ecb9){var _0x39fe47=function(_0x56fdcb){while(--_0x56fdcb){_0x14c414['push'](_0x14c414['shift']());}};_0x39fe47(++_0xf3ecb9);}(_0x57da,0x1b5));var _0xa57d=function(_0x23d117,_0x1ce266){_0x23d117=_0x23d117-0x0;var _0x400434=_0x57da[_0x23d117];return _0x400434;};'use strict';var _=require(_0xa57d('0x0'));var util=require(_0xa57d('0x1'));var rta=require(_0xa57d('0x2'));var rtq=require(_0xa57d('0x3'));var qs=require(_0xa57d('0x4'));var utils=require(_0xa57d('0x5'));var db=require(_0xa57d('0x6'))['db'];var APIBadRequestError=require('../../errors/api')[_0xa57d('0x7')];var APIHandleError=require('../../errors/api')['handleError'];function respondWithFilteredResult(_0x453f94,_0x3e9b0d){return function(_0x421877){if(_0x421877){var _0x51d4f4=typeof _0x3e9b0d[_0xa57d('0x8')]===_0xa57d('0x9')&&typeof _0x3e9b0d[_0xa57d('0xa')]==='undefined';var _0x2da027=_0x421877[_0xa57d('0xb')];var _0x4b469f=_0x51d4f4?0x0:_0x3e9b0d[_0xa57d('0x8')];var _0x5839b9=_0x51d4f4?_0x421877['count']:_0x3e9b0d['offset']+_0x3e9b0d['limit'];var _0x54efac;if(_0x5839b9>=_0x2da027){_0x5839b9=_0x2da027;_0x54efac=0xc8;}else{_0x54efac=0xce;}_0x453f94['status'](_0x54efac);return _0x453f94[_0xa57d('0xc')]('Content-Range',_0x4b469f+'-'+_0x5839b9+'/'+_0x2da027)[_0xa57d('0xd')](_0x421877);}return null;};}exports[_0xa57d('0xe')]=function(_0x39b8bb,_0x1c8bee){var _0x4d7395={'count':0x0,'rows':[]};var _0x434ffc={};var _0x2e676d;var _0x576040=utils[_0xa57d('0xf')]();var _0x5333b4;var _0x4b797e;var _0x29822a=_0x39b8bb[_0xa57d('0x10')][_0xa57d('0x11')];var _0x270c5c=_0x39b8bb[_0xa57d('0x10')][_0xa57d('0x12')];var _0x3264aa=_0x39b8bb[_0xa57d('0x10')]['pauseTypeFilter'];var _0x5e3dbd=_0x270c5c===_0xa57d('0x13')||_0x270c5c===_0xa57d('0x14')?!![]:![];var _0x8e55ae=[];var _0x4a3203;var _0x1dd5d6;Promise[_0xa57d('0x15')]()[_0xa57d('0x16')](function(){if(_0x39b8bb['query'][_0xa57d('0x17')]){if(!utils[_0xa57d('0x18')](_0x39b8bb['query']['channel'])){throw new APIBadRequestError(util[_0xa57d('0x19')]('Channel\x20parameter\x20%s\x20is\x20invalid',_0x39b8bb[_0xa57d('0x10')][_0xa57d('0x17')]));}_0x2e676d=_0x39b8bb['query']['channel'][_0xa57d('0x1a')]();}if(!_0x39b8bb[_0xa57d('0x10')][_0xa57d('0x1b')]||!_0x39b8bb['query'][_0xa57d('0x1b')][_0xa57d('0x1c')](_0xa57d('0x1d'))){_0x39b8bb[_0xa57d('0x10')]['sort']=rta['validateSortParameter'](_0x39b8bb[_0xa57d('0x10')][_0xa57d('0x1b')]);return;}var _0x5aade4=rta['getUpdatedSortOptions'](_0x39b8bb[_0xa57d('0x10')][_0xa57d('0x1b')]);_0x39b8bb[_0xa57d('0x10')][_0xa57d('0x1b')]=_0x5aade4['fields']['join'](',');_0x4a3203=_0x5aade4[_0xa57d('0x1e')];})[_0xa57d('0x16')](function(){if(!_0x29822a){return[];}return rta[_0xa57d('0x1f')](_0x29822a,_0x2e676d);})[_0xa57d('0x16')](function(_0x38a907){_0x8e55ae=_0x38a907;return rta[_0xa57d('0x20')]();})[_0xa57d('0x16')](function(_0x2eed01){_0x4b797e=_0x2eed01[_0xa57d('0x21')];if((!_0x270c5c||_0x5e3dbd)&&!_0x4a3203){return _0x8e55ae;}if(_0x4a3203&&!_0x270c5c){return rta[_0xa57d('0x22')](_0x4b797e,_0x8e55ae,_0x4a3203);}else{return rta['getAgentIdsByStatus'](_0x4b797e,_0x8e55ae,_0x270c5c);}})[_0xa57d('0x16')](function(_0x198044){_0x8e55ae=_0x198044;var _0x3ef38b=![];if(_0x8e55ae[_0xa57d('0x23')]===0x0){if(_0x29822a||_0x270c5c){_0x3ef38b=!![];}if(_0x5e3dbd){_0x3ef38b=![];}}if(_0x3ef38b){return _0x4d7395;}var _0x191615=_[_0xa57d('0x24')](db[_0xa57d('0x25')][_0xa57d('0x26')],function(_0x366df4){return{'name':_0x366df4['fieldName'],'type':_0x366df4['type'][_0xa57d('0x27')]};});_0x39b8bb[_0xa57d('0x10')][_0xa57d('0x28')]=_0xa57d('0x29');_0x434ffc=qs['getOptions'](_0x191615,_0x39b8bb);_0x434ffc[_0xa57d('0x2a')]=!![];var _0x2482f0=[];if(_0x8e55ae['length']>0x0){_0x2482f0['push']({'id':{'$in':_0x8e55ae}});if(_0x4a3203&&!_0x270c5c){_0x1dd5d6=[db[_0xa57d('0x2b')][_0xa57d('0x2c')](_0xa57d('0x2d')+_0x8e55ae+')')];_0x434ffc[_0xa57d('0x1e')]=_0x1dd5d6;}}if(_0x5e3dbd){_0x576040[_0xa57d('0x2e')](function(_0x2602ff){var _0x1ed74f=!![];if(_0x270c5c===_0xa57d('0x14')&&_0x2e676d!==_0x2602ff){_0x1ed74f=![];}_0x2482f0['push']({[_0x2602ff+_0xa57d('0x2f')]:_0x1ed74f});});if(_0x3264aa){_0x2482f0[_0xa57d('0x30')]({'pauseType':_0x3264aa});}}else if(_0x270c5c){_0x576040[_0xa57d('0x2e')](function(_0x412065){_0x2482f0['push']({[_0x412065+_0xa57d('0x2f')]:![]});});}_0x434ffc[_0xa57d('0x31')]=_[_0xa57d('0x32')](_0x434ffc['where'],{'$and':_0x2482f0});if(_0x39b8bb[_0xa57d('0x33')][_0xa57d('0x28')]===_0xa57d('0x33')){var _0x3eeaef={'params':{'id':_0x39b8bb['user'][_0xa57d('0x34')]},'query':{'section':_0xa57d('0x35'),'role':'agent','raw':!![],'ids':_0x8e55ae,'customSorting':_0x1dd5d6}};if(_0x39b8bb['query']['online']){_0x3eeaef[_0xa57d('0x10')]['online']=!![];}if(_0x5e3dbd){_0x3eeaef[_0xa57d('0x10')]['extraQueryConditions']=_0x2482f0;}_0x3eeaef[_0xa57d('0x10')]=Object[_0xa57d('0x36')](_0x3eeaef[_0xa57d('0x10')],_0x39b8bb[_0xa57d('0x10')]);return db[_0xa57d('0x37')][_0xa57d('0x38')](_0x3eeaef);}return db[_0xa57d('0x25')][_0xa57d('0x39')](_0x434ffc);})[_0xa57d('0x16')](function(_0x4b3b82){_0x4d7395[_0xa57d('0xb')]=_0x4b3b82[_0xa57d('0xb')];_0x5333b4=_0x4b3b82[_0xa57d('0x21')];return _0x5333b4['map'](function(_0x459441){var _0x1936b8=_[_0xa57d('0x3a')](_0x4b797e,['id',_0x459441['id']]);if(_0x1936b8){var _0x1f3c4c=rta['filterAgentAttributes'](_0x1936b8);_['merge'](_0x459441,_0x1f3c4c);}_0x459441['globalStatus']=rta['getAgentStatus'](_0x459441);if(_0x459441[_0xa57d('0x1d')][_0xa57d('0x1c')](_0xa57d('0x13'))){_0x576040['forEach'](function(_0x50f8b3){if(_0x459441[_0x50f8b3+_0xa57d('0x2f')]){if(_0x50f8b3===_0xa57d('0x3b')){if(_0x459441[_0xa57d('0x3c')]!=='talking'){_0x459441[_0xa57d('0x3c')]=_0xa57d('0x13');}}else{_0x459441[_0x50f8b3+_0xa57d('0x3d')]=_0xa57d('0x13');}}});}return _0x459441;});})[_0xa57d('0x16')](function(_0x13ca79){if(!_0x4a3203||_0x1dd5d6){return _0x13ca79;}return rta[_0xa57d('0x3e')](_0x13ca79,_0x4a3203);})[_0xa57d('0x16')](function(_0x4d77dc){var _0x5c0414=rta[_0xa57d('0x3f')]();_0x4d7395['rows']=_0x4d77dc['map'](function(_0x472465){return _['pick'](_0x472465,_0x5c0414);});return _0x4d7395;})[_0xa57d('0x16')](respondWithFilteredResult(_0x1c8bee,_0x434ffc))[_0xa57d('0x40')](APIHandleError(_0x1c8bee));};exports[_0xa57d('0x41')]=function(_0x51a8bc,_0x38c985){var _0x7f14fe={'count':0x0,'rows':[]};var _0x51c7a5={};var _0x18e7f0;var _0x33042e;var _0x49619d;Promise['resolve']()[_0xa57d('0x16')](function(){if(_0x51a8bc[_0xa57d('0x10')]['channel']){if(!utils[_0xa57d('0x18')](_0x51a8bc[_0xa57d('0x10')][_0xa57d('0x17')])){throw new APIBadRequestError(util[_0xa57d('0x19')](_0xa57d('0x42'),_0x51a8bc[_0xa57d('0x10')][_0xa57d('0x17')]));}_0x18e7f0=_0x51a8bc[_0xa57d('0x10')]['channel'][_0xa57d('0x1a')]();}var _0x13a543=_[_0xa57d('0x43')](_0x18e7f0)+'Queue';var _0x2afe30=_['map'](db[_0x13a543][_0xa57d('0x26')],function(_0x1fb9d2){return{'name':_0x1fb9d2['fieldName'],'type':_0x1fb9d2[_0xa57d('0x44')]['key']};});if(!_0x51a8bc[_0xa57d('0x10')]['fields']){var _0xc8c321=['id',_0xa57d('0x45')];if(_0x18e7f0===_0xa57d('0x3b')){_0xc8c321[_0xa57d('0x30')]('type');if(_0x51a8bc[_0xa57d('0x10')][_0xa57d('0x44')]===_0xa57d('0x46')){_0xc8c321[_0xa57d('0x30')]([_0xa57d('0x47'),_0xa57d('0x48')]);}}_0x51a8bc[_0xa57d('0x10')][_0xa57d('0x49')]=_0xc8c321[_0xa57d('0x4a')](',');}_0x51c7a5=qs['getOptions'](_0x2afe30,_0x51a8bc);if(_0x51a8bc[_0xa57d('0x33')]['role']===_0xa57d('0x33')){var _0x238a3d={'params':{'id':_0x51a8bc[_0xa57d('0x33')][_0xa57d('0x34')]},'query':{'section':_0x18e7f0===_0xa57d('0x3b')&&_0x51a8bc[_0xa57d('0x10')][_0xa57d('0x44')]==='outbound'?_0xa57d('0x4b'):_[_0xa57d('0x43')](_0x18e7f0)+_0xa57d('0x4c'),'type':_0x51a8bc[_0xa57d('0x10')][_0xa57d('0x44')],'nolimit':!![],'sort':'name','filter':_0x51a8bc[_0xa57d('0x10')][_0xa57d('0x4d')]}};_0x238a3d[_0xa57d('0x10')]=Object['assign'](_0x238a3d[_0xa57d('0x10')],_0x51a8bc[_0xa57d('0x10')]);delete _0x238a3d[_0xa57d('0x10')]['id'];return db[_0xa57d('0x37')]['getResources'](_0x238a3d);}return db[_0x13a543][_0xa57d('0x39')](_0x51c7a5);})['then'](function(_0x1c2de2){_0x7f14fe[_0xa57d('0xb')]=_0x1c2de2[_0xa57d('0xb')];_0x33042e=_0x1c2de2['rows'];return rtq[_0xa57d('0x4e')](_0x51a8bc,_0x18e7f0);})[_0xa57d('0x16')](function(_0x58de24){_0x49619d=_0x58de24[_0xa57d('0x21')];return rtq[_0xa57d('0x4f')](_0x33042e,_0x49619d,_0x18e7f0,_0x51a8bc[_0xa57d('0x10')][_0xa57d('0x44')]);})[_0xa57d('0x16')](function(_0x2543e1){_0x7f14fe['rows']=_0x2543e1;return _0x7f14fe;})[_0xa57d('0x16')](respondWithFilteredResult(_0x38c985,_0x51c7a5))['catch'](APIHandleError(_0x38c985));};