59ce991caab475702adeeab11687d4400aa9d7c8
[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 _0xa92f=['recordingFormat','cutdigits','mandatoryDisposition','alias','addApplications','sequelize','ISOLATION_LEVELS','READ_COMMITTED','VoiceExtensionId','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','finally','lodash','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','sendStatus','status','end','json','offset','undefined','count','limit','set','destroy','then','get','InboundRoutes','inbound','OutboundRoutes','outbound','value','includes','find','type','name','UserProfileResource','stack','send','index','VoiceExtension','rawAttributes','fieldName','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','params','create','body','startsWith','exten','concat','user','role','InternalRoutes','internal','userProfileId','autoAssociation','error','update','context','description'];(function(_0x41c4a6,_0xae9564){var _0x14d706=function(_0x229c97){while(--_0x229c97){_0x41c4a6['push'](_0x41c4a6['shift']());}};_0x14d706(++_0xae9564);}(_0xa92f,0x68));var _0xfa92=function(_0x38e533,_0x462860){_0x38e533=_0x38e533-0x0;var _0x34df2f=_0xa92f[_0x38e533];return _0x34df2f;};'use strict';var _=require(_0xfa92('0x0'));var Redis=require('ioredis');var qs=require(_0xfa92('0x1'));var logger=require(_0xfa92('0x2'))(_0xfa92('0x3'));var config=require('../../config/environment');var db=require(_0xfa92('0x4'))['db'];config[_0xfa92('0x5')]=_[_0xfa92('0x6')](config[_0xfa92('0x5')],{'host':_0xfa92('0x7'),'port':0x18eb});var socket=require(_0xfa92('0x8'))(new Redis(config[_0xfa92('0x5')]));require(_0xfa92('0x9'))['register'](socket);function respondWithStatusCode(_0x17af73,_0x28eec6){_0x28eec6=_0x28eec6||0xcc;return function(_0x181662){if(_0x181662){return _0x17af73[_0xfa92('0xa')](_0x28eec6);}return _0x17af73[_0xfa92('0xb')](_0x28eec6)[_0xfa92('0xc')]();};}function respondWithResult(_0x4d0f10,_0x2e5ffd){_0x2e5ffd=_0x2e5ffd||0xc8;return function(_0x388ffc){if(_0x388ffc){return _0x4d0f10[_0xfa92('0xb')](_0x2e5ffd)[_0xfa92('0xd')](_0x388ffc);}};}function respondWithFilteredResult(_0x5ecc8e,_0x73598f){return function(_0x543a14){if(_0x543a14){var _0x2703c4=typeof _0x73598f[_0xfa92('0xe')]===_0xfa92('0xf')&&typeof _0x73598f['limit']===_0xfa92('0xf');var _0x383171=_0x543a14[_0xfa92('0x10')];var _0x27578b=_0x2703c4?0x0:_0x73598f['offset'];var _0x4a71a2=_0x2703c4?_0x543a14[_0xfa92('0x10')]:_0x73598f[_0xfa92('0xe')]+_0x73598f[_0xfa92('0x11')];var _0x20016c;if(_0x4a71a2>=_0x383171){_0x4a71a2=_0x383171;_0x20016c=0xc8;}else{_0x20016c=0xce;}_0x5ecc8e[_0xfa92('0xb')](_0x20016c);return _0x5ecc8e[_0xfa92('0x12')]('Content-Range',_0x27578b+'-'+_0x4a71a2+'/'+_0x383171)[_0xfa92('0xd')](_0x543a14);}return null;};}function removeEntity(_0x348ae8){return function(_0x1d7dd8){if(_0x1d7dd8){return _0x1d7dd8[_0xfa92('0x13')]()[_0xfa92('0x14')](function(){var _0x26a3d1=_0x1d7dd8[_0xfa92('0x15')]({'plain':!![]});var _0x44f6b8=[{'name':_0xfa92('0x16'),'value':_0xfa92('0x17'),'ignore':![]},{'name':_0xfa92('0x18'),'value':_0xfa92('0x19'),'ignore':![]},{'name':'InternalRoutes','value':'internal','ignore':![]}];var _0x5c3215=_(_0x44f6b8)['filter']('ignore')['map'](_0xfa92('0x1a'))[_0xfa92('0x1a')]();if(_[_0xfa92('0x1b')](_0x5c3215,_0x26a3d1['type'])){return;}var _0x577f07=_[_0xfa92('0x1c')](_0x44f6b8,[_0xfa92('0x1a'),_0x26a3d1[_0xfa92('0x1d')]])[_0xfa92('0x1e')];return db[_0xfa92('0x1f')][_0xfa92('0x13')]({'where':{'type':_0x577f07,'resourceId':_0x26a3d1['id']}})[_0xfa92('0x14')](function(){return _0x1d7dd8;});})[_0xfa92('0x14')](function(){_0x348ae8[_0xfa92('0xb')](0xcc)[_0xfa92('0xc')]();});}};}function handleEntityNotFound(_0x3b9e0a){return function(_0x41c24d){if(!_0x41c24d){_0x3b9e0a[_0xfa92('0xa')](0x194);}return _0x41c24d;};}function handleError(_0x24192c,_0x357af7){_0x357af7=_0x357af7||0x1f4;return function(_0xfd4cd){logger['error'](_0xfd4cd[_0xfa92('0x20')]);if(_0xfd4cd[_0xfa92('0x1e')]){delete _0xfd4cd[_0xfa92('0x1e')];}_0x24192c[_0xfa92('0xb')](_0x357af7)[_0xfa92('0x21')](_0xfd4cd);};}exports[_0xfa92('0x22')]=function(_0x5cf22b,_0x2343cb){var _0x9dc577={},_0xd3ed4f={},_0x271969={'count':0x0,'rows':[]};var _0x40a0af=_['map'](db[_0xfa92('0x23')][_0xfa92('0x24')],function(_0x487c9d){return{'name':_0x487c9d[_0xfa92('0x25')],'type':_0x487c9d[_0xfa92('0x1d')]['key']};});_0xd3ed4f[_0xfa92('0x26')]=_[_0xfa92('0x27')](_0x40a0af,_0xfa92('0x1e'));_0xd3ed4f[_0xfa92('0x28')]=_[_0xfa92('0x29')](_0x5cf22b[_0xfa92('0x28')]);_0xd3ed4f[_0xfa92('0x2a')]=_[_0xfa92('0x2b')](_0xd3ed4f[_0xfa92('0x26')],_0xd3ed4f[_0xfa92('0x28')]);_0x9dc577[_0xfa92('0x2c')]=_[_0xfa92('0x2b')](_0xd3ed4f[_0xfa92('0x26')],qs[_0xfa92('0x2d')](_0x5cf22b[_0xfa92('0x28')][_0xfa92('0x2d')]));_0x9dc577[_0xfa92('0x2c')]=_0x9dc577[_0xfa92('0x2c')][_0xfa92('0x2e')]?_0x9dc577[_0xfa92('0x2c')]:_0xd3ed4f[_0xfa92('0x26')];if(!_0x5cf22b[_0xfa92('0x28')][_0xfa92('0x2f')](_0xfa92('0x30'))){_0x9dc577['limit']=qs[_0xfa92('0x11')](_0x5cf22b[_0xfa92('0x28')][_0xfa92('0x11')]);_0x9dc577['offset']=qs[_0xfa92('0xe')](_0x5cf22b[_0xfa92('0x28')][_0xfa92('0xe')]);}_0x9dc577['order']=qs['sort'](_0x5cf22b[_0xfa92('0x28')][_0xfa92('0x31')]);_0x9dc577[_0xfa92('0x32')]=qs[_0xfa92('0x2a')](_[_0xfa92('0x33')](_0x5cf22b[_0xfa92('0x28')],_0xd3ed4f[_0xfa92('0x2a')]),_0x40a0af);if(_0x5cf22b[_0xfa92('0x28')][_0xfa92('0x34')]){_0x9dc577[_0xfa92('0x32')]=_[_0xfa92('0x35')](_0x9dc577[_0xfa92('0x32')],{'$or':_[_0xfa92('0x27')](_0x40a0af,function(_0x54273a){if(_0x54273a[_0xfa92('0x1d')]!=='VIRTUAL'){var _0x2f64d5={};_0x2f64d5[_0x54273a[_0xfa92('0x1e')]]={'$like':'%'+_0x5cf22b[_0xfa92('0x28')][_0xfa92('0x34')]+'%'};return _0x2f64d5;}})});}_0x9dc577=_[_0xfa92('0x35')]({},_0x9dc577,_0x5cf22b[_0xfa92('0x36')]);var _0x21912f={'where':_0x9dc577[_0xfa92('0x32')]};return db[_0xfa92('0x23')][_0xfa92('0x10')](_0x21912f)[_0xfa92('0x14')](function(_0x42ee5c){_0x271969['count']=_0x42ee5c;if(_0x5cf22b['query'][_0xfa92('0x37')]){_0x9dc577[_0xfa92('0x38')]=[{'all':!![]}];}return db[_0xfa92('0x23')][_0xfa92('0x39')](_0x9dc577);})['then'](function(_0x401365){_0x271969[_0xfa92('0x3a')]=_0x401365;return _0x271969;})[_0xfa92('0x14')](respondWithFilteredResult(_0x2343cb,_0x9dc577))[_0xfa92('0x3b')](handleError(_0x2343cb,null));};exports['show']=function(_0xa4c010,_0x2930fc){var _0x5ec990={'raw':![],'where':{'id':_0xa4c010[_0xfa92('0x3c')]['id']}},_0x832738={};_0x832738[_0xfa92('0x26')]=_[_0xfa92('0x29')](db[_0xfa92('0x23')]['rawAttributes']);_0x832738['query']=_[_0xfa92('0x29')](_0xa4c010[_0xfa92('0x28')]);_0x832738['filters']=_[_0xfa92('0x2b')](_0x832738['model'],_0x832738['query']);_0x5ec990[_0xfa92('0x2c')]=_['intersection'](_0x832738[_0xfa92('0x26')],qs[_0xfa92('0x2d')](_0xa4c010[_0xfa92('0x28')][_0xfa92('0x2d')]));_0x5ec990[_0xfa92('0x2c')]=_0x5ec990[_0xfa92('0x2c')][_0xfa92('0x2e')]?_0x5ec990[_0xfa92('0x2c')]:_0x832738[_0xfa92('0x26')];if(_0xa4c010[_0xfa92('0x28')][_0xfa92('0x37')]){_0x5ec990[_0xfa92('0x38')]=[{'all':!![]}];}_0x5ec990=_[_0xfa92('0x35')]({},_0x5ec990,_0xa4c010['options']);return db[_0xfa92('0x23')]['find'](_0x5ec990)['then'](handleEntityNotFound(_0x2930fc,null))[_0xfa92('0x14')](respondWithResult(_0x2930fc,null))[_0xfa92('0x3b')](handleError(_0x2930fc,null));};exports[_0xfa92('0x13')]=function(_0x56ec12,_0x2a3391){return db[_0xfa92('0x23')][_0xfa92('0x1c')]({'where':{'id':_0x56ec12['params']['id']}})['then'](handleEntityNotFound(_0x2a3391,null))[_0xfa92('0x14')](removeEntity(_0x2a3391,null))[_0xfa92('0x3b')](handleError(_0x2a3391,null));};exports[_0xfa92('0x3d')]=function(_0x1c2497,_0x4e488d){if(_0x1c2497[_0xfa92('0x3e')][_0xfa92('0x1d')]===_0xfa92('0x19')&&!_[_0xfa92('0x3f')](_0x1c2497['body'][_0xfa92('0x40')],'_')){_0x1c2497[_0xfa92('0x3e')][_0xfa92('0x40')]='_'[_0xfa92('0x41')](_0x1c2497[_0xfa92('0x3e')][_0xfa92('0x40')]);}return db[_0xfa92('0x23')]['create'](_0x1c2497[_0xfa92('0x3e')],{'raw':![]})[_0xfa92('0x14')](function(_0x9db821){var _0x170464=_0x1c2497[_0xfa92('0x42')][_0xfa92('0x15')]({'plain':!![]});if(!_0x170464)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x170464[_0xfa92('0x43')]==='user'){var _0x5a8916=_0x9db821['get']({'plain':!![]});var _0x1fdf50=[{'name':'InboundRoutes','value':_0xfa92('0x17')},{'name':_0xfa92('0x18'),'value':_0xfa92('0x19')},{'name':_0xfa92('0x44'),'value':_0xfa92('0x45')}];var _0x453dce=_['find'](_0x1fdf50,[_0xfa92('0x1a'),_0x5a8916[_0xfa92('0x1d')]])[_0xfa92('0x1e')];return db['UserProfileSection'][_0xfa92('0x1c')]({'where':{'name':_0x453dce,'userProfileId':_0x170464[_0xfa92('0x46')]},'raw':!![]})[_0xfa92('0x14')](function(_0x121f6b){if(_0x121f6b&&_0x121f6b[_0xfa92('0x47')]===0x0){return db[_0xfa92('0x1f')]['create']({'name':_0x5a8916[_0xfa92('0x1e')],'resourceId':_0x5a8916['id'],'type':_0x121f6b[_0xfa92('0x1e')],'sectionId':_0x121f6b['id']},{})[_0xfa92('0x14')](function(){return _0x9db821;});}else{return _0x9db821;}})[_0xfa92('0x3b')](function(_0xba3c46){logger[_0xfa92('0x48')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xba3c46);throw _0xba3c46;});}return _0x9db821;})[_0xfa92('0x14')](respondWithResult(_0x4e488d,0xc9))[_0xfa92('0x3b')](handleError(_0x4e488d,null));};exports[_0xfa92('0x49')]=function(_0x53f00c,_0x172fd0){if(_0x53f00c['body']['id']){delete _0x53f00c[_0xfa92('0x3e')]['id'];}return db[_0xfa92('0x23')][_0xfa92('0x1c')]({'where':{'id':_0x53f00c[_0xfa92('0x3c')]['id']}})['then'](handleEntityNotFound(_0x172fd0,null))['then'](function(_0x54e682){if(_0x54e682){return db['VoiceExtension'][_0xfa92('0x49')](_[_0xfa92('0x33')](_0x53f00c['body'],['exten',_0xfa92('0x4a'),_0xfa92('0x4b'),_0xfa92('0x4c'),_0xfa92('0x4d'),_0xfa92('0x4e'),_0xfa92('0x4f')]),{'where':{'context':_0x54e682[_0xfa92('0x4a')],'exten':_0x54e682['exten']},'individualHooks':!![]})[_0xfa92('0x14')](function(_0x248212){return _0x248212;});}return null;})['then'](respondWithStatusCode(_0x172fd0,null))['catch'](handleError(_0x172fd0,null));};exports[_0xfa92('0x50')]=function(_0x23d741,_0x5244e3){var _0x23f333=_0x23d741[_0xfa92('0x3c')]['id'];var _0x108b14=_0x23d741[_0xfa92('0x3e')];var _0xbb7bcf=0xc8;var _0x29778d=null;return db[_0xfa92('0x51')]['transaction']({'isolationLevel':db['sequelize']['Transaction'][_0xfa92('0x52')][_0xfa92('0x53')]},function(_0x387c34){return db[_0xfa92('0x23')]['findOne']({'where':{'id':_0x23f333},'transaction':_0x387c34})['then'](function(_0x5718c6){if(_0x5718c6){return db[_0xfa92('0x23')]['destroy']({'where':{'VoiceExtensionId':_0x23f333},'transaction':_0x387c34})[_0xfa92('0x14')](function(){var _0x485088=_['map'](_0x108b14,function(_0x4b555d){_0x4b555d[_0xfa92('0x54')]=_0x23f333;_0x4b555d['isApp']=!![];return _0x4b555d;});return _0x5718c6[_0xfa92('0x55')](_0x485088);})[_0xfa92('0x14')](function(_0x2c1008){return db[_0xfa92('0x23')][_0xfa92('0x56')](_0x2c1008,{'transaction':_0x387c34});});}else{_0xbb7bcf=0x194;_0x29778d=[];}});})[_0xfa92('0x14')](function(){if(_0xbb7bcf!==0x194){return db[_0xfa92('0x23')][_0xfa92('0x57')]({'where':{'isApp':!![],'VoiceExtensionId':_0x23f333},'order':_0xfa92('0x58')})[_0xfa92('0x14')](function(_0x7d07bc){_0x29778d=_0x7d07bc;});}})['catch'](function(_0x382fe1){_0xbb7bcf=0x1f4;logger[_0xfa92('0x48')](_0x382fe1['stack']);if(_0x382fe1[_0xfa92('0x1e')]){delete _0x382fe1[_0xfa92('0x1e')];}_0x29778d=_0x382fe1;})[_0xfa92('0x59')](function(){if(_0x29778d===null){_0x5244e3[_0xfa92('0xa')](_0xbb7bcf);}else{if(_0xbb7bcf===0x1f4){_0x5244e3['status'](_0xbb7bcf)[_0xfa92('0x21')](_0x29778d);}else{_0x5244e3[_0xfa92('0xb')](_0xbb7bcf)[_0xfa92('0xd')](_0x29778d);}}});};