Built motion from commit 4c281f94.|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 _0x38c4=['fieldName','type','key','agent','getOptions','raw','push','sequelize','forEach','Pause','where','user','role','userProfileId','online','extraQueryConditions','assign','UserProfile','getResources','findAndCountAll','filterAgentAttributes','merge','voiceStatus','talking','Status','sortAgentsByStatus','getRealtimeAgentsQueryFields','catch','Channel\x20parameter\x20%s\x20is\x20invalid','startCase','voice','outbound','Queues','name','filter','getRealtimeQueues','util','../../components/realtime/queues','../../config/utils','../../mysqldb','../../errors/api','APIBadRequestError','handleError','undefined','limit','count','set','Content-Range','json','getAgents','getChannels','query','globalQueueFilter','globalStatusFilter','pauseTypeFilter','pause','*pause','resolve','then','channel','isValidChannel','format','toLowerCase','sort','includes','globalStatus','getUpdatedSortOptions','fields','order','getAgentIdsByQueues','getRealtimeAgents','rows','getSortedAgentsIdsByStatus','length','map','rawAttributes'];(function(_0x58c20f,_0x4cdb1b){var _0x3b0318=function(_0x36fa84){while(--_0x36fa84){_0x58c20f['push'](_0x58c20f['shift']());}};_0x3b0318(++_0x4cdb1b);}(_0x38c4,0xbc));var _0x438c=function(_0x4f462a,_0x24d244){_0x4f462a=_0x4f462a-0x0;var _0x5ad97b=_0x38c4[_0x4f462a];return _0x5ad97b;};'use strict';var _=require('lodash');var util=require(_0x438c('0x0'));var rta=require('../../components/realtime/agents');var rtq=require(_0x438c('0x1'));var qs=require('../../components/parsers/qs');var utils=require(_0x438c('0x2'));var db=require(_0x438c('0x3'))['db'];var APIBadRequestError=require(_0x438c('0x4'))[_0x438c('0x5')];var APIHandleError=require('../../errors/api')[_0x438c('0x6')];function respondWithFilteredResult(_0x1b9dd8,_0x3b26b4){return function(_0x204590){if(_0x204590){var _0x3e8e44=typeof _0x3b26b4['offset']===_0x438c('0x7')&&typeof _0x3b26b4[_0x438c('0x8')]===_0x438c('0x7');var _0x51dfa1=_0x204590['count'];var _0x284078=_0x3e8e44?0x0:_0x3b26b4['offset'];var _0x2cd140=_0x3e8e44?_0x204590[_0x438c('0x9')]:_0x3b26b4['offset']+_0x3b26b4[_0x438c('0x8')];var _0x4b1ae3;if(_0x2cd140>=_0x51dfa1){_0x2cd140=_0x51dfa1;_0x4b1ae3=0xc8;}else{_0x4b1ae3=0xce;}_0x1b9dd8['status'](_0x4b1ae3);return _0x1b9dd8[_0x438c('0xa')](_0x438c('0xb'),_0x284078+'-'+_0x2cd140+'/'+_0x51dfa1)[_0x438c('0xc')](_0x204590);}return null;};}exports[_0x438c('0xd')]=function(_0x544651,_0x4db862){var _0x5ae945={'count':0x0,'rows':[]};var _0xcebb66={};var _0x242a87;var _0x126461=utils[_0x438c('0xe')]();var _0x5f25d2;var _0x432b01;var _0xa477e9=_0x544651[_0x438c('0xf')][_0x438c('0x10')];var _0x510092=_0x544651[_0x438c('0xf')][_0x438c('0x11')];var _0x4fc361=_0x544651[_0x438c('0xf')][_0x438c('0x12')];var _0x104458=_0x510092===_0x438c('0x13')||_0x510092===_0x438c('0x14')?!![]:![];var _0x3fad5a=[];var _0x5112d3;var _0x1b7f3b;Promise[_0x438c('0x15')]()[_0x438c('0x16')](function(){if(_0x544651[_0x438c('0xf')][_0x438c('0x17')]){if(!utils[_0x438c('0x18')](_0x544651[_0x438c('0xf')][_0x438c('0x17')])){throw new APIBadRequestError(util[_0x438c('0x19')]('Channel\x20parameter\x20%s\x20is\x20invalid',_0x544651[_0x438c('0xf')][_0x438c('0x17')]));}_0x242a87=_0x544651[_0x438c('0xf')][_0x438c('0x17')][_0x438c('0x1a')]();}if(!_0x544651['query'][_0x438c('0x1b')]||!_0x544651[_0x438c('0xf')]['sort'][_0x438c('0x1c')](_0x438c('0x1d'))){_0x544651['query'][_0x438c('0x1b')]=rta['validateSortParameter'](_0x544651['query']['sort']);return;}var _0x4feecb=rta[_0x438c('0x1e')](_0x544651[_0x438c('0xf')][_0x438c('0x1b')]);_0x544651[_0x438c('0xf')][_0x438c('0x1b')]=_0x4feecb[_0x438c('0x1f')]['join'](',');_0x5112d3=_0x4feecb[_0x438c('0x20')];})['then'](function(){if(!_0xa477e9){return[];}return rta[_0x438c('0x21')](_0xa477e9,_0x242a87);})[_0x438c('0x16')](function(_0x17c48b){_0x3fad5a=_0x17c48b;return rta[_0x438c('0x22')]();})[_0x438c('0x16')](function(_0x1a32c8){_0x432b01=_0x1a32c8[_0x438c('0x23')];if((!_0x510092||_0x104458)&&!_0x5112d3){return _0x3fad5a;}if(_0x5112d3&&!_0x510092){return rta[_0x438c('0x24')](_0x432b01,_0x3fad5a,_0x5112d3);}else{return rta['getAgentIdsByStatus'](_0x432b01,_0x3fad5a,_0x510092);}})[_0x438c('0x16')](function(_0x399c69){_0x3fad5a=_0x399c69;var _0x52e39f=![];if(_0x3fad5a[_0x438c('0x25')]===0x0){if(_0xa477e9||_0x510092){_0x52e39f=!![];}if(_0x104458){_0x52e39f=![];}}if(_0x52e39f){return _0x5ae945;}var _0x3a9c7b=_[_0x438c('0x26')](db['User'][_0x438c('0x27')],function(_0x41bec9){return{'name':_0x41bec9[_0x438c('0x28')],'type':_0x41bec9[_0x438c('0x29')][_0x438c('0x2a')]};});_0x544651['query']['role']=_0x438c('0x2b');_0xcebb66=qs[_0x438c('0x2c')](_0x3a9c7b,_0x544651);_0xcebb66[_0x438c('0x2d')]=!![];var _0x4d7707=[];if(_0x3fad5a['length']>0x0){_0x4d7707[_0x438c('0x2e')]({'id':{'$in':_0x3fad5a}});if(_0x5112d3&&!_0x510092){_0x1b7f3b=[db[_0x438c('0x2f')]['literal']('FIELD(id,'+_0x3fad5a+')')];_0xcebb66[_0x438c('0x20')]=_0x1b7f3b;}}if(_0x104458){_0x126461[_0x438c('0x30')](function(_0x54cefd){var _0x2a56cf=!![];if(_0x510092===_0x438c('0x14')&&_0x242a87!==_0x54cefd){_0x2a56cf=![];}_0x4d7707[_0x438c('0x2e')]({[_0x54cefd+_0x438c('0x31')]:_0x2a56cf});});if(_0x4fc361){_0x4d7707['push']({'pauseType':_0x4fc361});}}else if(_0x510092){_0x126461[_0x438c('0x30')](function(_0x24c863){_0x4d7707[_0x438c('0x2e')]({[_0x24c863+_0x438c('0x31')]:![]});});}_0xcebb66['where']=_['merge'](_0xcebb66[_0x438c('0x32')],{'$and':_0x4d7707});if(_0x544651[_0x438c('0x33')][_0x438c('0x34')]===_0x438c('0x33')){var _0x58d4c4={'params':{'id':_0x544651[_0x438c('0x33')][_0x438c('0x35')]},'query':{'section':'Agents','role':'agent','raw':!![],'ids':_0x3fad5a,'customSorting':_0x1b7f3b}};if(_0x544651['query'][_0x438c('0x36')]){_0x58d4c4['query'][_0x438c('0x36')]=!![];}if(_0x104458){_0x58d4c4[_0x438c('0xf')][_0x438c('0x37')]=_0x4d7707;}_0x58d4c4['query']=Object[_0x438c('0x38')](_0x58d4c4[_0x438c('0xf')],_['omit'](_0x544651[_0x438c('0xf')],'id'));return db[_0x438c('0x39')][_0x438c('0x3a')](_0x58d4c4);}return db['User'][_0x438c('0x3b')](_0xcebb66);})['then'](function(_0x2e7bfb){_0x5ae945[_0x438c('0x9')]=_0x2e7bfb['count'];_0x5f25d2=_0x2e7bfb[_0x438c('0x23')];return _0x5f25d2[_0x438c('0x26')](function(_0x16107d){var _0x2bc7d9=_['find'](_0x432b01,['id',_0x16107d['id']]);if(_0x2bc7d9){var _0x1bad00=rta[_0x438c('0x3c')](_0x2bc7d9);_[_0x438c('0x3d')](_0x16107d,_0x1bad00);}_0x16107d['globalStatus']=rta['getAgentStatus'](_0x16107d);if(_0x16107d[_0x438c('0x1d')]['includes'](_0x438c('0x13'))){_0x126461[_0x438c('0x30')](function(_0x2df348){if(_0x16107d[_0x2df348+_0x438c('0x31')]){if(_0x2df348==='voice'){if(_0x16107d[_0x438c('0x3e')]!==_0x438c('0x3f')){_0x16107d['voiceStatus']=_0x438c('0x13');}}else{_0x16107d[_0x2df348+_0x438c('0x40')]='pause';}}});}return _0x16107d;});})[_0x438c('0x16')](function(_0x31b67c){if(!_0x5112d3||_0x1b7f3b){return _0x31b67c;}return rta[_0x438c('0x41')](_0x31b67c,_0x5112d3);})[_0x438c('0x16')](function(_0x6e2d79){var _0x141526=rta[_0x438c('0x42')]();_0x5ae945['rows']=_0x6e2d79[_0x438c('0x26')](function(_0x5985e5){return _['pick'](_0x5985e5,_0x141526);});return _0x5ae945;})[_0x438c('0x16')](respondWithFilteredResult(_0x4db862,_0xcebb66))[_0x438c('0x43')](APIHandleError(_0x4db862));};exports['getQueues']=function(_0x3de0bc,_0x2609d9){var _0xaeb319={'count':0x0,'rows':[]};var _0x194e2f={};var _0x169623;var _0x3566c8;var _0x14bc39;Promise[_0x438c('0x15')]()[_0x438c('0x16')](function(){if(_0x3de0bc[_0x438c('0xf')]['channel']){if(!utils[_0x438c('0x18')](_0x3de0bc['query'][_0x438c('0x17')])){throw new APIBadRequestError(util['format'](_0x438c('0x44'),_0x3de0bc[_0x438c('0xf')][_0x438c('0x17')]));}_0x169623=_0x3de0bc['query']['channel'][_0x438c('0x1a')]();}var _0x52df43=_[_0x438c('0x45')](_0x169623)+'Queue';var _0x389c4a=_['map'](db[_0x52df43][_0x438c('0x27')],function(_0x21f836){return{'name':_0x21f836[_0x438c('0x28')],'type':_0x21f836['type']['key']};});if(!_0x3de0bc['query']['fields']){var _0x59ba9b=['id','name'];if(_0x169623===_0x438c('0x46')){_0x59ba9b['push'](_0x438c('0x29'));if(_0x3de0bc[_0x438c('0xf')][_0x438c('0x29')]==='outbound'){_0x59ba9b[_0x438c('0x2e')](['dialActive','dialMethod']);}}_0x3de0bc[_0x438c('0xf')][_0x438c('0x1f')]=_0x59ba9b['join'](',');}_0x194e2f=qs[_0x438c('0x2c')](_0x389c4a,_0x3de0bc);if(_0x3de0bc[_0x438c('0x33')]['role']==='user'){var _0xbb0402={'params':{'id':_0x3de0bc[_0x438c('0x33')][_0x438c('0x35')]},'query':{'section':_0x169623===_0x438c('0x46')&&_0x3de0bc[_0x438c('0xf')][_0x438c('0x29')]===_0x438c('0x47')?'QueueCampaigns':_[_0x438c('0x45')](_0x169623)+_0x438c('0x48'),'type':_0x3de0bc[_0x438c('0xf')][_0x438c('0x29')],'nolimit':!![],'sort':_0x438c('0x49'),'filter':_0x3de0bc[_0x438c('0xf')][_0x438c('0x4a')]}};_0xbb0402[_0x438c('0xf')]=Object[_0x438c('0x38')](_0xbb0402[_0x438c('0xf')],_0x3de0bc['query']);delete _0xbb0402['query']['id'];return db[_0x438c('0x39')][_0x438c('0x3a')](_0xbb0402);}return db[_0x52df43][_0x438c('0x3b')](_0x194e2f);})[_0x438c('0x16')](function(_0x1d0a19){_0xaeb319[_0x438c('0x9')]=_0x1d0a19['count'];_0x3566c8=_0x1d0a19[_0x438c('0x23')];return rtq[_0x438c('0x4b')](_0x3de0bc,_0x169623);})[_0x438c('0x16')](function(_0xe9c555){_0x14bc39=_0xe9c555[_0x438c('0x23')];return rtq['initializeQueues'](_0x3566c8,_0x14bc39,_0x169623,_0x3de0bc[_0x438c('0xf')][_0x438c('0x29')]);})[_0x438c('0x16')](function(_0x431a48){_0xaeb319[_0x438c('0x23')]=_0x431a48;return _0xaeb319;})[_0x438c('0x16')](respondWithFilteredResult(_0x2609d9,_0x194e2f))['catch'](APIHandleError(_0x2609d9));};