Built motion from commit 06eb8eb0.|2.6.31
[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 _0xf10f=['format','startCase','name','voice','outbound','dialActive','dialMethod','Queues','rows','getRealtimeQueues','catch','util','../../components/realtime/agents','../../components/realtime/queues','../../components/parsers/qs','../../config/utils','../../mysqldb','../../errors/api','APIBadRequestError','handleError','offset','limit','count','status','set','Content-Range','json','getAgents','getChannels','query','globalStatusFilter','pause','*pause','resolve','channel','Channel\x20parameter\x20%s\x20is\x20invalid','toLowerCase','sort','globalStatus','fields','join','order','then','getRealtimeAgents','getAgentIdsByStatus','length','map','User','rawAttributes','fieldName','type','key','role','agent','getOptions','raw','sequelize','literal','FIELD(id,','forEach','push','Pause','where','user','userProfileId','Agents','online','extraQueryConditions','assign','UserProfile','getResources','findAndCountAll','filterAgentAttributes','getAgentStatus','voiceStatus','talking','sortAgentsByStatus','getRealtimeAgentsQueryFields','pick','getQueues','isValidChannel'];(function(_0x2e0e4b,_0xa3d22e){var _0x2bc65d=function(_0xba1ba6){while(--_0xba1ba6){_0x2e0e4b['push'](_0x2e0e4b['shift']());}};_0x2bc65d(++_0xa3d22e);}(_0xf10f,0x14f));var _0xff10=function(_0x3701ed,_0x4a749c){_0x3701ed=_0x3701ed-0x0;var _0x7622a2=_0xf10f[_0x3701ed];return _0x7622a2;};'use strict';var _=require('lodash');var util=require(_0xff10('0x0'));var rta=require(_0xff10('0x1'));var rtq=require(_0xff10('0x2'));var qs=require(_0xff10('0x3'));var utils=require(_0xff10('0x4'));var db=require(_0xff10('0x5'))['db'];var APIBadRequestError=require(_0xff10('0x6'))[_0xff10('0x7')];var APIHandleError=require(_0xff10('0x6'))[_0xff10('0x8')];function respondWithFilteredResult(_0x418aff,_0x52a4c9){return function(_0x4534a1){if(_0x4534a1){var _0x1b317c=typeof _0x52a4c9[_0xff10('0x9')]==='undefined'&&typeof _0x52a4c9[_0xff10('0xa')]==='undefined';var _0x3e2504=_0x4534a1[_0xff10('0xb')];var _0x5b087a=_0x1b317c?0x0:_0x52a4c9[_0xff10('0x9')];var _0x2f2746=_0x1b317c?_0x4534a1['count']:_0x52a4c9[_0xff10('0x9')]+_0x52a4c9[_0xff10('0xa')];var _0x51d5bc;if(_0x2f2746>=_0x3e2504){_0x2f2746=_0x3e2504;_0x51d5bc=0xc8;}else{_0x51d5bc=0xce;}_0x418aff[_0xff10('0xc')](_0x51d5bc);return _0x418aff[_0xff10('0xd')](_0xff10('0xe'),_0x5b087a+'-'+_0x2f2746+'/'+_0x3e2504)[_0xff10('0xf')](_0x4534a1);}return null;};}exports[_0xff10('0x10')]=function(_0x4862a7,_0x5cd4bc){var _0x448d36={'count':0x0,'rows':[]};var _0x4a940d={};var _0x42e66a;var _0x441dcf=utils[_0xff10('0x11')]();var _0x5c432a;var _0x4b9a36;var _0x51f09c=_0x4862a7['query']['globalQueueFilter'];var _0x293388=_0x4862a7[_0xff10('0x12')][_0xff10('0x13')];var _0x3dd19a=_0x4862a7[_0xff10('0x12')]['pauseTypeFilter'];var _0xf5867=_0x293388===_0xff10('0x14')||_0x293388===_0xff10('0x15')?!![]:![];var _0x4d197c=[];var _0xc1eec3;var _0x16de4;Promise[_0xff10('0x16')]()['then'](function(){if(_0x4862a7[_0xff10('0x12')][_0xff10('0x17')]){if(!utils['isValidChannel'](_0x4862a7['query'][_0xff10('0x17')])){throw new APIBadRequestError(util['format'](_0xff10('0x18'),_0x4862a7[_0xff10('0x12')]['channel']));}_0x42e66a=_0x4862a7[_0xff10('0x12')]['channel'][_0xff10('0x19')]();}if(!_0x4862a7[_0xff10('0x12')][_0xff10('0x1a')]||!_0x4862a7[_0xff10('0x12')][_0xff10('0x1a')]['includes'](_0xff10('0x1b'))){_0x4862a7[_0xff10('0x12')]['sort']=rta['validateSortParameter'](_0x4862a7[_0xff10('0x12')][_0xff10('0x1a')]);return;}var _0x1078e5=rta['getUpdatedSortOptions'](_0x4862a7[_0xff10('0x12')][_0xff10('0x1a')]);_0x4862a7[_0xff10('0x12')]['sort']=_0x1078e5[_0xff10('0x1c')][_0xff10('0x1d')](',');_0xc1eec3=_0x1078e5[_0xff10('0x1e')];})[_0xff10('0x1f')](function(){if(!_0x51f09c){return[];}return rta['getAgentIdsByQueues'](_0x51f09c,_0x42e66a);})[_0xff10('0x1f')](function(_0x2b3afa){_0x4d197c=_0x2b3afa;return rta[_0xff10('0x20')]();})[_0xff10('0x1f')](function(_0x119e65){_0x4b9a36=_0x119e65['rows'];if((!_0x293388||_0xf5867)&&!_0xc1eec3){return _0x4d197c;}if(_0xc1eec3&&!_0x293388){return rta['getSortedAgentsIdsByStatus'](_0x4b9a36,_0x4d197c,_0xc1eec3);}else{return rta[_0xff10('0x21')](_0x4b9a36,_0x4d197c,_0x293388);}})['then'](function(_0x5f3f1a){_0x4d197c=_0x5f3f1a;var _0x3d0a0f=![];if(_0x4d197c[_0xff10('0x22')]===0x0){if(_0x51f09c||_0x293388){_0x3d0a0f=!![];}if(_0xf5867){_0x3d0a0f=![];}}if(_0x3d0a0f){return _0x448d36;}var _0x628ddd=_[_0xff10('0x23')](db[_0xff10('0x24')][_0xff10('0x25')],function(_0x3bf894){return{'name':_0x3bf894[_0xff10('0x26')],'type':_0x3bf894[_0xff10('0x27')][_0xff10('0x28')]};});_0x4862a7[_0xff10('0x12')][_0xff10('0x29')]=_0xff10('0x2a');_0x4a940d=qs[_0xff10('0x2b')](_0x628ddd,_0x4862a7);_0x4a940d[_0xff10('0x2c')]=!![];var _0x1a40d6=[];if(_0x4d197c[_0xff10('0x22')]>0x0){_0x1a40d6['push']({'id':{'$in':_0x4d197c}});if(_0xc1eec3&&!_0x293388){_0x16de4=[db[_0xff10('0x2d')][_0xff10('0x2e')](_0xff10('0x2f')+_0x4d197c+')')];_0x4a940d[_0xff10('0x1e')]=_0x16de4;}}if(_0xf5867){_0x441dcf[_0xff10('0x30')](function(_0x580d6e){var _0x57066c=!![];if(_0x293388===_0xff10('0x15')&&_0x42e66a!==_0x580d6e){_0x57066c=![];}_0x1a40d6[_0xff10('0x31')]({[_0x580d6e+_0xff10('0x32')]:_0x57066c});});if(_0x3dd19a){_0x1a40d6[_0xff10('0x31')]({'pauseType':_0x3dd19a});}}else if(_0x293388){_0x441dcf[_0xff10('0x30')](function(_0x4c9276){_0x1a40d6['push']({[_0x4c9276+_0xff10('0x32')]:![]});});}_0x4a940d[_0xff10('0x33')]=_['merge'](_0x4a940d[_0xff10('0x33')],{'$and':_0x1a40d6});if(_0x4862a7[_0xff10('0x34')][_0xff10('0x29')]===_0xff10('0x34')){var _0xa9cd80={'params':{'id':_0x4862a7[_0xff10('0x34')][_0xff10('0x35')]},'query':{'section':_0xff10('0x36'),'role':'agent','raw':!![],'ids':_0x4d197c,'customSorting':_0x16de4}};if(_0x4862a7[_0xff10('0x12')][_0xff10('0x37')]){_0xa9cd80[_0xff10('0x12')][_0xff10('0x37')]=!![];}if(_0xf5867){_0xa9cd80[_0xff10('0x12')][_0xff10('0x38')]=_0x1a40d6;}_0xa9cd80[_0xff10('0x12')]=Object[_0xff10('0x39')](_0xa9cd80[_0xff10('0x12')],_['omit'](_0x4862a7[_0xff10('0x12')],'id'));return db[_0xff10('0x3a')][_0xff10('0x3b')](_0xa9cd80);}return db[_0xff10('0x24')][_0xff10('0x3c')](_0x4a940d);})[_0xff10('0x1f')](function(_0x588a5b){_0x448d36[_0xff10('0xb')]=_0x588a5b[_0xff10('0xb')];_0x5c432a=_0x588a5b['rows'];return _0x5c432a[_0xff10('0x23')](function(_0x19178e){var _0x28b3d9=_['find'](_0x4b9a36,['id',_0x19178e['id']]);if(_0x28b3d9){var _0x79aae3=rta[_0xff10('0x3d')](_0x28b3d9);_['merge'](_0x19178e,_0x79aae3);}_0x19178e[_0xff10('0x1b')]=rta[_0xff10('0x3e')](_0x19178e);if(_0x19178e[_0xff10('0x1b')]['includes']('pause')){_0x441dcf[_0xff10('0x30')](function(_0x1dfd29){if(_0x19178e[_0x1dfd29+'Pause']){if(_0x1dfd29==='voice'){if(_0x19178e[_0xff10('0x3f')]!==_0xff10('0x40')){_0x19178e['voiceStatus']=_0xff10('0x14');}}else{_0x19178e[_0x1dfd29+'Status']='pause';}}});}return _0x19178e;});})[_0xff10('0x1f')](function(_0x2ce9ed){if(!_0xc1eec3||_0x16de4){return _0x2ce9ed;}return rta[_0xff10('0x41')](_0x2ce9ed,_0xc1eec3);})[_0xff10('0x1f')](function(_0x32e9f7){var _0x564c3a=rta[_0xff10('0x42')]();_0x448d36['rows']=_0x32e9f7[_0xff10('0x23')](function(_0x1b5a82){return _[_0xff10('0x43')](_0x1b5a82,_0x564c3a);});return _0x448d36;})[_0xff10('0x1f')](respondWithFilteredResult(_0x5cd4bc,_0x4a940d))['catch'](APIHandleError(_0x5cd4bc));};exports[_0xff10('0x44')]=function(_0x1b6d31,_0x40fb4e){var _0x5e092d={'count':0x0,'rows':[]};var _0x3af069={};var _0x2c4c21;var _0x12dbdf;var _0x181d19;Promise[_0xff10('0x16')]()[_0xff10('0x1f')](function(){if(_0x1b6d31[_0xff10('0x12')][_0xff10('0x17')]){if(!utils[_0xff10('0x45')](_0x1b6d31[_0xff10('0x12')][_0xff10('0x17')])){throw new APIBadRequestError(util[_0xff10('0x46')](_0xff10('0x18'),_0x1b6d31['query'][_0xff10('0x17')]));}_0x2c4c21=_0x1b6d31[_0xff10('0x12')][_0xff10('0x17')]['toLowerCase']();}var _0x41bca5=_[_0xff10('0x47')](_0x2c4c21)+'Queue';var _0x4baeb4=_[_0xff10('0x23')](db[_0x41bca5]['rawAttributes'],function(_0x41e8c7){return{'name':_0x41e8c7[_0xff10('0x26')],'type':_0x41e8c7[_0xff10('0x27')]['key']};});if(!_0x1b6d31['query'][_0xff10('0x1c')]){var _0x1de0ba=['id',_0xff10('0x48')];if(_0x2c4c21===_0xff10('0x49')){_0x1de0ba[_0xff10('0x31')]('type');if(_0x1b6d31['query'][_0xff10('0x27')]===_0xff10('0x4a')){_0x1de0ba[_0xff10('0x31')]([_0xff10('0x4b'),_0xff10('0x4c')]);}}_0x1b6d31[_0xff10('0x12')]['fields']=_0x1de0ba[_0xff10('0x1d')](',');}_0x3af069=qs[_0xff10('0x2b')](_0x4baeb4,_0x1b6d31);if(_0x1b6d31['user'][_0xff10('0x29')]===_0xff10('0x34')){var _0x30b218={'params':{'id':_0x1b6d31['user']['userProfileId']},'query':{'section':_0x2c4c21==='voice'&&_0x1b6d31[_0xff10('0x12')]['type']===_0xff10('0x4a')?'QueueCampaigns':_[_0xff10('0x47')](_0x2c4c21)+_0xff10('0x4d'),'type':_0x1b6d31[_0xff10('0x12')]['type'],'nolimit':!![],'sort':_0xff10('0x48'),'filter':_0x1b6d31[_0xff10('0x12')]['filter']}};_0x30b218[_0xff10('0x12')]=Object[_0xff10('0x39')](_0x30b218[_0xff10('0x12')],_0x1b6d31[_0xff10('0x12')]);delete _0x30b218['query']['id'];return db[_0xff10('0x3a')][_0xff10('0x3b')](_0x30b218);}return db[_0x41bca5][_0xff10('0x3c')](_0x3af069);})[_0xff10('0x1f')](function(_0x1dc598){_0x5e092d[_0xff10('0xb')]=_0x1dc598[_0xff10('0xb')];_0x12dbdf=_0x1dc598[_0xff10('0x4e')];return rtq[_0xff10('0x4f')](_0x1b6d31,_0x2c4c21);})['then'](function(_0xa4a020){_0x181d19=_0xa4a020[_0xff10('0x4e')];return rtq['initializeQueues'](_0x12dbdf,_0x181d19,_0x2c4c21,_0x1b6d31[_0xff10('0x12')][_0xff10('0x27')]);})[_0xff10('0x1f')](function(_0x1b4a50){_0x5e092d[_0xff10('0x4e')]=_0x1b4a50;return _0x5e092d;})[_0xff10('0x1f')](respondWithFilteredResult(_0x40fb4e,_0x3af069))[_0xff10('0x50')](APIHandleError(_0x40fb4e));};