41e5d556702776376509a35c58c6d5479f00ad35
[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 _0x7d5d=['Channel\x20parameter\x20%s\x20is\x20invalid','toLowerCase','includes','globalStatus','sort','validateSortParameter','getUpdatedSortOptions','fields','join','order','getAgentIdsByQueues','getRealtimeAgents','rows','getSortedAgentsIdsByStatus','getAgentIdsByStatus','map','User','rawAttributes','fieldName','key','getOptions','raw','length','push','sequelize','literal','FIELD(id,','*pause','Pause','where','merge','user','role','userProfileId','agent','assign','UserProfile','find','filterAgentAttributes','getAgentStatus','voice','talking','voiceStatus','Status','sortAgentsByStatus','split','catch','resolve','isValidChannel','startCase','Queue','name','type','outbound','dialActive','dialMethod','QueueCampaigns','filter','getResources','findAndCountAll','getRealtimeQueues','initializeQueues','util','../../components/realtime/agents','../../config/utils','../../mysqldb','../../errors/api','handleError','offset','undefined','limit','count','status','set','getAgents','getChannels','query','globalStatusFilter','pauseTypeFilter','pause','then','channel','format'];(function(_0x247adc,_0x354368){var _0x2c33d8=function(_0x414131){while(--_0x414131){_0x247adc['push'](_0x247adc['shift']());}};_0x2c33d8(++_0x354368);}(_0x7d5d,0x1dd));var _0xd7d5=function(_0x40d768,_0x30ad98){_0x40d768=_0x40d768-0x0;var _0x1ab282=_0x7d5d[_0x40d768];return _0x1ab282;};'use strict';var _=require('lodash');var util=require(_0xd7d5('0x0'));var rta=require(_0xd7d5('0x1'));var rtq=require('../../components/realtime/queues');var qs=require('../../components/parsers/qs');var utils=require(_0xd7d5('0x2'));var db=require(_0xd7d5('0x3'))['db'];var APIBadRequestError=require(_0xd7d5('0x4'))['APIBadRequestError'];var APIHandleError=require(_0xd7d5('0x4'))[_0xd7d5('0x5')];function respondWithFilteredResult(_0xed8369,_0x352c44){return function(_0x3b0a50){if(_0x3b0a50){var _0x559f36=typeof _0x352c44[_0xd7d5('0x6')]===_0xd7d5('0x7')&&typeof _0x352c44[_0xd7d5('0x8')]==='undefined';var _0x1499df=_0x3b0a50[_0xd7d5('0x9')];var _0x4c3b64=_0x559f36?0x0:_0x352c44[_0xd7d5('0x6')];var _0x23b02e=_0x559f36?_0x3b0a50[_0xd7d5('0x9')]:_0x352c44['offset']+_0x352c44[_0xd7d5('0x8')];var _0x15f33b;if(_0x23b02e>=_0x1499df){_0x23b02e=_0x1499df;_0x15f33b=0xc8;}else{_0x15f33b=0xce;}_0xed8369[_0xd7d5('0xa')](_0x15f33b);return _0xed8369[_0xd7d5('0xb')]('Content-Range',_0x4c3b64+'-'+_0x23b02e+'/'+_0x1499df)['json'](_0x3b0a50);}return null;};}exports[_0xd7d5('0xc')]=function(_0x3f695b,_0x283b16){var _0x2ecc2a={'count':0x0,'rows':[]};var _0x36d707={};var _0x612f8c;var _0x54e2f1=utils[_0xd7d5('0xd')]();var _0x32753d;var _0x2c38f1;var _0x3a01d9=_0x3f695b[_0xd7d5('0xe')]['globalQueueFilter'];var _0x4508f2=_0x3f695b[_0xd7d5('0xe')][_0xd7d5('0xf')];var _0x25b1cb=_0x3f695b[_0xd7d5('0xe')][_0xd7d5('0x10')];var _0x2625e2=_0x4508f2===_0xd7d5('0x11')||_0x4508f2==='*pause'?!![]:![];var _0x567b97=[];var _0xdc774c;var _0x5ea400;Promise['resolve']()[_0xd7d5('0x12')](function(){if(_0x3f695b['query'][_0xd7d5('0x13')]){if(!utils['isValidChannel'](_0x3f695b[_0xd7d5('0xe')][_0xd7d5('0x13')])){throw new APIBadRequestError(util[_0xd7d5('0x14')](_0xd7d5('0x15'),_0x3f695b[_0xd7d5('0xe')]['channel']));}_0x612f8c=_0x3f695b[_0xd7d5('0xe')][_0xd7d5('0x13')][_0xd7d5('0x16')]();}if(!_0x3f695b['query']['sort']||!_0x3f695b[_0xd7d5('0xe')]['sort'][_0xd7d5('0x17')](_0xd7d5('0x18'))){_0x3f695b[_0xd7d5('0xe')][_0xd7d5('0x19')]=rta[_0xd7d5('0x1a')](_0x3f695b[_0xd7d5('0xe')][_0xd7d5('0x19')]);return;}var _0x4da10b=rta[_0xd7d5('0x1b')](_0x3f695b[_0xd7d5('0xe')]['sort']);_0x3f695b[_0xd7d5('0xe')][_0xd7d5('0x19')]=_0x4da10b[_0xd7d5('0x1c')][_0xd7d5('0x1d')](',');_0xdc774c=_0x4da10b[_0xd7d5('0x1e')];})[_0xd7d5('0x12')](function(){if(!_0x3a01d9){return[];}return rta[_0xd7d5('0x1f')](_0x3a01d9,_0x612f8c);})[_0xd7d5('0x12')](function(_0x3bd423){_0x567b97=_0x3bd423;return rta[_0xd7d5('0x20')]();})[_0xd7d5('0x12')](function(_0x2930c8){_0x2c38f1=_0x2930c8[_0xd7d5('0x21')];if((!_0x4508f2||_0x2625e2)&&!_0xdc774c){return _0x567b97;}if(_0xdc774c&&!_0x4508f2){return rta[_0xd7d5('0x22')](_0x2c38f1,_0x567b97,_0xdc774c);}else{return rta[_0xd7d5('0x23')](_0x2c38f1,_0x567b97,_0x4508f2);}})['then'](function(_0x3b258d){_0x567b97=_0x3b258d;var _0x1d8bfb=![];if(_0x567b97['length']===0x0){if(_0x3a01d9||_0x4508f2){_0x1d8bfb=!![];}if(_0x2625e2){_0x1d8bfb=![];}}if(_0x1d8bfb){return _0x2ecc2a;}var _0x30b929=_[_0xd7d5('0x24')](db[_0xd7d5('0x25')][_0xd7d5('0x26')],function(_0x42cb58){return{'name':_0x42cb58[_0xd7d5('0x27')],'type':_0x42cb58['type'][_0xd7d5('0x28')]};});_0x3f695b[_0xd7d5('0xe')]['role']='agent';_0x3f695b['query']['online']=!![];_0x36d707=qs[_0xd7d5('0x29')](_0x30b929,_0x3f695b);_0x36d707[_0xd7d5('0x2a')]=!![];var _0x3e943d=[];if(_0x567b97[_0xd7d5('0x2b')]>0x0){_0x3e943d[_0xd7d5('0x2c')]({'id':{'$in':_0x567b97}});if(_0xdc774c&&!_0x4508f2){_0x5ea400=[db[_0xd7d5('0x2d')][_0xd7d5('0x2e')](_0xd7d5('0x2f')+_0x567b97+')')];_0x36d707[_0xd7d5('0x1e')]=_0x5ea400;}}if(_0x2625e2){_0x54e2f1['forEach'](function(_0x2a54dd){var _0x31a9a9=!![];if(_0x4508f2===_0xd7d5('0x30')&&_0x612f8c!==_0x2a54dd){_0x31a9a9=![];}_0x3e943d[_0xd7d5('0x2c')]({[_0x2a54dd+_0xd7d5('0x31')]:_0x31a9a9});});if(_0x25b1cb){_0x3e943d[_0xd7d5('0x2c')]({'pauseType':_0x25b1cb});}}else if(_0x4508f2){_0x54e2f1['forEach'](function(_0x53d896){_0x3e943d[_0xd7d5('0x2c')]({[_0x53d896+_0xd7d5('0x31')]:![]});});}_0x36d707[_0xd7d5('0x32')]=_[_0xd7d5('0x33')](_0x36d707[_0xd7d5('0x32')],{'$and':_0x3e943d});if(_0x3f695b[_0xd7d5('0x34')][_0xd7d5('0x35')]===_0xd7d5('0x34')){var _0x536952={'params':{'id':_0x3f695b[_0xd7d5('0x34')][_0xd7d5('0x36')]},'query':{'section':'Agents','role':_0xd7d5('0x37'),'online':!![],'raw':!![],'ids':_0x567b97,'customSorting':_0x5ea400}};if(_0x2625e2){_0x536952['query']['extraQueryConditions']=_0x3e943d;}_0x536952[_0xd7d5('0xe')]=Object[_0xd7d5('0x38')](_0x536952[_0xd7d5('0xe')],_0x3f695b[_0xd7d5('0xe')]);delete _0x536952['query']['id'];return db[_0xd7d5('0x39')]['getResources'](_0x536952);}return db[_0xd7d5('0x25')]['findAndCountAll'](_0x36d707);})['then'](function(_0x4b3982){_0x2ecc2a['count']=_0x4b3982[_0xd7d5('0x9')];_0x32753d=_0x4b3982['rows'];return _0x32753d['map'](function(_0xa43e66){var _0xfdaa7b=_[_0xd7d5('0x3a')](_0x2c38f1,['id',_0xa43e66['id']]);if(_0xfdaa7b){var _0x51d5ca=rta[_0xd7d5('0x3b')](_0xfdaa7b);_['merge'](_0xa43e66,_0x51d5ca);}_0xa43e66[_0xd7d5('0x18')]=rta[_0xd7d5('0x3c')](_0xa43e66);if(_0xa43e66[_0xd7d5('0x18')][_0xd7d5('0x17')]('pause')){_0x54e2f1['forEach'](function(_0x49ee0a){if(_0xa43e66[_0x49ee0a+_0xd7d5('0x31')]){if(_0x49ee0a===_0xd7d5('0x3d')){if(_0xa43e66['voiceStatus']!==_0xd7d5('0x3e')){_0xa43e66[_0xd7d5('0x3f')]=_0xd7d5('0x11');}}else{_0xa43e66[_0x49ee0a+_0xd7d5('0x40')]=_0xd7d5('0x11');}}});}return _0xa43e66;});})['then'](function(_0x50a40d){if(!_0xdc774c||_0x5ea400){return _0x50a40d;}return rta[_0xd7d5('0x41')](_0x50a40d,_0xdc774c);})[_0xd7d5('0x12')](function(_0x5ccbf8){var _0x56b879=null;if(_0x3f695b['query'][_0xd7d5('0x1c')]){var _0x1d6f8f=_0x3f695b['query']['fields'][_0xd7d5('0x42')](',');_0x56b879=_0x5ccbf8['map'](function(_0x329e29){return _['pick'](_0x329e29,_0x1d6f8f);});}_0x2ecc2a[_0xd7d5('0x21')]=_0x56b879||_0x5ccbf8;return _0x2ecc2a;})[_0xd7d5('0x12')](respondWithFilteredResult(_0x283b16,_0x36d707))[_0xd7d5('0x43')](APIHandleError(_0x283b16));};exports['getQueues']=function(_0x2115e8,_0x25aec9){var _0x59de05={'count':0x0,'rows':[]};var _0x2d525d={};var _0x6abc8f;var _0xce6a0c;var _0x57cbb0;Promise[_0xd7d5('0x44')]()[_0xd7d5('0x12')](function(){if(_0x2115e8['query'][_0xd7d5('0x13')]){if(!utils[_0xd7d5('0x45')](_0x2115e8[_0xd7d5('0xe')][_0xd7d5('0x13')])){throw new APIBadRequestError(util[_0xd7d5('0x14')](_0xd7d5('0x15'),_0x2115e8[_0xd7d5('0xe')][_0xd7d5('0x13')]));}_0x6abc8f=_0x2115e8[_0xd7d5('0xe')]['channel'][_0xd7d5('0x16')]();}var _0x1b4f54=_[_0xd7d5('0x46')](_0x6abc8f)+_0xd7d5('0x47');var _0x2747aa=_[_0xd7d5('0x24')](db[_0x1b4f54][_0xd7d5('0x26')],function(_0x5624e4){return{'name':_0x5624e4['fieldName'],'type':_0x5624e4['type'][_0xd7d5('0x28')]};});if(!_0x2115e8[_0xd7d5('0xe')][_0xd7d5('0x1c')]){var _0x5ce350=['id',_0xd7d5('0x48')];if(_0x6abc8f===_0xd7d5('0x3d')){_0x5ce350['push'](_0xd7d5('0x49'));if(_0x2115e8[_0xd7d5('0xe')][_0xd7d5('0x49')]===_0xd7d5('0x4a')){_0x5ce350[_0xd7d5('0x2c')]([_0xd7d5('0x4b'),_0xd7d5('0x4c')]);}}_0x2115e8[_0xd7d5('0xe')]['fields']=_0x5ce350[_0xd7d5('0x1d')](',');}_0x2d525d=qs[_0xd7d5('0x29')](_0x2747aa,_0x2115e8);if(_0x2115e8[_0xd7d5('0x34')]['role']==='user'){var _0x10a0b0={'params':{'id':_0x2115e8[_0xd7d5('0x34')][_0xd7d5('0x36')]},'query':{'section':_0x6abc8f==='voice'&&_0x2115e8[_0xd7d5('0xe')]['type']==='outbound'?_0xd7d5('0x4d'):_['startCase'](_0x6abc8f)+'Queues','type':_0x2115e8[_0xd7d5('0xe')][_0xd7d5('0x49')],'nolimit':!![],'sort':_0xd7d5('0x48'),'filter':_0x2115e8[_0xd7d5('0xe')][_0xd7d5('0x4e')]}};_0x10a0b0[_0xd7d5('0xe')]=Object[_0xd7d5('0x38')](_0x10a0b0[_0xd7d5('0xe')],_0x2115e8['query']);delete _0x10a0b0[_0xd7d5('0xe')]['id'];return db['UserProfile'][_0xd7d5('0x4f')](_0x10a0b0);}return db[_0x1b4f54][_0xd7d5('0x50')](_0x2d525d);})['then'](function(_0x186f78){_0x59de05[_0xd7d5('0x9')]=_0x186f78['count'];_0xce6a0c=_0x186f78[_0xd7d5('0x21')];return rtq[_0xd7d5('0x51')](_0x2115e8,_0x6abc8f);})[_0xd7d5('0x12')](function(_0x392b69){_0x57cbb0=_0x392b69[_0xd7d5('0x21')];return rtq[_0xd7d5('0x52')](_0xce6a0c,_0x57cbb0,_0x6abc8f,_0x2115e8['query'][_0xd7d5('0x49')]);})[_0xd7d5('0x12')](function(_0x177ad3){_0x59de05[_0xd7d5('0x21')]=_0x177ad3;return _0x59de05;})[_0xd7d5('0x12')](respondWithFilteredResult(_0x25aec9,_0x2d525d))['catch'](APIHandleError(_0x25aec9));};