0135d2abdd9583fae3ca4b092ca7e42078788d5a
[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 _0x8c7a=['push','sequelize','literal','FIELD(id,','forEach','*pause','Pause','where','merge','user','userProfileId','Agents','extraQueryConditions','assign','UserProfile','getResources','findAndCountAll','filterAgentAttributes','sortAgentsByStatus','split','pick','catch','resolve','toLowerCase','startCase','rawAttributes','fieldName','name','voice','outbound','dialActive','dialMethod','Queues','filter','initializeQueues','util','../../components/realtime/agents','../../components/realtime/queues','../../components/parsers/qs','../../mysqldb','../../errors/api','APIBadRequestError','offset','undefined','limit','count','status','set','Content-Range','json','getChannels','query','pauseTypeFilter','pause','channel','isValidChannel','format','Channel\x20parameter\x20%s\x20is\x20invalid','sort','includes','globalStatus','getUpdatedSortOptions','fields','order','getAgentIdsByQueues','then','getRealtimeAgents','rows','getSortedAgentsIdsByStatus','getAgentIdsByStatus','length','map','User','type','key','role','agent','getOptions'];(function(_0x59befa,_0x4af99b){var _0x1dd63d=function(_0x4c1df4){while(--_0x4c1df4){_0x59befa['push'](_0x59befa['shift']());}};_0x1dd63d(++_0x4af99b);}(_0x8c7a,0x1a9));var _0xa8c7=function(_0x56d854,_0x6a702f){_0x56d854=_0x56d854-0x0;var _0x4101d9=_0x8c7a[_0x56d854];return _0x4101d9;};'use strict';var _=require('lodash');var util=require(_0xa8c7('0x0'));var rta=require(_0xa8c7('0x1'));var rtq=require(_0xa8c7('0x2'));var qs=require(_0xa8c7('0x3'));var utils=require('../../config/utils');var db=require(_0xa8c7('0x4'))['db'];var APIBadRequestError=require(_0xa8c7('0x5'))[_0xa8c7('0x6')];var APIHandleError=require(_0xa8c7('0x5'))['handleError'];function respondWithFilteredResult(_0x4cd156,_0xe3581d){return function(_0x1632a9){if(_0x1632a9){var _0x4afe76=typeof _0xe3581d[_0xa8c7('0x7')]===_0xa8c7('0x8')&&typeof _0xe3581d[_0xa8c7('0x9')]===_0xa8c7('0x8');var _0x4d3227=_0x1632a9[_0xa8c7('0xa')];var _0x2e27a4=_0x4afe76?0x0:_0xe3581d[_0xa8c7('0x7')];var _0x2cb29a=_0x4afe76?_0x1632a9[_0xa8c7('0xa')]:_0xe3581d[_0xa8c7('0x7')]+_0xe3581d['limit'];var _0x11688b;if(_0x2cb29a>=_0x4d3227){_0x2cb29a=_0x4d3227;_0x11688b=0xc8;}else{_0x11688b=0xce;}_0x4cd156[_0xa8c7('0xb')](_0x11688b);return _0x4cd156[_0xa8c7('0xc')](_0xa8c7('0xd'),_0x2e27a4+'-'+_0x2cb29a+'/'+_0x4d3227)[_0xa8c7('0xe')](_0x1632a9);}return null;};}exports['getAgents']=function(_0x4d36bb,_0x282e3b){var _0x1a4dc4={'count':0x0,'rows':[]};var _0x41f84f={};var _0x3ceda3;var _0x3d5086=utils[_0xa8c7('0xf')]();var _0x2732f7;var _0x597028;var _0xb1db68=_0x4d36bb['query']['globalQueueFilter'];var _0x179e9a=_0x4d36bb[_0xa8c7('0x10')]['globalStatusFilter'];var _0x2fbdbb=_0x4d36bb[_0xa8c7('0x10')][_0xa8c7('0x11')];var _0x1ad244=_0x179e9a===_0xa8c7('0x12')||_0x179e9a==='*pause'?!![]:![];var _0x2c1c09=[];var _0x95a524;var _0x55a2c2;Promise['resolve']()['then'](function(){if(_0x4d36bb[_0xa8c7('0x10')][_0xa8c7('0x13')]){if(!utils[_0xa8c7('0x14')](_0x4d36bb[_0xa8c7('0x10')]['channel'])){throw new APIBadRequestError(util[_0xa8c7('0x15')](_0xa8c7('0x16'),_0x4d36bb[_0xa8c7('0x10')]['channel']));}_0x3ceda3=_0x4d36bb['query']['channel']['toLowerCase']();}if(!_0x4d36bb[_0xa8c7('0x10')]['sort']||!_0x4d36bb[_0xa8c7('0x10')][_0xa8c7('0x17')][_0xa8c7('0x18')](_0xa8c7('0x19'))){_0x4d36bb['query']['sort']=rta['validateSortParameter'](_0x4d36bb[_0xa8c7('0x10')][_0xa8c7('0x17')]);return;}var _0x1f702=rta[_0xa8c7('0x1a')](_0x4d36bb[_0xa8c7('0x10')]['sort']);_0x4d36bb[_0xa8c7('0x10')][_0xa8c7('0x17')]=_0x1f702[_0xa8c7('0x1b')]['join'](',');_0x95a524=_0x1f702[_0xa8c7('0x1c')];})['then'](function(){if(!_0xb1db68){return[];}return rta[_0xa8c7('0x1d')](_0xb1db68,_0x3ceda3);})[_0xa8c7('0x1e')](function(_0x532953){_0x2c1c09=_0x532953;return rta[_0xa8c7('0x1f')]();})[_0xa8c7('0x1e')](function(_0x489620){_0x597028=_0x489620[_0xa8c7('0x20')];if((!_0x179e9a||_0x1ad244)&&!_0x95a524){return _0x2c1c09;}if(_0x95a524&&!_0x179e9a){return rta[_0xa8c7('0x21')](_0x597028,_0x2c1c09,_0x95a524);}else{return rta[_0xa8c7('0x22')](_0x597028,_0x2c1c09,_0x179e9a);}})['then'](function(_0x1f0972){_0x2c1c09=_0x1f0972;var _0x52f347=![];if(_0x2c1c09[_0xa8c7('0x23')]===0x0){if(_0xb1db68||_0x179e9a){_0x52f347=!![];}if(_0x1ad244){_0x52f347=![];}}if(_0x52f347){return _0x1a4dc4;}var _0xa74805=_[_0xa8c7('0x24')](db[_0xa8c7('0x25')]['rawAttributes'],function(_0x133315){return{'name':_0x133315['fieldName'],'type':_0x133315[_0xa8c7('0x26')][_0xa8c7('0x27')]};});_0x4d36bb[_0xa8c7('0x10')][_0xa8c7('0x28')]=_0xa8c7('0x29');_0x4d36bb[_0xa8c7('0x10')]['online']=!![];_0x41f84f=qs[_0xa8c7('0x2a')](_0xa74805,_0x4d36bb);_0x41f84f['raw']=!![];var _0x512dd1=[];if(_0x2c1c09[_0xa8c7('0x23')]>0x0){_0x512dd1[_0xa8c7('0x2b')]({'id':{'$in':_0x2c1c09}});if(_0x95a524&&!_0x179e9a){_0x55a2c2=[db[_0xa8c7('0x2c')][_0xa8c7('0x2d')](_0xa8c7('0x2e')+_0x2c1c09+')')];_0x41f84f[_0xa8c7('0x1c')]=_0x55a2c2;}}if(_0x1ad244){_0x3d5086[_0xa8c7('0x2f')](function(_0x40a3c6){var _0x35d111=!![];if(_0x179e9a===_0xa8c7('0x30')&&_0x3ceda3!==_0x40a3c6){_0x35d111=![];}_0x512dd1[_0xa8c7('0x2b')]({[_0x40a3c6+_0xa8c7('0x31')]:_0x35d111});});if(_0x2fbdbb){_0x512dd1[_0xa8c7('0x2b')]({'pauseType':_0x2fbdbb});}}else if(_0x179e9a){_0x3d5086[_0xa8c7('0x2f')](function(_0x11258d){_0x512dd1['push']({[_0x11258d+_0xa8c7('0x31')]:![]});});}_0x41f84f[_0xa8c7('0x32')]=_[_0xa8c7('0x33')](_0x41f84f[_0xa8c7('0x32')],{'$and':_0x512dd1});if(_0x4d36bb[_0xa8c7('0x34')][_0xa8c7('0x28')]===_0xa8c7('0x34')){var _0x5d2d34={'params':{'id':_0x4d36bb[_0xa8c7('0x34')][_0xa8c7('0x35')]},'query':{'section':_0xa8c7('0x36'),'role':_0xa8c7('0x29'),'online':!![],'raw':!![],'ids':_0x2c1c09,'customSorting':_0x55a2c2}};if(_0x1ad244){_0x5d2d34[_0xa8c7('0x10')][_0xa8c7('0x37')]=_0x512dd1;}_0x5d2d34[_0xa8c7('0x10')]=Object[_0xa8c7('0x38')](_0x5d2d34[_0xa8c7('0x10')],_0x4d36bb['query']);delete _0x5d2d34[_0xa8c7('0x10')]['id'];return db[_0xa8c7('0x39')][_0xa8c7('0x3a')](_0x5d2d34);}return db[_0xa8c7('0x25')][_0xa8c7('0x3b')](_0x41f84f);})[_0xa8c7('0x1e')](function(_0x4aa14f){_0x1a4dc4[_0xa8c7('0xa')]=_0x4aa14f[_0xa8c7('0xa')];_0x2732f7=_0x4aa14f[_0xa8c7('0x20')];return _0x2732f7['map'](function(_0x472e28){var _0x59dd46=_['find'](_0x597028,['id',_0x472e28['id']]);if(_0x59dd46){var _0x14cbfe=rta[_0xa8c7('0x3c')](_0x59dd46);_['merge'](_0x472e28,_0x14cbfe);}_0x472e28['globalStatus']=rta['getAgentStatus'](_0x472e28);if(_0x472e28[_0xa8c7('0x19')][_0xa8c7('0x18')]('pause')){_0x3d5086[_0xa8c7('0x2f')](function(_0x4a9a52){if(_0x472e28[_0x4a9a52+_0xa8c7('0x31')]){_0x472e28[_0x4a9a52+'Status']=_0xa8c7('0x12');}});}return _0x472e28;});})['then'](function(_0x9e866b){if(!_0x95a524||_0x55a2c2){return _0x9e866b;}return rta[_0xa8c7('0x3d')](_0x9e866b,_0x95a524);})[_0xa8c7('0x1e')](function(_0x2fe6a0){var _0x2fe935=null;if(_0x4d36bb[_0xa8c7('0x10')][_0xa8c7('0x1b')]){var _0x5376c5=_0x4d36bb[_0xa8c7('0x10')]['fields'][_0xa8c7('0x3e')](',');_0x2fe935=_0x2fe6a0['map'](function(_0x14857f){return _[_0xa8c7('0x3f')](_0x14857f,_0x5376c5);});}_0x1a4dc4[_0xa8c7('0x20')]=_0x2fe935||_0x2fe6a0;return _0x1a4dc4;})['then'](respondWithFilteredResult(_0x282e3b,_0x41f84f))[_0xa8c7('0x40')](APIHandleError(_0x282e3b));};exports['getQueues']=function(_0xd5bce7,_0x2a152e){var _0x28e3f1={'count':0x0,'rows':[]};var _0x23baa4={};var _0x4903a9;var _0xdef494;var _0x26ca97;Promise[_0xa8c7('0x41')]()[_0xa8c7('0x1e')](function(){if(_0xd5bce7[_0xa8c7('0x10')][_0xa8c7('0x13')]){if(!utils['isValidChannel'](_0xd5bce7[_0xa8c7('0x10')][_0xa8c7('0x13')])){throw new APIBadRequestError(util[_0xa8c7('0x15')](_0xa8c7('0x16'),_0xd5bce7[_0xa8c7('0x10')]['channel']));}_0x4903a9=_0xd5bce7[_0xa8c7('0x10')][_0xa8c7('0x13')][_0xa8c7('0x42')]();}var _0x584f43=_[_0xa8c7('0x43')](_0x4903a9)+'Queue';var _0x5a6a28=_[_0xa8c7('0x24')](db[_0x584f43][_0xa8c7('0x44')],function(_0xd70f5a){return{'name':_0xd70f5a[_0xa8c7('0x45')],'type':_0xd70f5a['type']['key']};});if(!_0xd5bce7['query'][_0xa8c7('0x1b')]){var _0x49b2d5=['id',_0xa8c7('0x46')];if(_0x4903a9===_0xa8c7('0x47')){_0x49b2d5[_0xa8c7('0x2b')]('type');if(_0xd5bce7[_0xa8c7('0x10')][_0xa8c7('0x26')]===_0xa8c7('0x48')){_0x49b2d5['push']([_0xa8c7('0x49'),_0xa8c7('0x4a')]);}}_0xd5bce7[_0xa8c7('0x10')][_0xa8c7('0x1b')]=_0x49b2d5['join'](',');}_0x23baa4=qs[_0xa8c7('0x2a')](_0x5a6a28,_0xd5bce7);if(_0xd5bce7[_0xa8c7('0x34')][_0xa8c7('0x28')]===_0xa8c7('0x34')){var _0x2db6f3={'params':{'id':_0xd5bce7[_0xa8c7('0x34')][_0xa8c7('0x35')]},'query':{'section':_0x4903a9==='voice'&&_0xd5bce7['query'][_0xa8c7('0x26')]===_0xa8c7('0x48')?'QueueCampaigns':_[_0xa8c7('0x43')](_0x4903a9)+_0xa8c7('0x4b'),'type':_0xd5bce7[_0xa8c7('0x10')][_0xa8c7('0x26')],'nolimit':!![],'sort':_0xa8c7('0x46'),'filter':_0xd5bce7[_0xa8c7('0x10')][_0xa8c7('0x4c')]}};return db[_0xa8c7('0x39')][_0xa8c7('0x3a')](_0x2db6f3);}return db[_0x584f43]['findAndCountAll'](_0x23baa4);})[_0xa8c7('0x1e')](function(_0x23d2d8){_0x28e3f1[_0xa8c7('0xa')]=_0x23d2d8[_0xa8c7('0xa')];_0xdef494=_0x23d2d8[_0xa8c7('0x20')];return rtq['getRealtimeQueues'](_0xd5bce7,_0x4903a9);})[_0xa8c7('0x1e')](function(_0x3765b3){_0x26ca97=_0x3765b3['rows'];return rtq[_0xa8c7('0x4d')](_0xdef494,_0x26ca97,_0x4903a9,_0xd5bce7[_0xa8c7('0x10')][_0xa8c7('0x26')]);})[_0xa8c7('0x1e')](function(_0x50f74c){_0x28e3f1[_0xa8c7('0x20')]=_0x50f74c;return _0x28e3f1;})[_0xa8c7('0x1e')](respondWithFilteredResult(_0x2a152e,_0x23baa4))[_0xa8c7('0x40')](APIHandleError(_0x2a152e));};