3c196cffd89281158739f5821491014e1c580362
[motion2.git] / server / api / voiceExtension / voiceExtension.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 _0x536f=['exten','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','pick','context','description','recordingFormat','cutdigits','mandatoryDisposition','alias','addApplications','findOne','sequelize','VoiceExtensionId','createRouting','LOG\x20~\x20.then\x20~\x20routing','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','lodash','../../config/environment','../../mysqldb','redis','defaults','localhost','./voiceExtension.socket','register','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','then','get','InboundRoutes','inbound','OutboundRoutes','outbound','InternalRoutes','internal','filter','ignore','value','includes','type','find','name','UserProfileResource','destroy','error','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','nolimit','order','sort','where','VIRTUAL','merge','options','VoiceExtension','include','findAll','rows','catch','params','length','includeAll','create','body'];(function(_0x5eb22e,_0x27cbac){var _0x27fed5=function(_0x565467){while(--_0x565467){_0x5eb22e['push'](_0x5eb22e['shift']());}};_0x27fed5(++_0x27cbac);}(_0x536f,0x70));var _0xf536=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x536f[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xf536('0x0'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')('api');var config=require(_0xf536('0x1'));var db=require(_0xf536('0x2'))['db'];config[_0xf536('0x3')]=_[_0xf536('0x4')](config['redis'],{'host':_0xf536('0x5'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf536('0x3')]));require(_0xf536('0x6'))[_0xf536('0x7')](socket);function respondWithStatusCode(_0x486ee3,_0x5952b7){_0x5952b7=_0x5952b7||0xcc;return function(_0x3b5191){if(_0x3b5191){return _0x486ee3[_0xf536('0x8')](_0x5952b7);}return _0x486ee3[_0xf536('0x9')](_0x5952b7)[_0xf536('0xa')]();};}function respondWithResult(_0x4f2eaf,_0x4e7088){_0x4e7088=_0x4e7088||0xc8;return function(_0xbfbdfc){if(_0xbfbdfc){return _0x4f2eaf[_0xf536('0x9')](_0x4e7088)['json'](_0xbfbdfc);}};}function respondWithFilteredResult(_0x4868bd,_0x3c811b){return function(_0x3ac49c){if(_0x3ac49c){var _0x16c1ae=typeof _0x3c811b[_0xf536('0xb')]===_0xf536('0xc')&&typeof _0x3c811b['limit']===_0xf536('0xc');var _0x539d44=_0x3ac49c[_0xf536('0xd')];var _0xd76d38=_0x16c1ae?0x0:_0x3c811b[_0xf536('0xb')];var _0x3b5df6=_0x16c1ae?_0x3ac49c[_0xf536('0xd')]:_0x3c811b[_0xf536('0xb')]+_0x3c811b[_0xf536('0xe')];var _0x381531;if(_0x3b5df6>=_0x539d44){_0x3b5df6=_0x539d44;_0x381531=0xc8;}else{_0x381531=0xce;}_0x4868bd[_0xf536('0x9')](_0x381531);return _0x4868bd[_0xf536('0xf')](_0xf536('0x10'),_0xd76d38+'-'+_0x3b5df6+'/'+_0x539d44)[_0xf536('0x11')](_0x3ac49c);}return null;};}function removeEntity(_0x5cf70d){return function(_0x2fbd23){if(_0x2fbd23){return _0x2fbd23['destroy']()[_0xf536('0x12')](function(){var _0x4d5cb5=_0x2fbd23[_0xf536('0x13')]({'plain':!![]});var _0x18f984=[{'name':_0xf536('0x14'),'value':_0xf536('0x15'),'ignore':![]},{'name':_0xf536('0x16'),'value':_0xf536('0x17'),'ignore':![]},{'name':_0xf536('0x18'),'value':_0xf536('0x19'),'ignore':![]}];var _0x589cb7=_(_0x18f984)[_0xf536('0x1a')](_0xf536('0x1b'))['map']('value')[_0xf536('0x1c')]();if(_[_0xf536('0x1d')](_0x589cb7,_0x4d5cb5[_0xf536('0x1e')])){return;}var _0x2b6698=_[_0xf536('0x1f')](_0x18f984,[_0xf536('0x1c'),_0x4d5cb5[_0xf536('0x1e')]])[_0xf536('0x20')];return db[_0xf536('0x21')][_0xf536('0x22')]({'where':{'type':_0x2b6698,'resourceId':_0x4d5cb5['id']}})['then'](function(){return _0x2fbd23;});})[_0xf536('0x12')](function(){_0x5cf70d[_0xf536('0x9')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1df79c){return function(_0xddf70e){if(!_0xddf70e){_0x1df79c[_0xf536('0x8')](0x194);}return _0xddf70e;};}function handleError(_0x252cae,_0xd5098){_0xd5098=_0xd5098||0x1f4;return function(_0x378f48){logger[_0xf536('0x23')](_0x378f48['stack']);if(_0x378f48[_0xf536('0x20')]){delete _0x378f48[_0xf536('0x20')];}_0x252cae[_0xf536('0x9')](_0xd5098)[_0xf536('0x24')](_0x378f48);};}exports[_0xf536('0x25')]=function(_0x5831a1,_0x373af5){var _0x21661b={},_0x1a8ac6={},_0x1503ad={'count':0x0,'rows':[]};var _0x5585b3=_[_0xf536('0x26')](db['VoiceExtension'][_0xf536('0x27')],function(_0x211030){return{'name':_0x211030[_0xf536('0x28')],'type':_0x211030[_0xf536('0x1e')][_0xf536('0x29')]};});_0x1a8ac6[_0xf536('0x2a')]=_[_0xf536('0x26')](_0x5585b3,_0xf536('0x20'));_0x1a8ac6[_0xf536('0x2b')]=_[_0xf536('0x2c')](_0x5831a1[_0xf536('0x2b')]);_0x1a8ac6[_0xf536('0x2d')]=_['intersection'](_0x1a8ac6[_0xf536('0x2a')],_0x1a8ac6[_0xf536('0x2b')]);_0x21661b['attributes']=_[_0xf536('0x2e')](_0x1a8ac6[_0xf536('0x2a')],qs['fields'](_0x5831a1[_0xf536('0x2b')][_0xf536('0x2f')]));_0x21661b[_0xf536('0x30')]=_0x21661b[_0xf536('0x30')]['length']?_0x21661b[_0xf536('0x30')]:_0x1a8ac6[_0xf536('0x2a')];if(!_0x5831a1[_0xf536('0x2b')]['hasOwnProperty'](_0xf536('0x31'))){_0x21661b[_0xf536('0xe')]=qs[_0xf536('0xe')](_0x5831a1[_0xf536('0x2b')][_0xf536('0xe')]);_0x21661b['offset']=qs[_0xf536('0xb')](_0x5831a1['query'][_0xf536('0xb')]);}_0x21661b[_0xf536('0x32')]=qs[_0xf536('0x33')](_0x5831a1[_0xf536('0x2b')][_0xf536('0x33')]);_0x21661b[_0xf536('0x34')]=qs['filters'](_['pick'](_0x5831a1[_0xf536('0x2b')],_0x1a8ac6['filters']),_0x5585b3);if(_0x5831a1[_0xf536('0x2b')][_0xf536('0x1a')]){_0x21661b['where']=_['merge'](_0x21661b[_0xf536('0x34')],{'$or':_[_0xf536('0x26')](_0x5585b3,function(_0x164f3b){if(_0x164f3b['type']!==_0xf536('0x35')){var _0x433cc2={};_0x433cc2[_0x164f3b[_0xf536('0x20')]]={'$like':'%'+_0x5831a1[_0xf536('0x2b')][_0xf536('0x1a')]+'%'};return _0x433cc2;}})});}_0x21661b=_[_0xf536('0x36')]({},_0x21661b,_0x5831a1[_0xf536('0x37')]);var _0x26b7c3={'where':_0x21661b[_0xf536('0x34')]};return db[_0xf536('0x38')][_0xf536('0xd')](_0x26b7c3)[_0xf536('0x12')](function(_0x66e69d){_0x1503ad[_0xf536('0xd')]=_0x66e69d;if(_0x5831a1[_0xf536('0x2b')]['includeAll']){_0x21661b[_0xf536('0x39')]=[{'all':!![]}];}return db[_0xf536('0x38')][_0xf536('0x3a')](_0x21661b);})['then'](function(_0x1c7b4b){_0x1503ad[_0xf536('0x3b')]=_0x1c7b4b;return _0x1503ad;})[_0xf536('0x12')](respondWithFilteredResult(_0x373af5,_0x21661b))[_0xf536('0x3c')](handleError(_0x373af5,null));};exports['show']=function(_0x3dfde0,_0x37ea2b){var _0x453ea4={'raw':![],'where':{'id':_0x3dfde0[_0xf536('0x3d')]['id']}},_0x13ad42={};_0x13ad42['model']=_[_0xf536('0x2c')](db[_0xf536('0x38')][_0xf536('0x27')]);_0x13ad42['query']=_[_0xf536('0x2c')](_0x3dfde0[_0xf536('0x2b')]);_0x13ad42[_0xf536('0x2d')]=_[_0xf536('0x2e')](_0x13ad42['model'],_0x13ad42[_0xf536('0x2b')]);_0x453ea4[_0xf536('0x30')]=_[_0xf536('0x2e')](_0x13ad42[_0xf536('0x2a')],qs['fields'](_0x3dfde0[_0xf536('0x2b')]['fields']));_0x453ea4['attributes']=_0x453ea4[_0xf536('0x30')][_0xf536('0x3e')]?_0x453ea4[_0xf536('0x30')]:_0x13ad42['model'];if(_0x3dfde0[_0xf536('0x2b')][_0xf536('0x3f')]){_0x453ea4[_0xf536('0x39')]=[{'all':!![]}];}_0x453ea4=_[_0xf536('0x36')]({},_0x453ea4,_0x3dfde0['options']);return db[_0xf536('0x38')][_0xf536('0x1f')](_0x453ea4)[_0xf536('0x12')](handleEntityNotFound(_0x37ea2b,null))[_0xf536('0x12')](respondWithResult(_0x37ea2b,null))[_0xf536('0x3c')](handleError(_0x37ea2b,null));};exports['destroy']=function(_0x4a8ab7,_0x4f9d4b){return db[_0xf536('0x38')][_0xf536('0x1f')]({'where':{'id':_0x4a8ab7['params']['id']}})[_0xf536('0x12')](handleEntityNotFound(_0x4f9d4b,null))[_0xf536('0x12')](removeEntity(_0x4f9d4b,null))[_0xf536('0x3c')](handleError(_0x4f9d4b,null));};exports[_0xf536('0x40')]=function(_0x4f1567,_0x4d3aab){if(_0x4f1567[_0xf536('0x41')]['type']===_0xf536('0x17')&&!_['startsWith'](_0x4f1567[_0xf536('0x41')][_0xf536('0x42')],'_')){_0x4f1567[_0xf536('0x41')][_0xf536('0x42')]='_'['concat'](_0x4f1567[_0xf536('0x41')][_0xf536('0x42')]);}return db[_0xf536('0x38')][_0xf536('0x40')](_0x4f1567['body'],{'raw':![]})[_0xf536('0x12')](function(_0x4fddad){var _0x4d00bd=_0x4f1567[_0xf536('0x43')][_0xf536('0x13')]({'plain':!![]});if(!_0x4d00bd)throw new Error(_0xf536('0x44'));if(_0x4d00bd['role']===_0xf536('0x43')){var _0x42b62d=_0x4fddad[_0xf536('0x13')]({'plain':!![]});var _0xac0945=[{'name':'InboundRoutes','value':'inbound'},{'name':_0xf536('0x16'),'value':_0xf536('0x17')},{'name':_0xf536('0x18'),'value':'internal'}];var _0x57695e=_[_0xf536('0x1f')](_0xac0945,[_0xf536('0x1c'),_0x42b62d[_0xf536('0x1e')]])[_0xf536('0x20')];return db[_0xf536('0x45')]['find']({'where':{'name':_0x57695e,'userProfileId':_0x4d00bd[_0xf536('0x46')]},'raw':!![]})['then'](function(_0x342112){if(_0x342112&&_0x342112['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x42b62d['name'],'resourceId':_0x42b62d['id'],'type':_0x342112[_0xf536('0x20')],'sectionId':_0x342112['id']},{})[_0xf536('0x12')](function(){return _0x4fddad;});}else{return _0x4fddad;}})[_0xf536('0x3c')](function(_0x47b1fd){logger[_0xf536('0x23')](_0xf536('0x47'),_0x47b1fd);throw _0x47b1fd;});}return _0x4fddad;})[_0xf536('0x12')](respondWithResult(_0x4d3aab,0xc9))['catch'](handleError(_0x4d3aab,null));};exports[_0xf536('0x48')]=function(_0x52da65,_0x36c685){if(_0x52da65['body']['id']){delete _0x52da65['body']['id'];}return db[_0xf536('0x38')][_0xf536('0x1f')]({'where':{'id':_0x52da65['params']['id']}})[_0xf536('0x12')](handleEntityNotFound(_0x36c685,null))[_0xf536('0x12')](function(_0x43b1c6){if(_0x43b1c6){return db[_0xf536('0x38')][_0xf536('0x48')](_[_0xf536('0x49')](_0x52da65['body'],['exten',_0xf536('0x4a'),_0xf536('0x4b'),_0xf536('0x4c'),_0xf536('0x4d'),_0xf536('0x4e'),_0xf536('0x4f')]),{'where':{'context':_0x43b1c6['context'],'exten':_0x43b1c6[_0xf536('0x42')]},'individualHooks':!![]})[_0xf536('0x12')](function(_0x3ffdd7){return _0x3ffdd7;});}return null;})['then'](respondWithStatusCode(_0x36c685,null))[_0xf536('0x3c')](handleError(_0x36c685,null));};exports[_0xf536('0x50')]=function(_0x1ba4dc,_0xdab117){return db[_0xf536('0x38')][_0xf536('0x51')]({'where':{'id':_0x1ba4dc['params']['id']}})[_0xf536('0x12')](function(_0x2b9359){if(_0x2b9359){return db[_0xf536('0x52')]['transaction'](function(_0x78d028){return db[_0xf536('0x38')][_0xf536('0x22')]({'where':{'VoiceExtensionId':_0x1ba4dc[_0xf536('0x3d')]['id']},'transaction':_0x78d028})[_0xf536('0x12')](function(){var _0x48d5ff=_['map'](_0x1ba4dc[_0xf536('0x41')],function(_0x336978){_0x336978[_0xf536('0x53')]=_0x1ba4dc[_0xf536('0x3d')]['id'];_0x336978['isApp']=!![];return _0x336978;});return _0x2b9359[_0xf536('0x54')](_0x48d5ff);})['then'](function(_0x24208a){console['log'](_0xf536('0x55'),_0x24208a);return db[_0xf536('0x38')][_0xf536('0x56')](_0x24208a,{'transaction':_0x78d028});});})[_0xf536('0x12')](function(){return db['VoiceExtension'][_0xf536('0x57')]({'where':{'isApp':!![],'VoiceExtensionId':_0x1ba4dc[_0xf536('0x3d')]['id']},'order':_0xf536('0x58')});});}})[_0xf536('0x12')](respondWithResult(_0xdab117,null))['catch'](handleError(_0xdab117,null));};