ef92fe56b938312e60f7bf14f759becdf3fc325c
[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 _0xc304=['exten','concat','role','get','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','description','recordingFormat','cutdigits','mandatoryDisposition','context','addApplications','sequelize','transaction','Transaction','READ_COMMITTED','VoiceExtensionId','isApp','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','stack','finally','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./voiceExtension.socket','register','sendStatus','end','status','offset','undefined','limit','count','json','destroy','InboundRoutes','inbound','OutboundRoutes','outbound','InternalRoutes','internal','filter','ignore','map','value','includes','type','UserProfileResource','then','error','name','send','index','VoiceExtension','rawAttributes','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','keys','find','params','create','body','startsWith'];(function(_0xc3d0c3,_0x435d4f){var _0x1e5245=function(_0x4e1919){while(--_0x4e1919){_0xc3d0c3['push'](_0xc3d0c3['shift']());}};_0x1e5245(++_0x435d4f);}(_0xc304,0x186));var _0x4c30=function(_0x53f04f,_0x419aa8){_0x53f04f=_0x53f04f-0x0;var _0x16a824=_0xc304[_0x53f04f];return _0x16a824;};'use strict';var _=require('lodash');var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0x4c30('0x0'));var config=require(_0x4c30('0x1'));var db=require(_0x4c30('0x2'))['db'];config[_0x4c30('0x3')]=_[_0x4c30('0x4')](config[_0x4c30('0x3')],{'host':'localhost','port':0x18eb});var socket=require(_0x4c30('0x5'))(new Redis(config[_0x4c30('0x3')]));require(_0x4c30('0x6'))[_0x4c30('0x7')](socket);function respondWithStatusCode(_0x3b572f,_0x2cd8e0){_0x2cd8e0=_0x2cd8e0||0xcc;return function(_0x41fcd8){if(_0x41fcd8){return _0x3b572f[_0x4c30('0x8')](_0x2cd8e0);}return _0x3b572f['status'](_0x2cd8e0)[_0x4c30('0x9')]();};}function respondWithResult(_0x390751,_0x19bf91){_0x19bf91=_0x19bf91||0xc8;return function(_0x3338f3){if(_0x3338f3){return _0x390751[_0x4c30('0xa')](_0x19bf91)['json'](_0x3338f3);}};}function respondWithFilteredResult(_0x36b3d5,_0x612d18){return function(_0x4e9ac1){if(_0x4e9ac1){var _0x5dc8ca=typeof _0x612d18[_0x4c30('0xb')]===_0x4c30('0xc')&&typeof _0x612d18[_0x4c30('0xd')]===_0x4c30('0xc');var _0x4c07c3=_0x4e9ac1[_0x4c30('0xe')];var _0x36cdb6=_0x5dc8ca?0x0:_0x612d18[_0x4c30('0xb')];var _0xbc7a27=_0x5dc8ca?_0x4e9ac1[_0x4c30('0xe')]:_0x612d18['offset']+_0x612d18[_0x4c30('0xd')];var _0xcd2751;if(_0xbc7a27>=_0x4c07c3){_0xbc7a27=_0x4c07c3;_0xcd2751=0xc8;}else{_0xcd2751=0xce;}_0x36b3d5[_0x4c30('0xa')](_0xcd2751);return _0x36b3d5['set']('Content-Range',_0x36cdb6+'-'+_0xbc7a27+'/'+_0x4c07c3)[_0x4c30('0xf')](_0x4e9ac1);}return null;};}function removeEntity(_0x4a559c){return function(_0x211686){if(_0x211686){return _0x211686[_0x4c30('0x10')]()['then'](function(){var _0x3ed41c=_0x211686['get']({'plain':!![]});var _0x573eb7=[{'name':_0x4c30('0x11'),'value':_0x4c30('0x12'),'ignore':![]},{'name':_0x4c30('0x13'),'value':_0x4c30('0x14'),'ignore':![]},{'name':_0x4c30('0x15'),'value':_0x4c30('0x16'),'ignore':![]}];var _0x414395=_(_0x573eb7)[_0x4c30('0x17')](_0x4c30('0x18'))[_0x4c30('0x19')](_0x4c30('0x1a'))[_0x4c30('0x1a')]();if(_[_0x4c30('0x1b')](_0x414395,_0x3ed41c[_0x4c30('0x1c')])){return;}var _0x2731ab=_['find'](_0x573eb7,[_0x4c30('0x1a'),_0x3ed41c[_0x4c30('0x1c')]])['name'];return db[_0x4c30('0x1d')][_0x4c30('0x10')]({'where':{'type':_0x2731ab,'resourceId':_0x3ed41c['id']}})[_0x4c30('0x1e')](function(){return _0x211686;});})[_0x4c30('0x1e')](function(){_0x4a559c['status'](0xcc)[_0x4c30('0x9')]();});}};}function handleEntityNotFound(_0x948ffb){return function(_0x2abb16){if(!_0x2abb16){_0x948ffb[_0x4c30('0x8')](0x194);}return _0x2abb16;};}function handleError(_0x31d557,_0x590f72){_0x590f72=_0x590f72||0x1f4;return function(_0x1e33df){logger[_0x4c30('0x1f')](_0x1e33df['stack']);if(_0x1e33df['name']){delete _0x1e33df[_0x4c30('0x20')];}_0x31d557['status'](_0x590f72)[_0x4c30('0x21')](_0x1e33df);};}exports[_0x4c30('0x22')]=function(_0x19113e,_0x3ed750){var _0x5e1f4c={},_0x226112={},_0x5abb01={'count':0x0,'rows':[]};var _0x3f399b=_[_0x4c30('0x19')](db[_0x4c30('0x23')][_0x4c30('0x24')],function(_0x51d301){return{'name':_0x51d301['fieldName'],'type':_0x51d301['type']['key']};});_0x226112[_0x4c30('0x25')]=_['map'](_0x3f399b,_0x4c30('0x20'));_0x226112[_0x4c30('0x26')]=_['keys'](_0x19113e[_0x4c30('0x26')]);_0x226112[_0x4c30('0x27')]=_[_0x4c30('0x28')](_0x226112[_0x4c30('0x25')],_0x226112[_0x4c30('0x26')]);_0x5e1f4c[_0x4c30('0x29')]=_['intersection'](_0x226112[_0x4c30('0x25')],qs[_0x4c30('0x2a')](_0x19113e[_0x4c30('0x26')][_0x4c30('0x2a')]));_0x5e1f4c[_0x4c30('0x29')]=_0x5e1f4c[_0x4c30('0x29')][_0x4c30('0x2b')]?_0x5e1f4c['attributes']:_0x226112[_0x4c30('0x25')];if(!_0x19113e[_0x4c30('0x26')][_0x4c30('0x2c')](_0x4c30('0x2d'))){_0x5e1f4c['limit']=qs[_0x4c30('0xd')](_0x19113e['query'][_0x4c30('0xd')]);_0x5e1f4c[_0x4c30('0xb')]=qs['offset'](_0x19113e[_0x4c30('0x26')][_0x4c30('0xb')]);}_0x5e1f4c[_0x4c30('0x2e')]=qs[_0x4c30('0x2f')](_0x19113e[_0x4c30('0x26')][_0x4c30('0x2f')]);_0x5e1f4c[_0x4c30('0x30')]=qs['filters'](_[_0x4c30('0x31')](_0x19113e[_0x4c30('0x26')],_0x226112[_0x4c30('0x27')]),_0x3f399b);if(_0x19113e[_0x4c30('0x26')][_0x4c30('0x17')]){_0x5e1f4c[_0x4c30('0x30')]=_['merge'](_0x5e1f4c[_0x4c30('0x30')],{'$or':_[_0x4c30('0x19')](_0x3f399b,function(_0xe79f77){if(_0xe79f77['type']!==_0x4c30('0x32')){var _0x1b76ca={};_0x1b76ca[_0xe79f77[_0x4c30('0x20')]]={'$like':'%'+_0x19113e[_0x4c30('0x26')]['filter']+'%'};return _0x1b76ca;}})});}_0x5e1f4c=_[_0x4c30('0x33')]({},_0x5e1f4c,_0x19113e[_0x4c30('0x34')]);var _0x5a82aa={'where':_0x5e1f4c[_0x4c30('0x30')]};return db[_0x4c30('0x23')]['count'](_0x5a82aa)[_0x4c30('0x1e')](function(_0x2649f3){_0x5abb01[_0x4c30('0xe')]=_0x2649f3;if(_0x19113e[_0x4c30('0x26')][_0x4c30('0x35')]){_0x5e1f4c[_0x4c30('0x36')]=[{'all':!![]}];}return db[_0x4c30('0x23')][_0x4c30('0x37')](_0x5e1f4c);})[_0x4c30('0x1e')](function(_0x3d0ea1){_0x5abb01[_0x4c30('0x38')]=_0x3d0ea1;return _0x5abb01;})['then'](respondWithFilteredResult(_0x3ed750,_0x5e1f4c))[_0x4c30('0x39')](handleError(_0x3ed750,null));};exports[_0x4c30('0x3a')]=function(_0x150c5b,_0x5b8660){var _0x3a30d2={'raw':![],'where':{'id':_0x150c5b['params']['id']}},_0x2800b8={};_0x2800b8['model']=_[_0x4c30('0x3b')](db[_0x4c30('0x23')][_0x4c30('0x24')]);_0x2800b8[_0x4c30('0x26')]=_[_0x4c30('0x3b')](_0x150c5b['query']);_0x2800b8['filters']=_['intersection'](_0x2800b8[_0x4c30('0x25')],_0x2800b8[_0x4c30('0x26')]);_0x3a30d2['attributes']=_[_0x4c30('0x28')](_0x2800b8[_0x4c30('0x25')],qs[_0x4c30('0x2a')](_0x150c5b['query']['fields']));_0x3a30d2[_0x4c30('0x29')]=_0x3a30d2['attributes']['length']?_0x3a30d2[_0x4c30('0x29')]:_0x2800b8[_0x4c30('0x25')];if(_0x150c5b['query'][_0x4c30('0x35')]){_0x3a30d2[_0x4c30('0x36')]=[{'all':!![]}];}_0x3a30d2=_[_0x4c30('0x33')]({},_0x3a30d2,_0x150c5b[_0x4c30('0x34')]);return db[_0x4c30('0x23')][_0x4c30('0x3c')](_0x3a30d2)[_0x4c30('0x1e')](handleEntityNotFound(_0x5b8660,null))[_0x4c30('0x1e')](respondWithResult(_0x5b8660,null))[_0x4c30('0x39')](handleError(_0x5b8660,null));};exports[_0x4c30('0x10')]=function(_0x1a7f1d,_0x4331d3){return db[_0x4c30('0x23')]['find']({'where':{'id':_0x1a7f1d[_0x4c30('0x3d')]['id']}})['then'](handleEntityNotFound(_0x4331d3,null))[_0x4c30('0x1e')](removeEntity(_0x4331d3,null))['catch'](handleError(_0x4331d3,null));};exports[_0x4c30('0x3e')]=function(_0x4a63e5,_0x5d1247){if(_0x4a63e5[_0x4c30('0x3f')][_0x4c30('0x1c')]===_0x4c30('0x14')&&!_[_0x4c30('0x40')](_0x4a63e5[_0x4c30('0x3f')][_0x4c30('0x41')],'_')){_0x4a63e5['body'][_0x4c30('0x41')]='_'[_0x4c30('0x42')](_0x4a63e5[_0x4c30('0x3f')][_0x4c30('0x41')]);}return db[_0x4c30('0x23')][_0x4c30('0x3e')](_0x4a63e5[_0x4c30('0x3f')],{'raw':![]})[_0x4c30('0x1e')](function(_0x5ae243){var _0x58d329=_0x4a63e5['user']['get']({'plain':!![]});if(!_0x58d329)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x58d329[_0x4c30('0x43')]==='user'){var _0x3fc2cb=_0x5ae243[_0x4c30('0x44')]({'plain':!![]});var _0x4e656b=[{'name':_0x4c30('0x11'),'value':'inbound'},{'name':_0x4c30('0x13'),'value':_0x4c30('0x14')},{'name':_0x4c30('0x15'),'value':_0x4c30('0x16')}];var _0x4e8e33=_[_0x4c30('0x3c')](_0x4e656b,[_0x4c30('0x1a'),_0x3fc2cb[_0x4c30('0x1c')]])[_0x4c30('0x20')];return db['UserProfileSection'][_0x4c30('0x3c')]({'where':{'name':_0x4e8e33,'userProfileId':_0x58d329[_0x4c30('0x45')]},'raw':!![]})[_0x4c30('0x1e')](function(_0x1e1d2c){if(_0x1e1d2c&&_0x1e1d2c[_0x4c30('0x46')]===0x0){return db['UserProfileResource'][_0x4c30('0x3e')]({'name':_0x3fc2cb['name'],'resourceId':_0x3fc2cb['id'],'type':_0x1e1d2c[_0x4c30('0x20')],'sectionId':_0x1e1d2c['id']},{})[_0x4c30('0x1e')](function(){return _0x5ae243;});}else{return _0x5ae243;}})[_0x4c30('0x39')](function(_0x11071e){logger[_0x4c30('0x1f')](_0x4c30('0x47'),_0x11071e);throw _0x11071e;});}return _0x5ae243;})['then'](respondWithResult(_0x5d1247,0xc9))['catch'](handleError(_0x5d1247,null));};exports[_0x4c30('0x48')]=function(_0x2e084b,_0x139319){if(_0x2e084b[_0x4c30('0x3f')]['id']){delete _0x2e084b[_0x4c30('0x3f')]['id'];}return db[_0x4c30('0x23')][_0x4c30('0x3c')]({'where':{'id':_0x2e084b[_0x4c30('0x3d')]['id']}})[_0x4c30('0x1e')](handleEntityNotFound(_0x139319,null))[_0x4c30('0x1e')](function(_0x2ff395){if(_0x2ff395){return db[_0x4c30('0x23')][_0x4c30('0x48')](_[_0x4c30('0x31')](_0x2e084b[_0x4c30('0x3f')],[_0x4c30('0x41'),'context',_0x4c30('0x49'),_0x4c30('0x4a'),_0x4c30('0x4b'),_0x4c30('0x4c'),'alias']),{'where':{'context':_0x2ff395[_0x4c30('0x4d')],'exten':_0x2ff395[_0x4c30('0x41')]},'individualHooks':!![]})[_0x4c30('0x1e')](function(_0x2fa468){return _0x2fa468;});}return null;})[_0x4c30('0x1e')](respondWithStatusCode(_0x139319,null))['catch'](handleError(_0x139319,null));};exports[_0x4c30('0x4e')]=function(_0x486472,_0x2824b6){var _0x12a764=_0x486472[_0x4c30('0x3d')]['id'];var _0x262cb0=_0x486472[_0x4c30('0x3f')];var _0x394fb1=0xc8;var _0x47e08c=null;return db[_0x4c30('0x4f')][_0x4c30('0x50')]({'isolationLevel':db[_0x4c30('0x4f')][_0x4c30('0x51')]['ISOLATION_LEVELS'][_0x4c30('0x52')]},function(_0x200998){return db[_0x4c30('0x23')]['findOne']({'where':{'id':_0x12a764},'transaction':_0x200998})[_0x4c30('0x1e')](function(_0x69d17a){if(_0x69d17a){return db[_0x4c30('0x23')]['destroy']({'where':{'VoiceExtensionId':_0x12a764},'transaction':_0x200998})['then'](function(){var _0xf0e4c9=_[_0x4c30('0x19')](_0x262cb0,function(_0x136f8f){_0x136f8f[_0x4c30('0x53')]=_0x12a764;_0x136f8f[_0x4c30('0x54')]=!![];return _0x136f8f;});return _0x69d17a[_0x4c30('0x55')](_0xf0e4c9);})[_0x4c30('0x1e')](function(_0x3889be){return db[_0x4c30('0x23')][_0x4c30('0x56')](_0x3889be,{'transaction':_0x200998});});}else{_0x394fb1=0x194;_0x47e08c=[];}});})[_0x4c30('0x1e')](function(){if(_0x394fb1!==0x194){return db[_0x4c30('0x23')][_0x4c30('0x57')]({'where':{'isApp':!![],'VoiceExtensionId':_0x12a764},'order':_0x4c30('0x58')})[_0x4c30('0x1e')](function(_0x30f5e6){_0x47e08c=_0x30f5e6;});}})['catch'](function(_0x3a61d7){_0x394fb1=0x1f4;logger['error'](_0x3a61d7[_0x4c30('0x59')]);if(_0x3a61d7[_0x4c30('0x20')]){delete _0x3a61d7[_0x4c30('0x20')];}_0x47e08c=_0x3a61d7;})[_0x4c30('0x5a')](function(){if(_0x47e08c===null){_0x2824b6[_0x4c30('0x8')](_0x394fb1);}else{if(_0x394fb1===0x1f4){_0x2824b6['status'](_0x394fb1)['send'](_0x47e08c);}else{_0x2824b6[_0x4c30('0xa')](_0x394fb1)[_0x4c30('0xf')](_0x47e08c);}}});};