723fe979f5d24bfba3099ff5d3b3b2727bb2eeac
[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 _0x3291=['online','extraQueryConditions','assign','omit','UserProfile','findAndCountAll','find','globalStatus','getAgentStatus','talking','voiceStatus','sortAgentsByStatus','rows','pick','catch','getQueues','format','name','voice','outbound','dialActive','QueueCampaigns','Queues','filter','getResources','getRealtimeQueues','initializeQueues','lodash','util','../../components/realtime/agents','../../components/realtime/queues','../../components/parsers/qs','../../config/utils','../../mysqldb','../../errors/api','APIBadRequestError','handleError','offset','undefined','limit','count','status','Content-Range','json','getAgents','getChannels','query','globalQueueFilter','globalStatusFilter','pauseTypeFilter','pause','resolve','then','channel','Channel\x20parameter\x20%s\x20is\x20invalid','sort','getUpdatedSortOptions','fields','join','order','getRealtimeAgents','map','User','fieldName','type','key','role','getOptions','raw','length','sequelize','literal','FIELD(id,','forEach','*pause','push','Pause','where','merge','user','userProfileId','Agents'];(function(_0x560cae,_0x33c770){var _0x4e3c5d=function(_0xf12a74){while(--_0xf12a74){_0x560cae['push'](_0x560cae['shift']());}};_0x4e3c5d(++_0x33c770);}(_0x3291,0x163));var _0x1329=function(_0x4e833b,_0x375f60){_0x4e833b=_0x4e833b-0x0;var _0x278ea5=_0x3291[_0x4e833b];return _0x278ea5;};'use strict';var _=require(_0x1329('0x0'));var util=require(_0x1329('0x1'));var rta=require(_0x1329('0x2'));var rtq=require(_0x1329('0x3'));var qs=require(_0x1329('0x4'));var utils=require(_0x1329('0x5'));var db=require(_0x1329('0x6'))['db'];var APIBadRequestError=require(_0x1329('0x7'))[_0x1329('0x8')];var APIHandleError=require(_0x1329('0x7'))[_0x1329('0x9')];function respondWithFilteredResult(_0x1ba2c4,_0x5337c4){return function(_0x2fe1f7){if(_0x2fe1f7){var _0x535c51=typeof _0x5337c4[_0x1329('0xa')]===_0x1329('0xb')&&typeof _0x5337c4[_0x1329('0xc')]===_0x1329('0xb');var _0x15a1b7=_0x2fe1f7[_0x1329('0xd')];var _0x4ba5c4=_0x535c51?0x0:_0x5337c4['offset'];var _0xdf8cb8=_0x535c51?_0x2fe1f7[_0x1329('0xd')]:_0x5337c4[_0x1329('0xa')]+_0x5337c4[_0x1329('0xc')];var _0x313ca7;if(_0xdf8cb8>=_0x15a1b7){_0xdf8cb8=_0x15a1b7;_0x313ca7=0xc8;}else{_0x313ca7=0xce;}_0x1ba2c4[_0x1329('0xe')](_0x313ca7);return _0x1ba2c4['set'](_0x1329('0xf'),_0x4ba5c4+'-'+_0xdf8cb8+'/'+_0x15a1b7)[_0x1329('0x10')](_0x2fe1f7);}return null;};}exports[_0x1329('0x11')]=function(_0x52677c,_0xe8d1f4){var _0x2ef340={'count':0x0,'rows':[]};var _0x4c7001={};var _0x4da60b;var _0x9befc9=utils[_0x1329('0x12')]();var _0x554645;var _0x57bbe3;var _0x41497b=_0x52677c[_0x1329('0x13')][_0x1329('0x14')];var _0x1334b1=_0x52677c[_0x1329('0x13')][_0x1329('0x15')];var _0x252c39=_0x52677c[_0x1329('0x13')][_0x1329('0x16')];var _0x20b790=_0x1334b1===_0x1329('0x17')||_0x1334b1==='*pause'?!![]:![];var _0x4c3277=[];var _0x25b877;var _0x159759;Promise[_0x1329('0x18')]()[_0x1329('0x19')](function(){if(_0x52677c[_0x1329('0x13')]['channel']){if(!utils['isValidChannel'](_0x52677c[_0x1329('0x13')][_0x1329('0x1a')])){throw new APIBadRequestError(util['format'](_0x1329('0x1b'),_0x52677c[_0x1329('0x13')]['channel']));}_0x4da60b=_0x52677c[_0x1329('0x13')][_0x1329('0x1a')]['toLowerCase']();}if(!_0x52677c[_0x1329('0x13')][_0x1329('0x1c')]||!_0x52677c[_0x1329('0x13')][_0x1329('0x1c')]['includes']('globalStatus')){_0x52677c['query'][_0x1329('0x1c')]=rta['validateSortParameter'](_0x52677c[_0x1329('0x13')][_0x1329('0x1c')]);return;}var _0x156e11=rta[_0x1329('0x1d')](_0x52677c['query'][_0x1329('0x1c')]);_0x52677c[_0x1329('0x13')]['sort']=_0x156e11[_0x1329('0x1e')][_0x1329('0x1f')](',');_0x25b877=_0x156e11[_0x1329('0x20')];})[_0x1329('0x19')](function(){if(!_0x41497b){return[];}return rta['getAgentIdsByQueues'](_0x41497b,_0x4da60b);})[_0x1329('0x19')](function(_0x7e79a6){_0x4c3277=_0x7e79a6;return rta[_0x1329('0x21')]();})[_0x1329('0x19')](function(_0x389cdd){_0x57bbe3=_0x389cdd['rows'];if((!_0x1334b1||_0x20b790)&&!_0x25b877){return _0x4c3277;}if(_0x25b877&&!_0x1334b1){return rta['getSortedAgentsIdsByStatus'](_0x57bbe3,_0x4c3277,_0x25b877);}else{return rta['getAgentIdsByStatus'](_0x57bbe3,_0x4c3277,_0x1334b1);}})[_0x1329('0x19')](function(_0x15093c){_0x4c3277=_0x15093c;var _0x50cb9a=![];if(_0x4c3277['length']===0x0){if(_0x41497b||_0x1334b1){_0x50cb9a=!![];}if(_0x20b790){_0x50cb9a=![];}}if(_0x50cb9a){return _0x2ef340;}var _0x3e7914=_[_0x1329('0x22')](db[_0x1329('0x23')]['rawAttributes'],function(_0x2d847b){return{'name':_0x2d847b[_0x1329('0x24')],'type':_0x2d847b[_0x1329('0x25')][_0x1329('0x26')]};});_0x52677c[_0x1329('0x13')][_0x1329('0x27')]='agent';_0x4c7001=qs[_0x1329('0x28')](_0x3e7914,_0x52677c);_0x4c7001[_0x1329('0x29')]=!![];var _0x303cac=[];if(_0x4c3277[_0x1329('0x2a')]>0x0){_0x303cac['push']({'id':{'$in':_0x4c3277}});if(_0x25b877&&!_0x1334b1){_0x159759=[db[_0x1329('0x2b')][_0x1329('0x2c')](_0x1329('0x2d')+_0x4c3277+')')];_0x4c7001[_0x1329('0x20')]=_0x159759;}}if(_0x20b790){_0x9befc9[_0x1329('0x2e')](function(_0x4e22da){var _0x4590e5=!![];if(_0x1334b1===_0x1329('0x2f')&&_0x4da60b!==_0x4e22da){_0x4590e5=![];}_0x303cac[_0x1329('0x30')]({[_0x4e22da+_0x1329('0x31')]:_0x4590e5});});if(_0x252c39){_0x303cac[_0x1329('0x30')]({'pauseType':_0x252c39});}}else if(_0x1334b1){_0x9befc9[_0x1329('0x2e')](function(_0x3807a9){_0x303cac[_0x1329('0x30')]({[_0x3807a9+_0x1329('0x31')]:![]});});}_0x4c7001[_0x1329('0x32')]=_[_0x1329('0x33')](_0x4c7001[_0x1329('0x32')],{'$and':_0x303cac});if(_0x52677c['user'][_0x1329('0x27')]===_0x1329('0x34')){var _0x2c894c={'params':{'id':_0x52677c[_0x1329('0x34')][_0x1329('0x35')]},'query':{'section':_0x1329('0x36'),'role':'agent','raw':!![],'ids':_0x4c3277,'customSorting':_0x159759}};if(_0x52677c[_0x1329('0x13')][_0x1329('0x37')]){_0x2c894c[_0x1329('0x13')]['online']=!![];}if(_0x20b790){_0x2c894c[_0x1329('0x13')][_0x1329('0x38')]=_0x303cac;}_0x2c894c[_0x1329('0x13')]=Object[_0x1329('0x39')](_0x2c894c['query'],_[_0x1329('0x3a')](_0x52677c['query'],'id'));return db[_0x1329('0x3b')]['getResources'](_0x2c894c);}return db['User'][_0x1329('0x3c')](_0x4c7001);})[_0x1329('0x19')](function(_0x50558c){_0x2ef340[_0x1329('0xd')]=_0x50558c['count'];_0x554645=_0x50558c['rows'];return _0x554645['map'](function(_0x502934){var _0x6e9781=_[_0x1329('0x3d')](_0x57bbe3,['id',_0x502934['id']]);if(_0x6e9781){var _0x44775d=rta['filterAgentAttributes'](_0x6e9781);_['merge'](_0x502934,_0x44775d);}_0x502934[_0x1329('0x3e')]=rta[_0x1329('0x3f')](_0x502934);if(_0x502934['globalStatus']['includes'](_0x1329('0x17'))){_0x9befc9[_0x1329('0x2e')](function(_0x212bea){if(_0x502934[_0x212bea+'Pause']){if(_0x212bea==='voice'){if(_0x502934['voiceStatus']!==_0x1329('0x40')){_0x502934[_0x1329('0x41')]='pause';}}else{_0x502934[_0x212bea+'Status']=_0x1329('0x17');}}});}return _0x502934;});})[_0x1329('0x19')](function(_0x14b2fc){if(!_0x25b877||_0x159759){return _0x14b2fc;}return rta[_0x1329('0x42')](_0x14b2fc,_0x25b877);})['then'](function(_0x57fe24){var _0x3fbd4e=rta['getRealtimeAgentsQueryFields']();_0x2ef340[_0x1329('0x43')]=_0x57fe24[_0x1329('0x22')](function(_0x4a6b86){return _[_0x1329('0x44')](_0x4a6b86,_0x3fbd4e);});return _0x2ef340;})[_0x1329('0x19')](respondWithFilteredResult(_0xe8d1f4,_0x4c7001))[_0x1329('0x45')](APIHandleError(_0xe8d1f4));};exports[_0x1329('0x46')]=function(_0x521d64,_0x5bfa51){var _0x2c14db={'count':0x0,'rows':[]};var _0x1d3751={};var _0x3ea52a;var _0x25f8dd;var _0x31cb00;Promise[_0x1329('0x18')]()['then'](function(){if(_0x521d64[_0x1329('0x13')][_0x1329('0x1a')]){if(!utils['isValidChannel'](_0x521d64[_0x1329('0x13')][_0x1329('0x1a')])){throw new APIBadRequestError(util[_0x1329('0x47')]('Channel\x20parameter\x20%s\x20is\x20invalid',_0x521d64[_0x1329('0x13')][_0x1329('0x1a')]));}_0x3ea52a=_0x521d64['query']['channel']['toLowerCase']();}var _0x1b6ca4=_['startCase'](_0x3ea52a)+'Queue';var _0x1d41bb=_[_0x1329('0x22')](db[_0x1b6ca4]['rawAttributes'],function(_0x143a81){return{'name':_0x143a81[_0x1329('0x24')],'type':_0x143a81[_0x1329('0x25')][_0x1329('0x26')]};});if(!_0x521d64[_0x1329('0x13')]['fields']){var _0x2533ad=['id',_0x1329('0x48')];if(_0x3ea52a===_0x1329('0x49')){_0x2533ad[_0x1329('0x30')](_0x1329('0x25'));if(_0x521d64[_0x1329('0x13')][_0x1329('0x25')]===_0x1329('0x4a')){_0x2533ad[_0x1329('0x30')]([_0x1329('0x4b'),'dialMethod']);}}_0x521d64[_0x1329('0x13')][_0x1329('0x1e')]=_0x2533ad[_0x1329('0x1f')](',');}_0x1d3751=qs[_0x1329('0x28')](_0x1d41bb,_0x521d64);if(_0x521d64[_0x1329('0x34')][_0x1329('0x27')]===_0x1329('0x34')){var _0x5234f6={'params':{'id':_0x521d64[_0x1329('0x34')][_0x1329('0x35')]},'query':{'section':_0x3ea52a===_0x1329('0x49')&&_0x521d64[_0x1329('0x13')][_0x1329('0x25')]===_0x1329('0x4a')?_0x1329('0x4c'):_['startCase'](_0x3ea52a)+_0x1329('0x4d'),'type':_0x521d64[_0x1329('0x13')][_0x1329('0x25')],'nolimit':!![],'sort':_0x1329('0x48'),'filter':_0x521d64[_0x1329('0x13')][_0x1329('0x4e')]}};_0x5234f6['query']=Object['assign'](_0x5234f6[_0x1329('0x13')],_0x521d64[_0x1329('0x13')]);delete _0x5234f6[_0x1329('0x13')]['id'];return db[_0x1329('0x3b')][_0x1329('0x4f')](_0x5234f6);}return db[_0x1b6ca4][_0x1329('0x3c')](_0x1d3751);})[_0x1329('0x19')](function(_0x12ceb5){_0x2c14db['count']=_0x12ceb5[_0x1329('0xd')];_0x25f8dd=_0x12ceb5[_0x1329('0x43')];return rtq[_0x1329('0x50')](_0x521d64,_0x3ea52a);})[_0x1329('0x19')](function(_0x5e6776){_0x31cb00=_0x5e6776['rows'];return rtq[_0x1329('0x51')](_0x25f8dd,_0x31cb00,_0x3ea52a,_0x521d64['query'][_0x1329('0x25')]);})[_0x1329('0x19')](function(_0x5ec17b){_0x2c14db['rows']=_0x5ec17b;return _0x2c14db;})[_0x1329('0x19')](respondWithFilteredResult(_0x5bfa51,_0x1d3751))['catch'](APIHandleError(_0x5bfa51));};