a41d99360c2ab7aec08d8736bcf4632bf983ba7e
[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 _0x7485=['redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','status','offset','undefined','limit','count','set','destroy','then','InboundRoutes','OutboundRoutes','outbound','InternalRoutes','internal','ignore','map','value','includes','type','find','name','UserProfileResource','sendStatus','error','stack','send','index','VoiceExtension','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','pick','filter','where','options','rows','catch','length','includeAll','include','body','startsWith','exten','concat','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','inbound','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','description','mandatoryDisposition','alias','context','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','VoiceExtensionId','isApp','createRouting','findAndCountAll','json','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb'];(function(_0x29712f,_0x32ecae){var _0x484f83=function(_0x4825cb){while(--_0x4825cb){_0x29712f['push'](_0x29712f['shift']());}};_0x484f83(++_0x32ecae);}(_0x7485,0x10c));var _0x5748=function(_0x58c472,_0x53136c){_0x58c472=_0x58c472-0x0;var _0x4da28a=_0x7485[_0x58c472];return _0x4da28a;};'use strict';var _=require('lodash');var Redis=require(_0x5748('0x0'));var qs=require(_0x5748('0x1'));var logger=require('../../config/logger')(_0x5748('0x2'));var config=require(_0x5748('0x3'));var db=require(_0x5748('0x4'))['db'];config[_0x5748('0x5')]=_[_0x5748('0x6')](config['redis'],{'host':_0x5748('0x7'),'port':0x18eb});var socket=require(_0x5748('0x8'))(new Redis(config[_0x5748('0x5')]));require(_0x5748('0x9'))[_0x5748('0xa')](socket);function respondWithStatusCode(_0x6330d7,_0x3f5c48){_0x3f5c48=_0x3f5c48||0xcc;return function(_0x1380d8){if(_0x1380d8){return _0x6330d7['sendStatus'](_0x3f5c48);}return _0x6330d7['status'](_0x3f5c48)['end']();};}function respondWithResult(_0x2aed3a,_0x1b5f59){_0x1b5f59=_0x1b5f59||0xc8;return function(_0x3c08bb){if(_0x3c08bb){return _0x2aed3a[_0x5748('0xb')](_0x1b5f59)['json'](_0x3c08bb);}};}function respondWithFilteredResult(_0xc697bb,_0xa58cd6){return function(_0x2f9f9a){if(_0x2f9f9a){var _0x2a5f73=typeof _0xa58cd6[_0x5748('0xc')]===_0x5748('0xd')&&typeof _0xa58cd6[_0x5748('0xe')]==='undefined';var _0x5c1746=_0x2f9f9a[_0x5748('0xf')];var _0x28feab=_0x2a5f73?0x0:_0xa58cd6[_0x5748('0xc')];var _0x22010d=_0x2a5f73?_0x2f9f9a[_0x5748('0xf')]:_0xa58cd6[_0x5748('0xc')]+_0xa58cd6[_0x5748('0xe')];var _0x58c797;if(_0x22010d>=_0x5c1746){_0x22010d=_0x5c1746;_0x58c797=0xc8;}else{_0x58c797=0xce;}_0xc697bb[_0x5748('0xb')](_0x58c797);return _0xc697bb[_0x5748('0x10')]('Content-Range',_0x28feab+'-'+_0x22010d+'/'+_0x5c1746)['json'](_0x2f9f9a);}return null;};}function removeEntity(_0x5f5758){return function(_0x94e243){if(_0x94e243){return _0x94e243[_0x5748('0x11')]()[_0x5748('0x12')](function(){var _0x5bf5f2=_0x94e243['get']({'plain':!![]});var _0x1f897f=[{'name':_0x5748('0x13'),'value':'inbound','ignore':![]},{'name':_0x5748('0x14'),'value':_0x5748('0x15'),'ignore':![]},{'name':_0x5748('0x16'),'value':_0x5748('0x17'),'ignore':![]}];var _0x2e3986=_(_0x1f897f)['filter'](_0x5748('0x18'))[_0x5748('0x19')](_0x5748('0x1a'))[_0x5748('0x1a')]();if(_[_0x5748('0x1b')](_0x2e3986,_0x5bf5f2[_0x5748('0x1c')])){return;}var _0x1ef40c=_[_0x5748('0x1d')](_0x1f897f,['value',_0x5bf5f2['type']])[_0x5748('0x1e')];return db[_0x5748('0x1f')][_0x5748('0x11')]({'where':{'type':_0x1ef40c,'resourceId':_0x5bf5f2['id']}})[_0x5748('0x12')](function(){return _0x94e243;});})['then'](function(){_0x5f5758['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2f644d){return function(_0x33c7a5){if(!_0x33c7a5){_0x2f644d[_0x5748('0x20')](0x194);}return _0x33c7a5;};}function handleError(_0x585a97,_0x3c826b){_0x3c826b=_0x3c826b||0x1f4;return function(_0x14c52f){logger[_0x5748('0x21')](_0x14c52f[_0x5748('0x22')]);if(_0x14c52f[_0x5748('0x1e')]){delete _0x14c52f[_0x5748('0x1e')];}_0x585a97[_0x5748('0xb')](_0x3c826b)[_0x5748('0x23')](_0x14c52f);};}exports[_0x5748('0x24')]=function(_0x532922,_0x4896e7){var _0x330d11={},_0x2af412={},_0x5a8454={'count':0x0,'rows':[]};var _0xda0fc0=_[_0x5748('0x19')](db[_0x5748('0x25')][_0x5748('0x26')],function(_0x4e715e){return{'name':_0x4e715e[_0x5748('0x27')],'type':_0x4e715e[_0x5748('0x1c')]['key']};});_0x2af412[_0x5748('0x28')]=_[_0x5748('0x19')](_0xda0fc0,'name');_0x2af412[_0x5748('0x29')]=_[_0x5748('0x2a')](_0x532922[_0x5748('0x29')]);_0x2af412[_0x5748('0x2b')]=_[_0x5748('0x2c')](_0x2af412[_0x5748('0x28')],_0x2af412['query']);_0x330d11[_0x5748('0x2d')]=_[_0x5748('0x2c')](_0x2af412[_0x5748('0x28')],qs[_0x5748('0x2e')](_0x532922[_0x5748('0x29')][_0x5748('0x2e')]));_0x330d11[_0x5748('0x2d')]=_0x330d11['attributes']['length']?_0x330d11[_0x5748('0x2d')]:_0x2af412['model'];if(!_0x532922['query'][_0x5748('0x2f')]('nolimit')){_0x330d11[_0x5748('0xe')]=qs[_0x5748('0xe')](_0x532922['query'][_0x5748('0xe')]);_0x330d11[_0x5748('0xc')]=qs[_0x5748('0xc')](_0x532922['query'][_0x5748('0xc')]);}_0x330d11[_0x5748('0x30')]=qs[_0x5748('0x31')](_0x532922[_0x5748('0x29')][_0x5748('0x31')]);_0x330d11['where']=qs[_0x5748('0x2b')](_[_0x5748('0x32')](_0x532922[_0x5748('0x29')],_0x2af412[_0x5748('0x2b')]),_0xda0fc0);if(_0x532922[_0x5748('0x29')][_0x5748('0x33')]){_0x330d11[_0x5748('0x34')]=_['merge'](_0x330d11[_0x5748('0x34')],{'$or':_[_0x5748('0x19')](_0xda0fc0,function(_0x4d2e4a){if(_0x4d2e4a[_0x5748('0x1c')]!=='VIRTUAL'){var _0x353edc={};_0x353edc[_0x4d2e4a[_0x5748('0x1e')]]={'$like':'%'+_0x532922[_0x5748('0x29')][_0x5748('0x33')]+'%'};return _0x353edc;}})});}_0x330d11=_['merge']({},_0x330d11,_0x532922[_0x5748('0x35')]);var _0x519fec={'where':_0x330d11[_0x5748('0x34')]};return db['VoiceExtension'][_0x5748('0xf')](_0x519fec)[_0x5748('0x12')](function(_0x23c726){_0x5a8454[_0x5748('0xf')]=_0x23c726;if(_0x532922[_0x5748('0x29')]['includeAll']){_0x330d11['include']=[{'all':!![]}];}return db['VoiceExtension']['findAll'](_0x330d11);})[_0x5748('0x12')](function(_0x184d42){_0x5a8454[_0x5748('0x36')]=_0x184d42;return _0x5a8454;})[_0x5748('0x12')](respondWithFilteredResult(_0x4896e7,_0x330d11))[_0x5748('0x37')](handleError(_0x4896e7,null));};exports['show']=function(_0x546fc1,_0x571a5d){var _0x107a24={'raw':![],'where':{'id':_0x546fc1['params']['id']}},_0x1a0416={};_0x1a0416[_0x5748('0x28')]=_['keys'](db['VoiceExtension'][_0x5748('0x26')]);_0x1a0416['query']=_[_0x5748('0x2a')](_0x546fc1[_0x5748('0x29')]);_0x1a0416['filters']=_['intersection'](_0x1a0416[_0x5748('0x28')],_0x1a0416[_0x5748('0x29')]);_0x107a24['attributes']=_[_0x5748('0x2c')](_0x1a0416[_0x5748('0x28')],qs[_0x5748('0x2e')](_0x546fc1[_0x5748('0x29')][_0x5748('0x2e')]));_0x107a24[_0x5748('0x2d')]=_0x107a24[_0x5748('0x2d')][_0x5748('0x38')]?_0x107a24[_0x5748('0x2d')]:_0x1a0416['model'];if(_0x546fc1[_0x5748('0x29')][_0x5748('0x39')]){_0x107a24[_0x5748('0x3a')]=[{'all':!![]}];}_0x107a24=_['merge']({},_0x107a24,_0x546fc1[_0x5748('0x35')]);return db[_0x5748('0x25')][_0x5748('0x1d')](_0x107a24)[_0x5748('0x12')](handleEntityNotFound(_0x571a5d,null))[_0x5748('0x12')](respondWithResult(_0x571a5d,null))[_0x5748('0x37')](handleError(_0x571a5d,null));};exports[_0x5748('0x11')]=function(_0x311fe1,_0x5e5d4d){return db[_0x5748('0x25')][_0x5748('0x1d')]({'where':{'id':_0x311fe1['params']['id']}})[_0x5748('0x12')](handleEntityNotFound(_0x5e5d4d,null))[_0x5748('0x12')](removeEntity(_0x5e5d4d,null))[_0x5748('0x37')](handleError(_0x5e5d4d,null));};exports['create']=function(_0x1c5bf2,_0x3eee6a){if(_0x1c5bf2[_0x5748('0x3b')][_0x5748('0x1c')]===_0x5748('0x15')&&!_[_0x5748('0x3c')](_0x1c5bf2[_0x5748('0x3b')][_0x5748('0x3d')],'_')){_0x1c5bf2[_0x5748('0x3b')][_0x5748('0x3d')]='_'[_0x5748('0x3e')](_0x1c5bf2['body'][_0x5748('0x3d')]);}return db[_0x5748('0x25')][_0x5748('0x3f')](_0x1c5bf2[_0x5748('0x3b')],{'raw':![]})[_0x5748('0x12')](function(_0x20f733){var _0x50e8cd=_0x1c5bf2[_0x5748('0x40')][_0x5748('0x41')]({'plain':!![]});if(!_0x50e8cd)throw new Error(_0x5748('0x42'));if(_0x50e8cd[_0x5748('0x43')]===_0x5748('0x40')){var _0x1caa40=_0x20f733['get']({'plain':!![]});var _0x254084=[{'name':_0x5748('0x13'),'value':_0x5748('0x44')},{'name':_0x5748('0x14'),'value':_0x5748('0x15')},{'name':'InternalRoutes','value':_0x5748('0x17')}];var _0x179f10=_['find'](_0x254084,[_0x5748('0x1a'),_0x1caa40['type']])[_0x5748('0x1e')];return db[_0x5748('0x45')]['find']({'where':{'name':_0x179f10,'userProfileId':_0x50e8cd[_0x5748('0x46')]},'raw':!![]})[_0x5748('0x12')](function(_0x57552e){if(_0x57552e&&_0x57552e[_0x5748('0x47')]===0x0){return db['UserProfileResource'][_0x5748('0x3f')]({'name':_0x1caa40['name'],'resourceId':_0x1caa40['id'],'type':_0x57552e[_0x5748('0x1e')],'sectionId':_0x57552e['id']},{})[_0x5748('0x12')](function(){return _0x20f733;});}else{return _0x20f733;}})[_0x5748('0x37')](function(_0x4814da){logger['error'](_0x5748('0x48'),_0x4814da);throw _0x4814da;});}return _0x20f733;})[_0x5748('0x12')](respondWithResult(_0x3eee6a,0xc9))['catch'](handleError(_0x3eee6a,null));};exports[_0x5748('0x49')]=function(_0xde2f36,_0x323afd){if(_0xde2f36[_0x5748('0x3b')]['id']){delete _0xde2f36['body']['id'];}return db[_0x5748('0x25')][_0x5748('0x1d')]({'where':{'id':_0xde2f36[_0x5748('0x4a')]['id']}})[_0x5748('0x12')](handleEntityNotFound(_0x323afd,null))[_0x5748('0x12')](function(_0x31be7f){if(_0x31be7f){return db[_0x5748('0x25')][_0x5748('0x49')](_[_0x5748('0x32')](_0xde2f36['body'],['exten','context',_0x5748('0x4b'),'recordingFormat','cutdigits',_0x5748('0x4c'),_0x5748('0x4d')]),{'where':{'context':_0x31be7f[_0x5748('0x4e')],'exten':_0x31be7f['exten']},'individualHooks':!![]})['then'](function(_0x299f54){return _0x299f54;});}return null;})['then'](respondWithStatusCode(_0x323afd,null))['catch'](handleError(_0x323afd,null));};exports[_0x5748('0x4f')]=function(_0x2aff9f,_0x1de52a){var _0x204fd2=_0x2aff9f[_0x5748('0x4a')]['id'];var _0x1ff56e=_0x2aff9f['body'];var _0x105842=0xc8;var _0x12480e=null;return db['sequelize'][_0x5748('0x50')]({'isolationLevel':db[_0x5748('0x51')][_0x5748('0x52')][_0x5748('0x53')][_0x5748('0x54')]},function(_0x3354d5){return db[_0x5748('0x25')][_0x5748('0x55')]({'where':{'id':_0x204fd2},'transaction':_0x3354d5})['then'](function(_0xa2293){if(_0xa2293){return db[_0x5748('0x25')][_0x5748('0x11')]({'where':{'VoiceExtensionId':_0x204fd2},'transaction':_0x3354d5})['then'](function(){var _0x24a6e4=_[_0x5748('0x19')](_0x1ff56e,function(_0x14a5dc){_0x14a5dc[_0x5748('0x56')]=_0x204fd2;_0x14a5dc[_0x5748('0x57')]=!![];return _0x14a5dc;});return _0xa2293[_0x5748('0x58')](_0x24a6e4);})['then'](function(_0x573932){return db[_0x5748('0x25')]['bulkCreate'](_0x573932,{'transaction':_0x3354d5});});}else{_0x105842=0x194;_0x12480e=[];}});})[_0x5748('0x12')](function(){if(_0x105842!==0x194){return db[_0x5748('0x25')][_0x5748('0x59')]({'where':{'isApp':!![],'VoiceExtensionId':_0x204fd2},'order':'cast(priority\x20as\x20unsigned)'})[_0x5748('0x12')](function(_0x43ed48){_0x12480e=_0x43ed48;});}})[_0x5748('0x37')](function(_0x1e3d29){_0x105842=0x1f4;logger[_0x5748('0x21')](_0x1e3d29[_0x5748('0x22')]);if(_0x1e3d29[_0x5748('0x1e')]){delete _0x1e3d29[_0x5748('0x1e')];}_0x12480e=_0x1e3d29;})['finally'](function(){if(_0x12480e===null){_0x1de52a['sendStatus'](_0x105842);}else{if(_0x105842===0x1f4){_0x1de52a[_0x5748('0xb')](_0x105842)['send'](_0x12480e);}else{_0x1de52a['status'](_0x105842)[_0x5748('0x5a')](_0x12480e);}}});};