Built motion from commit 00bf23f6.|2.6.16
[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 _0x8d92=['type','role','agent','online','getOptions','push','literal','FIELD(id,','order','forEach','Pause','where','merge','user','userProfileId','Agents','assign','UserProfile','getResources','User','findAndCountAll','find','filterAgentAttributes','voice','voiceStatus','Status','sortAgentsByStatus','fields','split','pick','catch','startCase','Queue','key','name','dialActive','dialMethod','join','outbound','Queues','filter','getRealtimeQueues','lodash','util','../../components/realtime/agents','../../components/realtime/queues','../../config/utils','../../mysqldb','../../errors/api','APIBadRequestError','handleError','offset','limit','undefined','count','status','set','Content-Range','json','getAgents','getChannels','query','globalQueueFilter','pause','*pause','resolve','then','channel','isValidChannel','format','Channel\x20parameter\x20%s\x20is\x20invalid','sort','includes','globalStatus','validateSortParameter','getRealtimeAgents','rows','getSortedAgentsIdsByStatus','getAgentIdsByStatus','length','map','rawAttributes','fieldName'];(function(_0x441f42,_0x5a5785){var _0x53b099=function(_0x5d7d27){while(--_0x5d7d27){_0x441f42['push'](_0x441f42['shift']());}};_0x53b099(++_0x5a5785);}(_0x8d92,0x1c9));var _0x28d9=function(_0x56aad3,_0x3d48bc){_0x56aad3=_0x56aad3-0x0;var _0x1d165a=_0x8d92[_0x56aad3];return _0x1d165a;};'use strict';var _=require(_0x28d9('0x0'));var util=require(_0x28d9('0x1'));var rta=require(_0x28d9('0x2'));var rtq=require(_0x28d9('0x3'));var qs=require('../../components/parsers/qs');var utils=require(_0x28d9('0x4'));var db=require(_0x28d9('0x5'))['db'];var APIBadRequestError=require(_0x28d9('0x6'))[_0x28d9('0x7')];var APIHandleError=require('../../errors/api')[_0x28d9('0x8')];function respondWithFilteredResult(_0x170232,_0x17e72b){return function(_0x4b978a){if(_0x4b978a){var _0x4726a9=typeof _0x17e72b[_0x28d9('0x9')]==='undefined'&&typeof _0x17e72b[_0x28d9('0xa')]===_0x28d9('0xb');var _0x36d051=_0x4b978a[_0x28d9('0xc')];var _0x56b87f=_0x4726a9?0x0:_0x17e72b[_0x28d9('0x9')];var _0x9360ab=_0x4726a9?_0x4b978a[_0x28d9('0xc')]:_0x17e72b[_0x28d9('0x9')]+_0x17e72b[_0x28d9('0xa')];var _0x1c02d4;if(_0x9360ab>=_0x36d051){_0x9360ab=_0x36d051;_0x1c02d4=0xc8;}else{_0x1c02d4=0xce;}_0x170232[_0x28d9('0xd')](_0x1c02d4);return _0x170232[_0x28d9('0xe')](_0x28d9('0xf'),_0x56b87f+'-'+_0x9360ab+'/'+_0x36d051)[_0x28d9('0x10')](_0x4b978a);}return null;};}exports[_0x28d9('0x11')]=function(_0x258ffd,_0x91e1da){var _0x5347ba={'count':0x0,'rows':[]};var _0x5e02f9={};var _0x3c581f;var _0x15deea=utils[_0x28d9('0x12')]();var _0x84c534;var _0x5aad9c;var _0x1a2293=_0x258ffd[_0x28d9('0x13')][_0x28d9('0x14')];var _0x49018d=_0x258ffd[_0x28d9('0x13')]['globalStatusFilter'];var _0x377f7b=_0x258ffd[_0x28d9('0x13')]['pauseTypeFilter'];var _0x152817=_0x49018d===_0x28d9('0x15')||_0x49018d===_0x28d9('0x16')?!![]:![];var _0x2fe463=[];var _0x31bcce;var _0xae024a;Promise[_0x28d9('0x17')]()[_0x28d9('0x18')](function(){if(_0x258ffd[_0x28d9('0x13')][_0x28d9('0x19')]){if(!utils[_0x28d9('0x1a')](_0x258ffd[_0x28d9('0x13')][_0x28d9('0x19')])){throw new APIBadRequestError(util[_0x28d9('0x1b')](_0x28d9('0x1c'),_0x258ffd[_0x28d9('0x13')][_0x28d9('0x19')]));}_0x3c581f=_0x258ffd[_0x28d9('0x13')][_0x28d9('0x19')]['toLowerCase']();}if(!_0x258ffd['query']['sort']||!_0x258ffd[_0x28d9('0x13')][_0x28d9('0x1d')][_0x28d9('0x1e')](_0x28d9('0x1f'))){_0x258ffd[_0x28d9('0x13')][_0x28d9('0x1d')]=rta[_0x28d9('0x20')](_0x258ffd[_0x28d9('0x13')][_0x28d9('0x1d')]);return;}var _0x3361a6=rta['getUpdatedSortOptions'](_0x258ffd[_0x28d9('0x13')][_0x28d9('0x1d')]);_0x258ffd[_0x28d9('0x13')][_0x28d9('0x1d')]=_0x3361a6['fields']['join'](',');_0x31bcce=_0x3361a6['order'];})['then'](function(){if(!_0x1a2293){return[];}return rta['getAgentIdsByQueues'](_0x1a2293,_0x3c581f);})[_0x28d9('0x18')](function(_0x344f81){_0x2fe463=_0x344f81;return rta[_0x28d9('0x21')]();})['then'](function(_0x21f5f3){_0x5aad9c=_0x21f5f3[_0x28d9('0x22')];if((!_0x49018d||_0x152817)&&!_0x31bcce){return _0x2fe463;}if(_0x31bcce&&!_0x49018d){return rta[_0x28d9('0x23')](_0x5aad9c,_0x2fe463,_0x31bcce);}else{return rta[_0x28d9('0x24')](_0x5aad9c,_0x2fe463,_0x49018d);}})[_0x28d9('0x18')](function(_0x4f55f8){_0x2fe463=_0x4f55f8;var _0x53751b=![];if(_0x2fe463[_0x28d9('0x25')]===0x0){if(_0x1a2293||_0x49018d){_0x53751b=!![];}if(_0x152817){_0x53751b=![];}}if(_0x53751b){return _0x5347ba;}var _0x3763cb=_[_0x28d9('0x26')](db['User'][_0x28d9('0x27')],function(_0xc2253b){return{'name':_0xc2253b[_0x28d9('0x28')],'type':_0xc2253b[_0x28d9('0x29')]['key']};});_0x258ffd[_0x28d9('0x13')][_0x28d9('0x2a')]=_0x28d9('0x2b');_0x258ffd[_0x28d9('0x13')][_0x28d9('0x2c')]=!![];_0x5e02f9=qs[_0x28d9('0x2d')](_0x3763cb,_0x258ffd);_0x5e02f9['raw']=!![];var _0x5b3119=[];if(_0x2fe463['length']>0x0){_0x5b3119[_0x28d9('0x2e')]({'id':{'$in':_0x2fe463}});if(_0x31bcce&&!_0x49018d){_0xae024a=[db['sequelize'][_0x28d9('0x2f')](_0x28d9('0x30')+_0x2fe463+')')];_0x5e02f9[_0x28d9('0x31')]=_0xae024a;}}if(_0x152817){_0x15deea[_0x28d9('0x32')](function(_0x27eb48){var _0x130426=!![];if(_0x49018d==='*pause'&&_0x3c581f!==_0x27eb48){_0x130426=![];}_0x5b3119[_0x28d9('0x2e')]({[_0x27eb48+_0x28d9('0x33')]:_0x130426});});if(_0x377f7b){_0x5b3119['push']({'pauseType':_0x377f7b});}}else if(_0x49018d){_0x15deea[_0x28d9('0x32')](function(_0x286472){_0x5b3119[_0x28d9('0x2e')]({[_0x286472+_0x28d9('0x33')]:![]});});}_0x5e02f9[_0x28d9('0x34')]=_[_0x28d9('0x35')](_0x5e02f9['where'],{'$and':_0x5b3119});if(_0x258ffd[_0x28d9('0x36')]['role']===_0x28d9('0x36')){var _0x5ad5f8={'params':{'id':_0x258ffd[_0x28d9('0x36')][_0x28d9('0x37')]},'query':{'section':_0x28d9('0x38'),'role':_0x28d9('0x2b'),'online':!![],'raw':!![],'ids':_0x2fe463,'customSorting':_0xae024a}};if(_0x152817){_0x5ad5f8[_0x28d9('0x13')]['extraQueryConditions']=_0x5b3119;}_0x5ad5f8[_0x28d9('0x13')]=Object[_0x28d9('0x39')](_0x5ad5f8[_0x28d9('0x13')],_0x258ffd['query']);delete _0x5ad5f8[_0x28d9('0x13')]['id'];return db[_0x28d9('0x3a')][_0x28d9('0x3b')](_0x5ad5f8);}return db[_0x28d9('0x3c')][_0x28d9('0x3d')](_0x5e02f9);})[_0x28d9('0x18')](function(_0x21cbca){_0x5347ba[_0x28d9('0xc')]=_0x21cbca[_0x28d9('0xc')];_0x84c534=_0x21cbca[_0x28d9('0x22')];return _0x84c534['map'](function(_0x366543){var _0x1711ee=_[_0x28d9('0x3e')](_0x5aad9c,['id',_0x366543['id']]);if(_0x1711ee){var _0x5b5972=rta[_0x28d9('0x3f')](_0x1711ee);_[_0x28d9('0x35')](_0x366543,_0x5b5972);}_0x366543[_0x28d9('0x1f')]=rta['getAgentStatus'](_0x366543);if(_0x366543[_0x28d9('0x1f')][_0x28d9('0x1e')](_0x28d9('0x15'))){_0x15deea[_0x28d9('0x32')](function(_0xfe4e76){if(_0x366543[_0xfe4e76+_0x28d9('0x33')]){if(_0xfe4e76===_0x28d9('0x40')){if(_0x366543[_0x28d9('0x41')]!=='talking'){_0x366543[_0x28d9('0x41')]='pause';}}else{_0x366543[_0xfe4e76+_0x28d9('0x42')]='pause';}}});}return _0x366543;});})[_0x28d9('0x18')](function(_0x56a8f5){if(!_0x31bcce||_0xae024a){return _0x56a8f5;}return rta[_0x28d9('0x43')](_0x56a8f5,_0x31bcce);})['then'](function(_0x2d0ac2){var _0x474000=null;if(_0x258ffd[_0x28d9('0x13')][_0x28d9('0x44')]){var _0x1a8142=_0x258ffd['query']['fields'][_0x28d9('0x45')](',');_0x474000=_0x2d0ac2[_0x28d9('0x26')](function(_0x49a847){return _[_0x28d9('0x46')](_0x49a847,_0x1a8142);});}_0x5347ba[_0x28d9('0x22')]=_0x474000||_0x2d0ac2;return _0x5347ba;})['then'](respondWithFilteredResult(_0x91e1da,_0x5e02f9))[_0x28d9('0x47')](APIHandleError(_0x91e1da));};exports['getQueues']=function(_0x21ebbc,_0x2f83dc){var _0xed34a8={'count':0x0,'rows':[]};var _0x318db9={};var _0x592aed;var _0x1c77a5;var _0x264229;Promise[_0x28d9('0x17')]()[_0x28d9('0x18')](function(){if(_0x21ebbc[_0x28d9('0x13')][_0x28d9('0x19')]){if(!utils[_0x28d9('0x1a')](_0x21ebbc[_0x28d9('0x13')][_0x28d9('0x19')])){throw new APIBadRequestError(util[_0x28d9('0x1b')](_0x28d9('0x1c'),_0x21ebbc[_0x28d9('0x13')][_0x28d9('0x19')]));}_0x592aed=_0x21ebbc[_0x28d9('0x13')]['channel']['toLowerCase']();}var _0x6bd2a6=_[_0x28d9('0x48')](_0x592aed)+_0x28d9('0x49');var _0x4bb803=_[_0x28d9('0x26')](db[_0x6bd2a6][_0x28d9('0x27')],function(_0x3324ba){return{'name':_0x3324ba['fieldName'],'type':_0x3324ba['type'][_0x28d9('0x4a')]};});if(!_0x21ebbc[_0x28d9('0x13')][_0x28d9('0x44')]){var _0x16c10e=['id',_0x28d9('0x4b')];if(_0x592aed===_0x28d9('0x40')){_0x16c10e[_0x28d9('0x2e')](_0x28d9('0x29'));if(_0x21ebbc['query'][_0x28d9('0x29')]==='outbound'){_0x16c10e[_0x28d9('0x2e')]([_0x28d9('0x4c'),_0x28d9('0x4d')]);}}_0x21ebbc[_0x28d9('0x13')][_0x28d9('0x44')]=_0x16c10e[_0x28d9('0x4e')](',');}_0x318db9=qs[_0x28d9('0x2d')](_0x4bb803,_0x21ebbc);if(_0x21ebbc[_0x28d9('0x36')][_0x28d9('0x2a')]===_0x28d9('0x36')){var _0x5ad46a={'params':{'id':_0x21ebbc['user'][_0x28d9('0x37')]},'query':{'section':_0x592aed==='voice'&&_0x21ebbc[_0x28d9('0x13')][_0x28d9('0x29')]===_0x28d9('0x4f')?'QueueCampaigns':_['startCase'](_0x592aed)+_0x28d9('0x50'),'type':_0x21ebbc['query'][_0x28d9('0x29')],'nolimit':!![],'sort':_0x28d9('0x4b'),'filter':_0x21ebbc[_0x28d9('0x13')][_0x28d9('0x51')]}};_0x5ad46a[_0x28d9('0x13')]=Object[_0x28d9('0x39')](_0x5ad46a[_0x28d9('0x13')],_0x21ebbc['query']);delete _0x5ad46a[_0x28d9('0x13')]['id'];return db[_0x28d9('0x3a')][_0x28d9('0x3b')](_0x5ad46a);}return db[_0x6bd2a6]['findAndCountAll'](_0x318db9);})[_0x28d9('0x18')](function(_0x4c7d5c){_0xed34a8[_0x28d9('0xc')]=_0x4c7d5c[_0x28d9('0xc')];_0x1c77a5=_0x4c7d5c[_0x28d9('0x22')];return rtq[_0x28d9('0x52')](_0x21ebbc,_0x592aed);})[_0x28d9('0x18')](function(_0x3f1a5e){_0x264229=_0x3f1a5e['rows'];return rtq['initializeQueues'](_0x1c77a5,_0x264229,_0x592aed,_0x21ebbc[_0x28d9('0x13')]['type']);})[_0x28d9('0x18')](function(_0x1b553f){_0xed34a8[_0x28d9('0x22')]=_0x1b553f;return _0xed34a8;})[_0x28d9('0x18')](respondWithFilteredResult(_0x2f83dc,_0x318db9))[_0x28d9('0x47')](APIHandleError(_0x2f83dc));};