Built motion from commit 4ca75f1b.|2.6.28
[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 _0xfe66=['key','role','agent','getOptions','raw','push','sequelize','literal','FIELD(id,','forEach','where','user','Agents','extraQueryConditions','assign','UserProfile','getResources','findAndCountAll','rows','find','filterAgentAttributes','globalStatus','getAgentStatus','includes','Pause','voice','voiceStatus','talking','Status','pick','catch','resolve','isValidChannel','startCase','Queue','type','name','dialActive','dialMethod','userProfileId','getRealtimeQueues','initializeQueues','util','../../components/parsers/qs','../../config/utils','../../errors/api','APIBadRequestError','offset','undefined','limit','count','status','set','Content-Range','getAgents','getChannels','query','globalQueueFilter','globalStatusFilter','pauseTypeFilter','pause','*pause','then','channel','format','Channel\x20parameter\x20%s\x20is\x20invalid','toLowerCase','sort','validateSortParameter','getUpdatedSortOptions','fields','join','order','getRealtimeAgents','getSortedAgentsIdsByStatus','getAgentIdsByStatus','length','map','User','rawAttributes','fieldName'];(function(_0x19e71d,_0xf5732d){var _0x304813=function(_0x34b17b){while(--_0x34b17b){_0x19e71d['push'](_0x19e71d['shift']());}};_0x304813(++_0xf5732d);}(_0xfe66,0x16e));var _0x6fe6=function(_0x1ee62e,_0x159bb2){_0x1ee62e=_0x1ee62e-0x0;var _0x27c6c8=_0xfe66[_0x1ee62e];return _0x27c6c8;};'use strict';var _=require('lodash');var util=require(_0x6fe6('0x0'));var rta=require('../../components/realtime/agents');var rtq=require('../../components/realtime/queues');var qs=require(_0x6fe6('0x1'));var utils=require(_0x6fe6('0x2'));var db=require('../../mysqldb')['db'];var APIBadRequestError=require(_0x6fe6('0x3'))[_0x6fe6('0x4')];var APIHandleError=require(_0x6fe6('0x3'))['handleError'];function respondWithFilteredResult(_0x7be4f5,_0x1314ae){return function(_0x24344b){if(_0x24344b){var _0x4fae8b=typeof _0x1314ae[_0x6fe6('0x5')]===_0x6fe6('0x6')&&typeof _0x1314ae[_0x6fe6('0x7')]===_0x6fe6('0x6');var _0x26935b=_0x24344b[_0x6fe6('0x8')];var _0x1c9795=_0x4fae8b?0x0:_0x1314ae[_0x6fe6('0x5')];var _0x1bbfe6=_0x4fae8b?_0x24344b[_0x6fe6('0x8')]:_0x1314ae['offset']+_0x1314ae['limit'];var _0x4d8d38;if(_0x1bbfe6>=_0x26935b){_0x1bbfe6=_0x26935b;_0x4d8d38=0xc8;}else{_0x4d8d38=0xce;}_0x7be4f5[_0x6fe6('0x9')](_0x4d8d38);return _0x7be4f5[_0x6fe6('0xa')](_0x6fe6('0xb'),_0x1c9795+'-'+_0x1bbfe6+'/'+_0x26935b)['json'](_0x24344b);}return null;};}exports[_0x6fe6('0xc')]=function(_0x357b2c,_0xfc9168){var _0x3ba7f5={'count':0x0,'rows':[]};var _0x5a5a66={};var _0x1cc833;var _0x30f0bb=utils[_0x6fe6('0xd')]();var _0x57d659;var _0x5dd12b;var _0x1514d6=_0x357b2c[_0x6fe6('0xe')][_0x6fe6('0xf')];var _0x577b9e=_0x357b2c[_0x6fe6('0xe')][_0x6fe6('0x10')];var _0x26781e=_0x357b2c[_0x6fe6('0xe')][_0x6fe6('0x11')];var _0x5d90bf=_0x577b9e===_0x6fe6('0x12')||_0x577b9e===_0x6fe6('0x13')?!![]:![];var _0x536074=[];var _0x3eda8c;var _0x42efaa;Promise['resolve']()[_0x6fe6('0x14')](function(){if(_0x357b2c[_0x6fe6('0xe')][_0x6fe6('0x15')]){if(!utils['isValidChannel'](_0x357b2c[_0x6fe6('0xe')][_0x6fe6('0x15')])){throw new APIBadRequestError(util[_0x6fe6('0x16')](_0x6fe6('0x17'),_0x357b2c[_0x6fe6('0xe')][_0x6fe6('0x15')]));}_0x1cc833=_0x357b2c['query'][_0x6fe6('0x15')][_0x6fe6('0x18')]();}if(!_0x357b2c[_0x6fe6('0xe')][_0x6fe6('0x19')]||!_0x357b2c[_0x6fe6('0xe')][_0x6fe6('0x19')]['includes']('globalStatus')){_0x357b2c[_0x6fe6('0xe')][_0x6fe6('0x19')]=rta[_0x6fe6('0x1a')](_0x357b2c[_0x6fe6('0xe')][_0x6fe6('0x19')]);return;}var _0x1e9848=rta[_0x6fe6('0x1b')](_0x357b2c['query']['sort']);_0x357b2c[_0x6fe6('0xe')][_0x6fe6('0x19')]=_0x1e9848[_0x6fe6('0x1c')][_0x6fe6('0x1d')](',');_0x3eda8c=_0x1e9848[_0x6fe6('0x1e')];})['then'](function(){if(!_0x1514d6){return[];}return rta['getAgentIdsByQueues'](_0x1514d6,_0x1cc833);})[_0x6fe6('0x14')](function(_0xc41d85){_0x536074=_0xc41d85;return rta[_0x6fe6('0x1f')]();})['then'](function(_0x1277f4){_0x5dd12b=_0x1277f4['rows'];if((!_0x577b9e||_0x5d90bf)&&!_0x3eda8c){return _0x536074;}if(_0x3eda8c&&!_0x577b9e){return rta[_0x6fe6('0x20')](_0x5dd12b,_0x536074,_0x3eda8c);}else{return rta[_0x6fe6('0x21')](_0x5dd12b,_0x536074,_0x577b9e);}})[_0x6fe6('0x14')](function(_0x1cf6a9){_0x536074=_0x1cf6a9;var _0x289ef6=![];if(_0x536074[_0x6fe6('0x22')]===0x0){if(_0x1514d6||_0x577b9e){_0x289ef6=!![];}if(_0x5d90bf){_0x289ef6=![];}}if(_0x289ef6){return _0x3ba7f5;}var _0x408b0b=_[_0x6fe6('0x23')](db[_0x6fe6('0x24')][_0x6fe6('0x25')],function(_0x28a594){return{'name':_0x28a594[_0x6fe6('0x26')],'type':_0x28a594['type'][_0x6fe6('0x27')]};});_0x357b2c[_0x6fe6('0xe')][_0x6fe6('0x28')]=_0x6fe6('0x29');_0x5a5a66=qs[_0x6fe6('0x2a')](_0x408b0b,_0x357b2c);_0x5a5a66[_0x6fe6('0x2b')]=!![];var _0x4c515b=[];if(_0x536074[_0x6fe6('0x22')]>0x0){_0x4c515b[_0x6fe6('0x2c')]({'id':{'$in':_0x536074}});if(_0x3eda8c&&!_0x577b9e){_0x42efaa=[db[_0x6fe6('0x2d')][_0x6fe6('0x2e')](_0x6fe6('0x2f')+_0x536074+')')];_0x5a5a66[_0x6fe6('0x1e')]=_0x42efaa;}}if(_0x5d90bf){_0x30f0bb[_0x6fe6('0x30')](function(_0x5e1678){var _0x46735f=!![];if(_0x577b9e===_0x6fe6('0x13')&&_0x1cc833!==_0x5e1678){_0x46735f=![];}_0x4c515b[_0x6fe6('0x2c')]({[_0x5e1678+'Pause']:_0x46735f});});if(_0x26781e){_0x4c515b[_0x6fe6('0x2c')]({'pauseType':_0x26781e});}}else if(_0x577b9e){_0x30f0bb[_0x6fe6('0x30')](function(_0xf86e12){_0x4c515b[_0x6fe6('0x2c')]({[_0xf86e12+'Pause']:![]});});}_0x5a5a66[_0x6fe6('0x31')]=_['merge'](_0x5a5a66[_0x6fe6('0x31')],{'$and':_0x4c515b});if(_0x357b2c[_0x6fe6('0x32')][_0x6fe6('0x28')]===_0x6fe6('0x32')){var _0x249535={'params':{'id':_0x357b2c['user']['userProfileId']},'query':{'section':_0x6fe6('0x33'),'role':'agent','raw':!![],'ids':_0x536074,'customSorting':_0x42efaa}};if(_0x357b2c[_0x6fe6('0xe')]['online']){_0x249535[_0x6fe6('0xe')]['online']=!![];}if(_0x5d90bf){_0x249535[_0x6fe6('0xe')][_0x6fe6('0x34')]=_0x4c515b;}_0x249535[_0x6fe6('0xe')]=Object[_0x6fe6('0x35')](_0x249535[_0x6fe6('0xe')],_0x357b2c[_0x6fe6('0xe')]);return db[_0x6fe6('0x36')][_0x6fe6('0x37')](_0x249535);}return db[_0x6fe6('0x24')][_0x6fe6('0x38')](_0x5a5a66);})[_0x6fe6('0x14')](function(_0x1c4842){_0x3ba7f5[_0x6fe6('0x8')]=_0x1c4842[_0x6fe6('0x8')];_0x57d659=_0x1c4842[_0x6fe6('0x39')];return _0x57d659[_0x6fe6('0x23')](function(_0x2d29de){var _0x3a71e8=_[_0x6fe6('0x3a')](_0x5dd12b,['id',_0x2d29de['id']]);if(_0x3a71e8){var _0x2b1f02=rta[_0x6fe6('0x3b')](_0x3a71e8);_['merge'](_0x2d29de,_0x2b1f02);}_0x2d29de[_0x6fe6('0x3c')]=rta[_0x6fe6('0x3d')](_0x2d29de);if(_0x2d29de['globalStatus'][_0x6fe6('0x3e')](_0x6fe6('0x12'))){_0x30f0bb[_0x6fe6('0x30')](function(_0x5c7537){if(_0x2d29de[_0x5c7537+_0x6fe6('0x3f')]){if(_0x5c7537===_0x6fe6('0x40')){if(_0x2d29de[_0x6fe6('0x41')]!==_0x6fe6('0x42')){_0x2d29de[_0x6fe6('0x41')]=_0x6fe6('0x12');}}else{_0x2d29de[_0x5c7537+_0x6fe6('0x43')]='pause';}}});}return _0x2d29de;});})[_0x6fe6('0x14')](function(_0x4f3f5a){if(!_0x3eda8c||_0x42efaa){return _0x4f3f5a;}return rta['sortAgentsByStatus'](_0x4f3f5a,_0x3eda8c);})[_0x6fe6('0x14')](function(_0x578bdb){var _0x3e3293=rta['getRealtimeAgentsQueryFields']();_0x3ba7f5['rows']=_0x578bdb[_0x6fe6('0x23')](function(_0x2f26f0){return _[_0x6fe6('0x44')](_0x2f26f0,_0x3e3293);});return _0x3ba7f5;})[_0x6fe6('0x14')](respondWithFilteredResult(_0xfc9168,_0x5a5a66))[_0x6fe6('0x45')](APIHandleError(_0xfc9168));};exports['getQueues']=function(_0x783c4a,_0x3dec72){var _0x4cc57a={'count':0x0,'rows':[]};var _0x30ce4a={};var _0x2a821c;var _0x286bb5;var _0x3ac169;Promise[_0x6fe6('0x46')]()[_0x6fe6('0x14')](function(){if(_0x783c4a[_0x6fe6('0xe')][_0x6fe6('0x15')]){if(!utils[_0x6fe6('0x47')](_0x783c4a[_0x6fe6('0xe')][_0x6fe6('0x15')])){throw new APIBadRequestError(util[_0x6fe6('0x16')](_0x6fe6('0x17'),_0x783c4a[_0x6fe6('0xe')]['channel']));}_0x2a821c=_0x783c4a['query']['channel']['toLowerCase']();}var _0xd9afb6=_[_0x6fe6('0x48')](_0x2a821c)+_0x6fe6('0x49');var _0x300b11=_['map'](db[_0xd9afb6]['rawAttributes'],function(_0x49e420){return{'name':_0x49e420[_0x6fe6('0x26')],'type':_0x49e420[_0x6fe6('0x4a')][_0x6fe6('0x27')]};});if(!_0x783c4a['query'][_0x6fe6('0x1c')]){var _0x3460fd=['id',_0x6fe6('0x4b')];if(_0x2a821c===_0x6fe6('0x40')){_0x3460fd[_0x6fe6('0x2c')](_0x6fe6('0x4a'));if(_0x783c4a[_0x6fe6('0xe')][_0x6fe6('0x4a')]==='outbound'){_0x3460fd[_0x6fe6('0x2c')]([_0x6fe6('0x4c'),_0x6fe6('0x4d')]);}}_0x783c4a[_0x6fe6('0xe')][_0x6fe6('0x1c')]=_0x3460fd['join'](',');}_0x30ce4a=qs['getOptions'](_0x300b11,_0x783c4a);if(_0x783c4a['user'][_0x6fe6('0x28')]==='user'){var _0x2000c1={'params':{'id':_0x783c4a[_0x6fe6('0x32')][_0x6fe6('0x4e')]},'query':{'section':_0x2a821c===_0x6fe6('0x40')&&_0x783c4a[_0x6fe6('0xe')][_0x6fe6('0x4a')]==='outbound'?'QueueCampaigns':_[_0x6fe6('0x48')](_0x2a821c)+'Queues','type':_0x783c4a[_0x6fe6('0xe')][_0x6fe6('0x4a')],'nolimit':!![],'sort':_0x6fe6('0x4b'),'filter':_0x783c4a[_0x6fe6('0xe')]['filter']}};_0x2000c1[_0x6fe6('0xe')]=Object[_0x6fe6('0x35')](_0x2000c1['query'],_0x783c4a[_0x6fe6('0xe')]);delete _0x2000c1[_0x6fe6('0xe')]['id'];return db[_0x6fe6('0x36')][_0x6fe6('0x37')](_0x2000c1);}return db[_0xd9afb6][_0x6fe6('0x38')](_0x30ce4a);})[_0x6fe6('0x14')](function(_0x2d388d){_0x4cc57a[_0x6fe6('0x8')]=_0x2d388d[_0x6fe6('0x8')];_0x286bb5=_0x2d388d[_0x6fe6('0x39')];return rtq[_0x6fe6('0x4f')](_0x783c4a,_0x2a821c);})[_0x6fe6('0x14')](function(_0x35f3df){_0x3ac169=_0x35f3df[_0x6fe6('0x39')];return rtq[_0x6fe6('0x50')](_0x286bb5,_0x3ac169,_0x2a821c,_0x783c4a[_0x6fe6('0xe')][_0x6fe6('0x4a')]);})[_0x6fe6('0x14')](function(_0x233342){_0x4cc57a[_0x6fe6('0x39')]=_0x233342;return _0x4cc57a;})[_0x6fe6('0x14')](respondWithFilteredResult(_0x3dec72,_0x30ce4a))['catch'](APIHandleError(_0x3dec72));};