4ce9fae5ab04d7fe68f15b8c6e474bd9b2db0ae6
[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 _0xf9ea=['cutdigits','mandatoryDisposition','alias','context','addApplications','sequelize','transaction','Transaction','READ_COMMITTED','findOne','VoiceExtensionId','createRouting','bulkCreate','findAndCountAll','stack','finally','lodash','ioredis','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./voiceExtension.socket','sendStatus','end','status','offset','undefined','limit','count','Content-Range','then','get','InboundRoutes','OutboundRoutes','outbound','InternalRoutes','internal','filter','ignore','map','value','includes','type','find','name','UserProfileResource','destroy','error','send','index','VoiceExtension','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','options','include','catch','params','includeAll','create','body','startsWith','exten','concat','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','inbound','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','description','recordingFormat'];(function(_0x26fc81,_0x57fc19){var _0x9feece=function(_0x4344c3){while(--_0x4344c3){_0x26fc81['push'](_0x26fc81['shift']());}};_0x9feece(++_0x57fc19);}(_0xf9ea,0x6d));var _0xaf9e=function(_0x1af322,_0x16d095){_0x1af322=_0x1af322-0x0;var _0x28ac48=_0xf9ea[_0x1af322];return _0x28ac48;};'use strict';var _=require(_0xaf9e('0x0'));var Redis=require(_0xaf9e('0x1'));var qs=require(_0xaf9e('0x2'));var logger=require(_0xaf9e('0x3'))('api');var config=require(_0xaf9e('0x4'));var db=require(_0xaf9e('0x5'))['db'];config[_0xaf9e('0x6')]=_['defaults'](config['redis'],{'host':_0xaf9e('0x7'),'port':0x18eb});var socket=require(_0xaf9e('0x8'))(new Redis(config[_0xaf9e('0x6')]));require(_0xaf9e('0x9'))['register'](socket);function respondWithStatusCode(_0x158fa2,_0x423392){_0x423392=_0x423392||0xcc;return function(_0x3984f5){if(_0x3984f5){return _0x158fa2[_0xaf9e('0xa')](_0x423392);}return _0x158fa2['status'](_0x423392)[_0xaf9e('0xb')]();};}function respondWithResult(_0x4f29bd,_0x1ac3db){_0x1ac3db=_0x1ac3db||0xc8;return function(_0x156d9d){if(_0x156d9d){return _0x4f29bd[_0xaf9e('0xc')](_0x1ac3db)['json'](_0x156d9d);}};}function respondWithFilteredResult(_0x56983a,_0xa8abd){return function(_0xa29643){if(_0xa29643){var _0x545e77=typeof _0xa8abd[_0xaf9e('0xd')]===_0xaf9e('0xe')&&typeof _0xa8abd[_0xaf9e('0xf')]===_0xaf9e('0xe');var _0x5c41ec=_0xa29643[_0xaf9e('0x10')];var _0x37c0b8=_0x545e77?0x0:_0xa8abd[_0xaf9e('0xd')];var _0x3e0d98=_0x545e77?_0xa29643[_0xaf9e('0x10')]:_0xa8abd[_0xaf9e('0xd')]+_0xa8abd[_0xaf9e('0xf')];var _0x51a220;if(_0x3e0d98>=_0x5c41ec){_0x3e0d98=_0x5c41ec;_0x51a220=0xc8;}else{_0x51a220=0xce;}_0x56983a[_0xaf9e('0xc')](_0x51a220);return _0x56983a['set'](_0xaf9e('0x11'),_0x37c0b8+'-'+_0x3e0d98+'/'+_0x5c41ec)['json'](_0xa29643);}return null;};}function removeEntity(_0x569331){return function(_0x5e1ad9){if(_0x5e1ad9){return _0x5e1ad9['destroy']()[_0xaf9e('0x12')](function(){var _0x161804=_0x5e1ad9[_0xaf9e('0x13')]({'plain':!![]});var _0x5470e6=[{'name':_0xaf9e('0x14'),'value':'inbound','ignore':![]},{'name':_0xaf9e('0x15'),'value':_0xaf9e('0x16'),'ignore':![]},{'name':_0xaf9e('0x17'),'value':_0xaf9e('0x18'),'ignore':![]}];var _0x41de0d=_(_0x5470e6)[_0xaf9e('0x19')](_0xaf9e('0x1a'))[_0xaf9e('0x1b')](_0xaf9e('0x1c'))[_0xaf9e('0x1c')]();if(_[_0xaf9e('0x1d')](_0x41de0d,_0x161804[_0xaf9e('0x1e')])){return;}var _0x4801c9=_[_0xaf9e('0x1f')](_0x5470e6,[_0xaf9e('0x1c'),_0x161804[_0xaf9e('0x1e')]])[_0xaf9e('0x20')];return db[_0xaf9e('0x21')][_0xaf9e('0x22')]({'where':{'type':_0x4801c9,'resourceId':_0x161804['id']}})[_0xaf9e('0x12')](function(){return _0x5e1ad9;});})[_0xaf9e('0x12')](function(){_0x569331['status'](0xcc)[_0xaf9e('0xb')]();});}};}function handleEntityNotFound(_0x7a88d5){return function(_0x22a7c6){if(!_0x22a7c6){_0x7a88d5[_0xaf9e('0xa')](0x194);}return _0x22a7c6;};}function handleError(_0x135392,_0x4d3cf8){_0x4d3cf8=_0x4d3cf8||0x1f4;return function(_0xc3af57){logger[_0xaf9e('0x23')](_0xc3af57['stack']);if(_0xc3af57[_0xaf9e('0x20')]){delete _0xc3af57[_0xaf9e('0x20')];}_0x135392[_0xaf9e('0xc')](_0x4d3cf8)[_0xaf9e('0x24')](_0xc3af57);};}exports[_0xaf9e('0x25')]=function(_0x2968fc,_0x466488){var _0x420919={},_0x1d8820={},_0x540093={'count':0x0,'rows':[]};var _0xcedfd6=_[_0xaf9e('0x1b')](db[_0xaf9e('0x26')][_0xaf9e('0x27')],function(_0x2c2e16){return{'name':_0x2c2e16[_0xaf9e('0x28')],'type':_0x2c2e16[_0xaf9e('0x1e')][_0xaf9e('0x29')]};});_0x1d8820[_0xaf9e('0x2a')]=_['map'](_0xcedfd6,_0xaf9e('0x20'));_0x1d8820[_0xaf9e('0x2b')]=_[_0xaf9e('0x2c')](_0x2968fc['query']);_0x1d8820[_0xaf9e('0x2d')]=_[_0xaf9e('0x2e')](_0x1d8820['model'],_0x1d8820[_0xaf9e('0x2b')]);_0x420919['attributes']=_[_0xaf9e('0x2e')](_0x1d8820[_0xaf9e('0x2a')],qs[_0xaf9e('0x2f')](_0x2968fc[_0xaf9e('0x2b')][_0xaf9e('0x2f')]));_0x420919[_0xaf9e('0x30')]=_0x420919[_0xaf9e('0x30')][_0xaf9e('0x31')]?_0x420919[_0xaf9e('0x30')]:_0x1d8820['model'];if(!_0x2968fc[_0xaf9e('0x2b')][_0xaf9e('0x32')](_0xaf9e('0x33'))){_0x420919['limit']=qs[_0xaf9e('0xf')](_0x2968fc[_0xaf9e('0x2b')][_0xaf9e('0xf')]);_0x420919[_0xaf9e('0xd')]=qs[_0xaf9e('0xd')](_0x2968fc[_0xaf9e('0x2b')][_0xaf9e('0xd')]);}_0x420919['order']=qs[_0xaf9e('0x34')](_0x2968fc['query'][_0xaf9e('0x34')]);_0x420919[_0xaf9e('0x35')]=qs[_0xaf9e('0x2d')](_[_0xaf9e('0x36')](_0x2968fc[_0xaf9e('0x2b')],_0x1d8820[_0xaf9e('0x2d')]),_0xcedfd6);if(_0x2968fc[_0xaf9e('0x2b')][_0xaf9e('0x19')]){_0x420919[_0xaf9e('0x35')]=_[_0xaf9e('0x37')](_0x420919['where'],{'$or':_['map'](_0xcedfd6,function(_0xd990b7){if(_0xd990b7['type']!==_0xaf9e('0x38')){var _0x506593={};_0x506593[_0xd990b7[_0xaf9e('0x20')]]={'$like':'%'+_0x2968fc[_0xaf9e('0x2b')]['filter']+'%'};return _0x506593;}})});}_0x420919=_[_0xaf9e('0x37')]({},_0x420919,_0x2968fc[_0xaf9e('0x39')]);var _0xe4286c={'where':_0x420919[_0xaf9e('0x35')]};return db['VoiceExtension'][_0xaf9e('0x10')](_0xe4286c)[_0xaf9e('0x12')](function(_0x49d3e6){_0x540093['count']=_0x49d3e6;if(_0x2968fc[_0xaf9e('0x2b')]['includeAll']){_0x420919[_0xaf9e('0x3a')]=[{'all':!![]}];}return db[_0xaf9e('0x26')]['findAll'](_0x420919);})['then'](function(_0x3b58b8){_0x540093['rows']=_0x3b58b8;return _0x540093;})['then'](respondWithFilteredResult(_0x466488,_0x420919))[_0xaf9e('0x3b')](handleError(_0x466488,null));};exports['show']=function(_0x1c63c4,_0x3ee8bb){var _0x14f685={'raw':![],'where':{'id':_0x1c63c4[_0xaf9e('0x3c')]['id']}},_0x3f93cf={};_0x3f93cf['model']=_[_0xaf9e('0x2c')](db[_0xaf9e('0x26')]['rawAttributes']);_0x3f93cf[_0xaf9e('0x2b')]=_[_0xaf9e('0x2c')](_0x1c63c4['query']);_0x3f93cf[_0xaf9e('0x2d')]=_[_0xaf9e('0x2e')](_0x3f93cf[_0xaf9e('0x2a')],_0x3f93cf['query']);_0x14f685[_0xaf9e('0x30')]=_[_0xaf9e('0x2e')](_0x3f93cf[_0xaf9e('0x2a')],qs[_0xaf9e('0x2f')](_0x1c63c4[_0xaf9e('0x2b')][_0xaf9e('0x2f')]));_0x14f685[_0xaf9e('0x30')]=_0x14f685['attributes']['length']?_0x14f685['attributes']:_0x3f93cf['model'];if(_0x1c63c4[_0xaf9e('0x2b')][_0xaf9e('0x3d')]){_0x14f685[_0xaf9e('0x3a')]=[{'all':!![]}];}_0x14f685=_[_0xaf9e('0x37')]({},_0x14f685,_0x1c63c4[_0xaf9e('0x39')]);return db[_0xaf9e('0x26')][_0xaf9e('0x1f')](_0x14f685)[_0xaf9e('0x12')](handleEntityNotFound(_0x3ee8bb,null))[_0xaf9e('0x12')](respondWithResult(_0x3ee8bb,null))[_0xaf9e('0x3b')](handleError(_0x3ee8bb,null));};exports['destroy']=function(_0x92c334,_0x15cb18){return db[_0xaf9e('0x26')][_0xaf9e('0x1f')]({'where':{'id':_0x92c334[_0xaf9e('0x3c')]['id']}})[_0xaf9e('0x12')](handleEntityNotFound(_0x15cb18,null))[_0xaf9e('0x12')](removeEntity(_0x15cb18,null))[_0xaf9e('0x3b')](handleError(_0x15cb18,null));};exports[_0xaf9e('0x3e')]=function(_0x113e77,_0x4aed63){if(_0x113e77[_0xaf9e('0x3f')][_0xaf9e('0x1e')]===_0xaf9e('0x16')&&!_[_0xaf9e('0x40')](_0x113e77[_0xaf9e('0x3f')][_0xaf9e('0x41')],'_')){_0x113e77[_0xaf9e('0x3f')][_0xaf9e('0x41')]='_'[_0xaf9e('0x42')](_0x113e77['body'][_0xaf9e('0x41')]);}return db[_0xaf9e('0x26')][_0xaf9e('0x3e')](_0x113e77[_0xaf9e('0x3f')],{'raw':![]})[_0xaf9e('0x12')](function(_0x624bf2){var _0x2088f0=_0x113e77['user'][_0xaf9e('0x13')]({'plain':!![]});if(!_0x2088f0)throw new Error(_0xaf9e('0x43'));if(_0x2088f0['role']===_0xaf9e('0x44')){var _0x5f1aa3=_0x624bf2['get']({'plain':!![]});var _0x4eab07=[{'name':_0xaf9e('0x14'),'value':_0xaf9e('0x45')},{'name':'OutboundRoutes','value':'outbound'},{'name':'InternalRoutes','value':'internal'}];var _0x2cb2b0=_['find'](_0x4eab07,[_0xaf9e('0x1c'),_0x5f1aa3[_0xaf9e('0x1e')]])[_0xaf9e('0x20')];return db[_0xaf9e('0x46')][_0xaf9e('0x1f')]({'where':{'name':_0x2cb2b0,'userProfileId':_0x2088f0[_0xaf9e('0x47')]},'raw':!![]})[_0xaf9e('0x12')](function(_0xbafadf){if(_0xbafadf&&_0xbafadf[_0xaf9e('0x48')]===0x0){return db[_0xaf9e('0x21')]['create']({'name':_0x5f1aa3[_0xaf9e('0x20')],'resourceId':_0x5f1aa3['id'],'type':_0xbafadf[_0xaf9e('0x20')],'sectionId':_0xbafadf['id']},{})[_0xaf9e('0x12')](function(){return _0x624bf2;});}else{return _0x624bf2;}})[_0xaf9e('0x3b')](function(_0x3983c1){logger[_0xaf9e('0x23')](_0xaf9e('0x49'),_0x3983c1);throw _0x3983c1;});}return _0x624bf2;})[_0xaf9e('0x12')](respondWithResult(_0x4aed63,0xc9))['catch'](handleError(_0x4aed63,null));};exports[_0xaf9e('0x4a')]=function(_0x1fc7df,_0x3a9c63){if(_0x1fc7df['body']['id']){delete _0x1fc7df['body']['id'];}return db[_0xaf9e('0x26')][_0xaf9e('0x1f')]({'where':{'id':_0x1fc7df[_0xaf9e('0x3c')]['id']}})[_0xaf9e('0x12')](handleEntityNotFound(_0x3a9c63,null))[_0xaf9e('0x12')](function(_0x156109){if(_0x156109){return db['VoiceExtension'][_0xaf9e('0x4a')](_[_0xaf9e('0x36')](_0x1fc7df[_0xaf9e('0x3f')],[_0xaf9e('0x41'),'context',_0xaf9e('0x4b'),_0xaf9e('0x4c'),_0xaf9e('0x4d'),_0xaf9e('0x4e'),_0xaf9e('0x4f')]),{'where':{'context':_0x156109[_0xaf9e('0x50')],'exten':_0x156109[_0xaf9e('0x41')]},'individualHooks':!![]})[_0xaf9e('0x12')](function(_0x1b62bb){return _0x1b62bb;});}return null;})[_0xaf9e('0x12')](respondWithStatusCode(_0x3a9c63,null))[_0xaf9e('0x3b')](handleError(_0x3a9c63,null));};exports[_0xaf9e('0x51')]=function(_0x20b9e0,_0x4f73f2){var _0x260a27=_0x20b9e0[_0xaf9e('0x3c')]['id'];var _0xca6b98=_0x20b9e0[_0xaf9e('0x3f')];var _0x308737=0xc8;var _0x4db9ed=null;return db[_0xaf9e('0x52')][_0xaf9e('0x53')]({'isolationLevel':db[_0xaf9e('0x52')][_0xaf9e('0x54')]['ISOLATION_LEVELS'][_0xaf9e('0x55')]},function(_0x819859){return db[_0xaf9e('0x26')][_0xaf9e('0x56')]({'where':{'id':_0x260a27},'transaction':_0x819859})['then'](function(_0x2b30cd){if(_0x2b30cd){return db[_0xaf9e('0x26')][_0xaf9e('0x22')]({'where':{'VoiceExtensionId':_0x260a27},'transaction':_0x819859})[_0xaf9e('0x12')](function(){var _0x26ee96=_['map'](_0xca6b98,function(_0x499183){_0x499183[_0xaf9e('0x57')]=_0x260a27;_0x499183['isApp']=!![];return _0x499183;});return _0x2b30cd[_0xaf9e('0x58')](_0x26ee96);})[_0xaf9e('0x12')](function(_0x46595a){return db[_0xaf9e('0x26')][_0xaf9e('0x59')](_0x46595a,{'transaction':_0x819859});});}else{_0x308737=0x194;_0x4db9ed=[];}});})[_0xaf9e('0x12')](function(){if(_0x308737!==0x194){return db[_0xaf9e('0x26')][_0xaf9e('0x5a')]({'where':{'isApp':!![],'VoiceExtensionId':_0x260a27},'order':'cast(priority\x20as\x20unsigned)'})[_0xaf9e('0x12')](function(_0x2edeac){_0x4db9ed=_0x2edeac;});}})[_0xaf9e('0x3b')](function(_0x1ebf44){_0x308737=0x1f4;logger['error'](_0x1ebf44[_0xaf9e('0x5b')]);if(_0x1ebf44['name']){delete _0x1ebf44[_0xaf9e('0x20')];}_0x4db9ed=_0x1ebf44;})[_0xaf9e('0x5c')](function(){if(_0x4db9ed===null){_0x4f73f2['sendStatus'](_0x308737);}else{if(_0x308737===0x1f4){_0x4f73f2[_0xaf9e('0xc')](_0x308737)[_0xaf9e('0x24')](_0x4db9ed);}else{_0x4f73f2[_0xaf9e('0xc')](_0x308737)['json'](_0x4db9ed);}}});};