7d68f70d74481af2654405218f80bd02ce0cf58d
[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 _0xdaba=['query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','rows','show','rawAttributes','includeAll','include','catch','params','create','startsWith','body','exten','concat','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','OutboundRoutes','UserProfileSection','userProfileId','context','description','recordingFormat','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','VoiceExtensionId','isApp','findAndCountAll','cast(priority\x20as\x20unsigned)','finally','lodash','ioredis','../../config/logger','api','../../config/environment','redis','defaults','localhost','socket.io-emitter','register','status','end','json','offset','undefined','limit','count','set','Content-Range','then','get','InboundRoutes','inbound','outbound','InternalRoutes','filter','ignore','map','value','includes','type','find','name','UserProfileResource','destroy','error','stack','send','index','VoiceExtension','fieldName','key','keys'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xdaba,0xe6));var _0xadab=function(_0x3d02e5,_0xf8f0c8){_0x3d02e5=_0x3d02e5-0x0;var _0x348825=_0xdaba[_0x3d02e5];return _0x348825;};'use strict';var _=require(_0xadab('0x0'));var Redis=require(_0xadab('0x1'));var qs=require('../../components/parsers/qs');var logger=require(_0xadab('0x2'))(_0xadab('0x3'));var config=require(_0xadab('0x4'));var db=require('../../mysqldb')['db'];config[_0xadab('0x5')]=_[_0xadab('0x6')](config['redis'],{'host':_0xadab('0x7'),'port':0x18eb});var socket=require(_0xadab('0x8'))(new Redis(config[_0xadab('0x5')]));require('./voiceExtension.socket')[_0xadab('0x9')](socket);function respondWithStatusCode(_0x433208,_0x10c6bd){_0x10c6bd=_0x10c6bd||0xcc;return function(_0x56a7e1){if(_0x56a7e1){return _0x433208['sendStatus'](_0x10c6bd);}return _0x433208[_0xadab('0xa')](_0x10c6bd)[_0xadab('0xb')]();};}function respondWithResult(_0x3cf7f2,_0x1b61f3){_0x1b61f3=_0x1b61f3||0xc8;return function(_0xb13d4e){if(_0xb13d4e){return _0x3cf7f2[_0xadab('0xa')](_0x1b61f3)[_0xadab('0xc')](_0xb13d4e);}};}function respondWithFilteredResult(_0x3b07da,_0x4dc499){return function(_0x4e4691){if(_0x4e4691){var _0x17c282=typeof _0x4dc499[_0xadab('0xd')]===_0xadab('0xe')&&typeof _0x4dc499[_0xadab('0xf')]===_0xadab('0xe');var _0x30515a=_0x4e4691[_0xadab('0x10')];var _0x4124c1=_0x17c282?0x0:_0x4dc499['offset'];var _0x38101f=_0x17c282?_0x4e4691['count']:_0x4dc499['offset']+_0x4dc499[_0xadab('0xf')];var _0x53ea2c;if(_0x38101f>=_0x30515a){_0x38101f=_0x30515a;_0x53ea2c=0xc8;}else{_0x53ea2c=0xce;}_0x3b07da[_0xadab('0xa')](_0x53ea2c);return _0x3b07da[_0xadab('0x11')](_0xadab('0x12'),_0x4124c1+'-'+_0x38101f+'/'+_0x30515a)[_0xadab('0xc')](_0x4e4691);}return null;};}function removeEntity(_0x43e82f){return function(_0x47a9ed){if(_0x47a9ed){return _0x47a9ed['destroy']()[_0xadab('0x13')](function(){var _0x19c75f=_0x47a9ed[_0xadab('0x14')]({'plain':!![]});var _0x27c246=[{'name':_0xadab('0x15'),'value':_0xadab('0x16'),'ignore':![]},{'name':'OutboundRoutes','value':_0xadab('0x17'),'ignore':![]},{'name':_0xadab('0x18'),'value':'internal','ignore':![]}];var _0x238953=_(_0x27c246)[_0xadab('0x19')](_0xadab('0x1a'))[_0xadab('0x1b')]('value')[_0xadab('0x1c')]();if(_[_0xadab('0x1d')](_0x238953,_0x19c75f[_0xadab('0x1e')])){return;}var _0x12cf98=_[_0xadab('0x1f')](_0x27c246,[_0xadab('0x1c'),_0x19c75f['type']])[_0xadab('0x20')];return db[_0xadab('0x21')][_0xadab('0x22')]({'where':{'type':_0x12cf98,'resourceId':_0x19c75f['id']}})[_0xadab('0x13')](function(){return _0x47a9ed;});})['then'](function(){_0x43e82f[_0xadab('0xa')](0xcc)[_0xadab('0xb')]();});}};}function handleEntityNotFound(_0x43eff6){return function(_0x4c981c){if(!_0x4c981c){_0x43eff6['sendStatus'](0x194);}return _0x4c981c;};}function handleError(_0xe3bcbf,_0x57c19c){_0x57c19c=_0x57c19c||0x1f4;return function(_0x5daaf1){logger[_0xadab('0x23')](_0x5daaf1[_0xadab('0x24')]);if(_0x5daaf1[_0xadab('0x20')]){delete _0x5daaf1['name'];}_0xe3bcbf[_0xadab('0xa')](_0x57c19c)[_0xadab('0x25')](_0x5daaf1);};}exports[_0xadab('0x26')]=function(_0x31b63b,_0x5c790f){var _0x256f3c={},_0x4e389c={},_0x48e2f2={'count':0x0,'rows':[]};var _0x3a6086=_[_0xadab('0x1b')](db[_0xadab('0x27')]['rawAttributes'],function(_0x3c0897){return{'name':_0x3c0897[_0xadab('0x28')],'type':_0x3c0897[_0xadab('0x1e')][_0xadab('0x29')]};});_0x4e389c['model']=_[_0xadab('0x1b')](_0x3a6086,_0xadab('0x20'));_0x4e389c['query']=_[_0xadab('0x2a')](_0x31b63b[_0xadab('0x2b')]);_0x4e389c[_0xadab('0x2c')]=_[_0xadab('0x2d')](_0x4e389c[_0xadab('0x2e')],_0x4e389c[_0xadab('0x2b')]);_0x256f3c[_0xadab('0x2f')]=_['intersection'](_0x4e389c[_0xadab('0x2e')],qs[_0xadab('0x30')](_0x31b63b[_0xadab('0x2b')][_0xadab('0x30')]));_0x256f3c['attributes']=_0x256f3c[_0xadab('0x2f')][_0xadab('0x31')]?_0x256f3c[_0xadab('0x2f')]:_0x4e389c[_0xadab('0x2e')];if(!_0x31b63b['query'][_0xadab('0x32')](_0xadab('0x33'))){_0x256f3c[_0xadab('0xf')]=qs[_0xadab('0xf')](_0x31b63b[_0xadab('0x2b')]['limit']);_0x256f3c[_0xadab('0xd')]=qs[_0xadab('0xd')](_0x31b63b[_0xadab('0x2b')]['offset']);}_0x256f3c[_0xadab('0x34')]=qs[_0xadab('0x35')](_0x31b63b['query'][_0xadab('0x35')]);_0x256f3c[_0xadab('0x36')]=qs[_0xadab('0x2c')](_[_0xadab('0x37')](_0x31b63b[_0xadab('0x2b')],_0x4e389c[_0xadab('0x2c')]),_0x3a6086);if(_0x31b63b[_0xadab('0x2b')][_0xadab('0x19')]){_0x256f3c[_0xadab('0x36')]=_[_0xadab('0x38')](_0x256f3c[_0xadab('0x36')],{'$or':_[_0xadab('0x1b')](_0x3a6086,function(_0xf97e65){if(_0xf97e65[_0xadab('0x1e')]!==_0xadab('0x39')){var _0x17cb56={};_0x17cb56[_0xf97e65[_0xadab('0x20')]]={'$like':'%'+_0x31b63b['query'][_0xadab('0x19')]+'%'};return _0x17cb56;}})});}_0x256f3c=_['merge']({},_0x256f3c,_0x31b63b[_0xadab('0x3a')]);var _0x3a4498={'where':_0x256f3c[_0xadab('0x36')]};return db['VoiceExtension'][_0xadab('0x10')](_0x3a4498)['then'](function(_0x2b3b97){_0x48e2f2[_0xadab('0x10')]=_0x2b3b97;if(_0x31b63b['query']['includeAll']){_0x256f3c['include']=[{'all':!![]}];}return db['VoiceExtension']['findAll'](_0x256f3c);})[_0xadab('0x13')](function(_0x320674){_0x48e2f2[_0xadab('0x3b')]=_0x320674;return _0x48e2f2;})[_0xadab('0x13')](respondWithFilteredResult(_0x5c790f,_0x256f3c))['catch'](handleError(_0x5c790f,null));};exports[_0xadab('0x3c')]=function(_0x553118,_0x2ba06f){var _0x4f7867={'raw':![],'where':{'id':_0x553118['params']['id']}},_0x5dc08a={};_0x5dc08a[_0xadab('0x2e')]=_[_0xadab('0x2a')](db[_0xadab('0x27')][_0xadab('0x3d')]);_0x5dc08a[_0xadab('0x2b')]=_[_0xadab('0x2a')](_0x553118['query']);_0x5dc08a[_0xadab('0x2c')]=_[_0xadab('0x2d')](_0x5dc08a[_0xadab('0x2e')],_0x5dc08a[_0xadab('0x2b')]);_0x4f7867[_0xadab('0x2f')]=_[_0xadab('0x2d')](_0x5dc08a[_0xadab('0x2e')],qs[_0xadab('0x30')](_0x553118[_0xadab('0x2b')][_0xadab('0x30')]));_0x4f7867[_0xadab('0x2f')]=_0x4f7867[_0xadab('0x2f')][_0xadab('0x31')]?_0x4f7867['attributes']:_0x5dc08a[_0xadab('0x2e')];if(_0x553118[_0xadab('0x2b')][_0xadab('0x3e')]){_0x4f7867[_0xadab('0x3f')]=[{'all':!![]}];}_0x4f7867=_['merge']({},_0x4f7867,_0x553118['options']);return db['VoiceExtension'][_0xadab('0x1f')](_0x4f7867)[_0xadab('0x13')](handleEntityNotFound(_0x2ba06f,null))[_0xadab('0x13')](respondWithResult(_0x2ba06f,null))[_0xadab('0x40')](handleError(_0x2ba06f,null));};exports['destroy']=function(_0x168555,_0x451571){return db[_0xadab('0x27')]['find']({'where':{'id':_0x168555[_0xadab('0x41')]['id']}})[_0xadab('0x13')](handleEntityNotFound(_0x451571,null))[_0xadab('0x13')](removeEntity(_0x451571,null))[_0xadab('0x40')](handleError(_0x451571,null));};exports[_0xadab('0x42')]=function(_0x350210,_0x2bf474){if(_0x350210['body'][_0xadab('0x1e')]===_0xadab('0x17')&&!_[_0xadab('0x43')](_0x350210[_0xadab('0x44')]['exten'],'_')){_0x350210[_0xadab('0x44')][_0xadab('0x45')]='_'[_0xadab('0x46')](_0x350210['body'][_0xadab('0x45')]);}return db['VoiceExtension'][_0xadab('0x42')](_0x350210['body'],{'raw':![]})[_0xadab('0x13')](function(_0x41c6c0){var _0x4e60c6=_0x350210[_0xadab('0x47')]['get']({'plain':!![]});if(!_0x4e60c6)throw new Error(_0xadab('0x48'));if(_0x4e60c6[_0xadab('0x49')]===_0xadab('0x47')){var _0x25c3ae=_0x41c6c0[_0xadab('0x14')]({'plain':!![]});var _0x47c178=[{'name':_0xadab('0x15'),'value':'inbound'},{'name':_0xadab('0x4a'),'value':'outbound'},{'name':_0xadab('0x18'),'value':'internal'}];var _0x3bcdcb=_['find'](_0x47c178,['value',_0x25c3ae[_0xadab('0x1e')]])[_0xadab('0x20')];return db[_0xadab('0x4b')]['find']({'where':{'name':_0x3bcdcb,'userProfileId':_0x4e60c6[_0xadab('0x4c')]},'raw':!![]})['then'](function(_0x34607c){if(_0x34607c&&_0x34607c['autoAssociation']===0x0){return db[_0xadab('0x21')][_0xadab('0x42')]({'name':_0x25c3ae['name'],'resourceId':_0x25c3ae['id'],'type':_0x34607c[_0xadab('0x20')],'sectionId':_0x34607c['id']},{})[_0xadab('0x13')](function(){return _0x41c6c0;});}else{return _0x41c6c0;}})[_0xadab('0x40')](function(_0x451998){logger[_0xadab('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x451998);throw _0x451998;});}return _0x41c6c0;})[_0xadab('0x13')](respondWithResult(_0x2bf474,0xc9))[_0xadab('0x40')](handleError(_0x2bf474,null));};exports['update']=function(_0x39559f,_0x4f94bb){if(_0x39559f['body']['id']){delete _0x39559f[_0xadab('0x44')]['id'];}return db['VoiceExtension'][_0xadab('0x1f')]({'where':{'id':_0x39559f[_0xadab('0x41')]['id']}})[_0xadab('0x13')](handleEntityNotFound(_0x4f94bb,null))['then'](function(_0x3e7935){if(_0x3e7935){return db['VoiceExtension']['update'](_[_0xadab('0x37')](_0x39559f['body'],[_0xadab('0x45'),_0xadab('0x4d'),_0xadab('0x4e'),_0xadab('0x4f'),'cutdigits','mandatoryDisposition','alias']),{'where':{'context':_0x3e7935[_0xadab('0x4d')],'exten':_0x3e7935[_0xadab('0x45')]},'individualHooks':!![]})['then'](function(_0x3d0c78){return _0x3d0c78;});}return null;})[_0xadab('0x13')](respondWithStatusCode(_0x4f94bb,null))[_0xadab('0x40')](handleError(_0x4f94bb,null));};exports[_0xadab('0x50')]=function(_0x26adc0,_0x809bb3){var _0x249bb9=_0x26adc0[_0xadab('0x41')]['id'];var _0x564dd3=_0x26adc0[_0xadab('0x44')];var _0x5cb4c6=0xc8;var _0x410ba7=null;return db[_0xadab('0x51')][_0xadab('0x52')]({'isolationLevel':db['sequelize'][_0xadab('0x53')][_0xadab('0x54')][_0xadab('0x55')]},function(_0x12253c){return db[_0xadab('0x27')]['findOne']({'where':{'id':_0x249bb9},'transaction':_0x12253c})[_0xadab('0x13')](function(_0x1ff3f4){if(_0x1ff3f4){return db[_0xadab('0x27')][_0xadab('0x22')]({'where':{'VoiceExtensionId':_0x249bb9},'transaction':_0x12253c})[_0xadab('0x13')](function(){var _0x22c43f=_[_0xadab('0x1b')](_0x564dd3,function(_0x469f5c){_0x469f5c[_0xadab('0x56')]=_0x249bb9;_0x469f5c[_0xadab('0x57')]=!![];return _0x469f5c;});return _0x1ff3f4['createRouting'](_0x22c43f);})['then'](function(_0x3113e9){return db['VoiceExtension']['bulkCreate'](_0x3113e9,{'transaction':_0x12253c});});}else{_0x5cb4c6=0x194;_0x410ba7=[];}});})[_0xadab('0x13')](function(){if(_0x5cb4c6!==0x194){return db['VoiceExtension'][_0xadab('0x58')]({'where':{'isApp':!![],'VoiceExtensionId':_0x249bb9},'order':_0xadab('0x59')})[_0xadab('0x13')](function(_0x551d9f){_0x410ba7=_0x551d9f;});}})[_0xadab('0x40')](function(_0x427356){_0x5cb4c6=0x1f4;logger['error'](_0x427356['stack']);if(_0x427356['name']){delete _0x427356['name'];}_0x410ba7=_0x427356;})[_0xadab('0x5a')](function(){if(_0x410ba7===null){_0x809bb3['sendStatus'](_0x5cb4c6);}else{if(_0x5cb4c6===0x1f4){_0x809bb3[_0xadab('0xa')](_0x5cb4c6)[_0xadab('0x25')](_0x410ba7);}else{_0x809bb3[_0xadab('0xa')](_0x5cb4c6)['json'](_0x410ba7);}}});};