Built motion from commit 5293bb2a.|2.6.30
[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 _0x8708=['fieldName','type','key','role','agent','getOptions','raw','length','push','sequelize','literal','forEach','Pause','where','merge','user','userProfileId','online','assign','omit','UserProfile','getResources','findAndCountAll','find','filterAgentAttributes','getAgentStatus','pause','voiceStatus','Status','sortAgentsByStatus','getRealtimeAgentsQueryFields','pick','catch','getQueues','resolve','format','startCase','Queue','rawAttributes','name','voice','outbound','dialMethod','QueueCampaigns','filter','getRealtimeQueues','initializeQueues','lodash','../../components/realtime/agents','../../components/realtime/queues','../../components/parsers/qs','../../config/utils','../../mysqldb','../../errors/api','handleError','offset','undefined','count','limit','set','json','getAgents','getChannels','globalQueueFilter','query','globalStatusFilter','pauseTypeFilter','*pause','then','isValidChannel','Channel\x20parameter\x20%s\x20is\x20invalid','channel','toLowerCase','sort','includes','globalStatus','validateSortParameter','fields','order','getAgentIdsByQueues','getRealtimeAgents','rows','getSortedAgentsIdsByStatus','map'];(function(_0x49c2d8,_0x463e0e){var _0x3252aa=function(_0x3ccd8b){while(--_0x3ccd8b){_0x49c2d8['push'](_0x49c2d8['shift']());}};_0x3252aa(++_0x463e0e);}(_0x8708,0xd7));var _0x8870=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x8708[_0x167cc1];return _0x10bc4b;};'use strict';var _=require(_0x8870('0x0'));var util=require('util');var rta=require(_0x8870('0x1'));var rtq=require(_0x8870('0x2'));var qs=require(_0x8870('0x3'));var utils=require(_0x8870('0x4'));var db=require(_0x8870('0x5'))['db'];var APIBadRequestError=require(_0x8870('0x6'))['APIBadRequestError'];var APIHandleError=require(_0x8870('0x6'))[_0x8870('0x7')];function respondWithFilteredResult(_0x504b37,_0x48f08d){return function(_0x1d9684){if(_0x1d9684){var _0x1e6e86=typeof _0x48f08d[_0x8870('0x8')]===_0x8870('0x9')&&typeof _0x48f08d['limit']===_0x8870('0x9');var _0x393d2a=_0x1d9684[_0x8870('0xa')];var _0x1a2b04=_0x1e6e86?0x0:_0x48f08d[_0x8870('0x8')];var _0x43fa30=_0x1e6e86?_0x1d9684[_0x8870('0xa')]:_0x48f08d[_0x8870('0x8')]+_0x48f08d[_0x8870('0xb')];var _0x31da93;if(_0x43fa30>=_0x393d2a){_0x43fa30=_0x393d2a;_0x31da93=0xc8;}else{_0x31da93=0xce;}_0x504b37['status'](_0x31da93);return _0x504b37[_0x8870('0xc')]('Content-Range',_0x1a2b04+'-'+_0x43fa30+'/'+_0x393d2a)[_0x8870('0xd')](_0x1d9684);}return null;};}exports[_0x8870('0xe')]=function(_0x41f068,_0x223c31){var _0x3464f4={'count':0x0,'rows':[]};var _0x185044={};var _0x5251d5;var _0x3bb4d4=utils[_0x8870('0xf')]();var _0x4b0ea7;var _0x44d8a9;var _0x1c55b0=_0x41f068['query'][_0x8870('0x10')];var _0x116ea3=_0x41f068[_0x8870('0x11')][_0x8870('0x12')];var _0x18358f=_0x41f068[_0x8870('0x11')][_0x8870('0x13')];var _0x8e2c98=_0x116ea3==='pause'||_0x116ea3===_0x8870('0x14')?!![]:![];var _0x49bebf=[];var _0x35f890;var _0x44d7e1;Promise['resolve']()[_0x8870('0x15')](function(){if(_0x41f068['query']['channel']){if(!utils[_0x8870('0x16')](_0x41f068[_0x8870('0x11')]['channel'])){throw new APIBadRequestError(util['format'](_0x8870('0x17'),_0x41f068[_0x8870('0x11')][_0x8870('0x18')]));}_0x5251d5=_0x41f068[_0x8870('0x11')][_0x8870('0x18')][_0x8870('0x19')]();}if(!_0x41f068[_0x8870('0x11')][_0x8870('0x1a')]||!_0x41f068[_0x8870('0x11')][_0x8870('0x1a')][_0x8870('0x1b')](_0x8870('0x1c'))){_0x41f068[_0x8870('0x11')]['sort']=rta[_0x8870('0x1d')](_0x41f068['query'][_0x8870('0x1a')]);return;}var _0x5a7e5c=rta['getUpdatedSortOptions'](_0x41f068[_0x8870('0x11')][_0x8870('0x1a')]);_0x41f068[_0x8870('0x11')][_0x8870('0x1a')]=_0x5a7e5c[_0x8870('0x1e')]['join'](',');_0x35f890=_0x5a7e5c[_0x8870('0x1f')];})['then'](function(){if(!_0x1c55b0){return[];}return rta[_0x8870('0x20')](_0x1c55b0,_0x5251d5);})['then'](function(_0x4327a2){_0x49bebf=_0x4327a2;return rta[_0x8870('0x21')]();})[_0x8870('0x15')](function(_0x3a408f){_0x44d8a9=_0x3a408f[_0x8870('0x22')];if((!_0x116ea3||_0x8e2c98)&&!_0x35f890){return _0x49bebf;}if(_0x35f890&&!_0x116ea3){return rta[_0x8870('0x23')](_0x44d8a9,_0x49bebf,_0x35f890);}else{return rta['getAgentIdsByStatus'](_0x44d8a9,_0x49bebf,_0x116ea3);}})[_0x8870('0x15')](function(_0x57c6af){_0x49bebf=_0x57c6af;var _0x201563=![];if(_0x49bebf['length']===0x0){if(_0x1c55b0||_0x116ea3){_0x201563=!![];}if(_0x8e2c98){_0x201563=![];}}if(_0x201563){return _0x3464f4;}var _0x582b13=_[_0x8870('0x24')](db['User']['rawAttributes'],function(_0x258017){return{'name':_0x258017[_0x8870('0x25')],'type':_0x258017[_0x8870('0x26')][_0x8870('0x27')]};});_0x41f068[_0x8870('0x11')][_0x8870('0x28')]=_0x8870('0x29');_0x185044=qs[_0x8870('0x2a')](_0x582b13,_0x41f068);_0x185044[_0x8870('0x2b')]=!![];var _0x40d12d=[];if(_0x49bebf[_0x8870('0x2c')]>0x0){_0x40d12d[_0x8870('0x2d')]({'id':{'$in':_0x49bebf}});if(_0x35f890&&!_0x116ea3){_0x44d7e1=[db[_0x8870('0x2e')][_0x8870('0x2f')]('FIELD(id,'+_0x49bebf+')')];_0x185044[_0x8870('0x1f')]=_0x44d7e1;}}if(_0x8e2c98){_0x3bb4d4[_0x8870('0x30')](function(_0x41f0c9){var _0x402e21=!![];if(_0x116ea3===_0x8870('0x14')&&_0x5251d5!==_0x41f0c9){_0x402e21=![];}_0x40d12d['push']({[_0x41f0c9+_0x8870('0x31')]:_0x402e21});});if(_0x18358f){_0x40d12d[_0x8870('0x2d')]({'pauseType':_0x18358f});}}else if(_0x116ea3){_0x3bb4d4[_0x8870('0x30')](function(_0x356a7e){_0x40d12d[_0x8870('0x2d')]({[_0x356a7e+'Pause']:![]});});}_0x185044[_0x8870('0x32')]=_[_0x8870('0x33')](_0x185044[_0x8870('0x32')],{'$and':_0x40d12d});if(_0x41f068[_0x8870('0x34')]['role']==='user'){var _0x3acac1={'params':{'id':_0x41f068[_0x8870('0x34')][_0x8870('0x35')]},'query':{'section':'Agents','role':_0x8870('0x29'),'raw':!![],'ids':_0x49bebf,'customSorting':_0x44d7e1}};if(_0x41f068[_0x8870('0x11')][_0x8870('0x36')]){_0x3acac1[_0x8870('0x11')][_0x8870('0x36')]=!![];}if(_0x8e2c98){_0x3acac1['query']['extraQueryConditions']=_0x40d12d;}_0x3acac1[_0x8870('0x11')]=Object[_0x8870('0x37')](_0x3acac1[_0x8870('0x11')],_[_0x8870('0x38')](_0x41f068[_0x8870('0x11')],'id'));return db[_0x8870('0x39')][_0x8870('0x3a')](_0x3acac1);}return db['User'][_0x8870('0x3b')](_0x185044);})[_0x8870('0x15')](function(_0x50d44a){_0x3464f4['count']=_0x50d44a[_0x8870('0xa')];_0x4b0ea7=_0x50d44a[_0x8870('0x22')];return _0x4b0ea7[_0x8870('0x24')](function(_0x51f01c){var _0x5612d3=_[_0x8870('0x3c')](_0x44d8a9,['id',_0x51f01c['id']]);if(_0x5612d3){var _0x469bf8=rta[_0x8870('0x3d')](_0x5612d3);_[_0x8870('0x33')](_0x51f01c,_0x469bf8);}_0x51f01c[_0x8870('0x1c')]=rta[_0x8870('0x3e')](_0x51f01c);if(_0x51f01c[_0x8870('0x1c')][_0x8870('0x1b')](_0x8870('0x3f'))){_0x3bb4d4[_0x8870('0x30')](function(_0x4d4686){if(_0x51f01c[_0x4d4686+'Pause']){if(_0x4d4686==='voice'){if(_0x51f01c[_0x8870('0x40')]!=='talking'){_0x51f01c['voiceStatus']='pause';}}else{_0x51f01c[_0x4d4686+_0x8870('0x41')]=_0x8870('0x3f');}}});}return _0x51f01c;});})[_0x8870('0x15')](function(_0x1f05ce){if(!_0x35f890||_0x44d7e1){return _0x1f05ce;}return rta[_0x8870('0x42')](_0x1f05ce,_0x35f890);})[_0x8870('0x15')](function(_0x56ae24){var _0xa0aff3=rta[_0x8870('0x43')]();_0x3464f4[_0x8870('0x22')]=_0x56ae24[_0x8870('0x24')](function(_0x3a3014){return _[_0x8870('0x44')](_0x3a3014,_0xa0aff3);});return _0x3464f4;})['then'](respondWithFilteredResult(_0x223c31,_0x185044))[_0x8870('0x45')](APIHandleError(_0x223c31));};exports[_0x8870('0x46')]=function(_0xfb1d9c,_0x1b33cd){var _0x46b170={'count':0x0,'rows':[]};var _0x14547e={};var _0xba6df2;var _0x2ab1fb;var _0x2517a7;Promise[_0x8870('0x47')]()[_0x8870('0x15')](function(){if(_0xfb1d9c[_0x8870('0x11')][_0x8870('0x18')]){if(!utils['isValidChannel'](_0xfb1d9c[_0x8870('0x11')]['channel'])){throw new APIBadRequestError(util[_0x8870('0x48')](_0x8870('0x17'),_0xfb1d9c[_0x8870('0x11')][_0x8870('0x18')]));}_0xba6df2=_0xfb1d9c[_0x8870('0x11')]['channel'][_0x8870('0x19')]();}var _0x3d433d=_[_0x8870('0x49')](_0xba6df2)+_0x8870('0x4a');var _0x1d3c44=_[_0x8870('0x24')](db[_0x3d433d][_0x8870('0x4b')],function(_0x527ace){return{'name':_0x527ace[_0x8870('0x25')],'type':_0x527ace[_0x8870('0x26')][_0x8870('0x27')]};});if(!_0xfb1d9c['query'][_0x8870('0x1e')]){var _0x325b13=['id',_0x8870('0x4c')];if(_0xba6df2===_0x8870('0x4d')){_0x325b13[_0x8870('0x2d')](_0x8870('0x26'));if(_0xfb1d9c[_0x8870('0x11')][_0x8870('0x26')]===_0x8870('0x4e')){_0x325b13[_0x8870('0x2d')](['dialActive',_0x8870('0x4f')]);}}_0xfb1d9c[_0x8870('0x11')][_0x8870('0x1e')]=_0x325b13['join'](',');}_0x14547e=qs[_0x8870('0x2a')](_0x1d3c44,_0xfb1d9c);if(_0xfb1d9c[_0x8870('0x34')]['role']===_0x8870('0x34')){var _0x1db0ec={'params':{'id':_0xfb1d9c[_0x8870('0x34')][_0x8870('0x35')]},'query':{'section':_0xba6df2===_0x8870('0x4d')&&_0xfb1d9c[_0x8870('0x11')][_0x8870('0x26')]==='outbound'?_0x8870('0x50'):_[_0x8870('0x49')](_0xba6df2)+'Queues','type':_0xfb1d9c['query']['type'],'nolimit':!![],'sort':_0x8870('0x4c'),'filter':_0xfb1d9c['query'][_0x8870('0x51')]}};_0x1db0ec[_0x8870('0x11')]=Object[_0x8870('0x37')](_0x1db0ec[_0x8870('0x11')],_0xfb1d9c['query']);delete _0x1db0ec['query']['id'];return db['UserProfile'][_0x8870('0x3a')](_0x1db0ec);}return db[_0x3d433d][_0x8870('0x3b')](_0x14547e);})['then'](function(_0x4f7af8){_0x46b170['count']=_0x4f7af8[_0x8870('0xa')];_0x2ab1fb=_0x4f7af8[_0x8870('0x22')];return rtq[_0x8870('0x52')](_0xfb1d9c,_0xba6df2);})[_0x8870('0x15')](function(_0x381ebc){_0x2517a7=_0x381ebc[_0x8870('0x22')];return rtq[_0x8870('0x53')](_0x2ab1fb,_0x2517a7,_0xba6df2,_0xfb1d9c['query'][_0x8870('0x26')]);})['then'](function(_0x11d847){_0x46b170[_0x8870('0x22')]=_0x11d847;return _0x46b170;})[_0x8870('0x15')](respondWithFilteredResult(_0x1b33cd,_0x14547e))[_0x8870('0x45')](APIHandleError(_0x1b33cd));};