a4e03e6b2c60c4654f1e785993a9305344451d8c
[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 _0x341a=['end','json','offset','undefined','limit','count','Content-Range','destroy','then','InboundRoutes','inbound','OutboundRoutes','outbound','internal','filter','value','includes','type','name','sendStatus','error','stack','send','index','map','VoiceExtension','rawAttributes','key','model','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','options','includeAll','include','findAll','rows','params','keys','find','catch','create','body','startsWith','exten','concat','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','InternalRoutes','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','recordingFormat','cutdigits','alias','context','sequelize','Transaction','ISOLATION_LEVELS','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','lodash','ioredis','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','status'];(function(_0x367174,_0x52fc07){var _0x589341=function(_0x300bff){while(--_0x300bff){_0x367174['push'](_0x367174['shift']());}};_0x589341(++_0x52fc07);}(_0x341a,0xf9));var _0xa341=function(_0x111bb4,_0x34eef2){_0x111bb4=_0x111bb4-0x0;var _0xa0c8e1=_0x341a[_0x111bb4];return _0xa0c8e1;};'use strict';var _=require(_0xa341('0x0'));var Redis=require(_0xa341('0x1'));var qs=require('../../components/parsers/qs');var logger=require(_0xa341('0x2'))('api');var config=require(_0xa341('0x3'));var db=require(_0xa341('0x4'))['db'];config[_0xa341('0x5')]=_[_0xa341('0x6')](config[_0xa341('0x5')],{'host':_0xa341('0x7'),'port':0x18eb});var socket=require(_0xa341('0x8'))(new Redis(config['redis']));require(_0xa341('0x9'))[_0xa341('0xa')](socket);function respondWithStatusCode(_0xf17208,_0x5b56bc){_0x5b56bc=_0x5b56bc||0xcc;return function(_0xd127e9){if(_0xd127e9){return _0xf17208['sendStatus'](_0x5b56bc);}return _0xf17208[_0xa341('0xb')](_0x5b56bc)[_0xa341('0xc')]();};}function respondWithResult(_0x589690,_0x49dee5){_0x49dee5=_0x49dee5||0xc8;return function(_0x2dde85){if(_0x2dde85){return _0x589690[_0xa341('0xb')](_0x49dee5)[_0xa341('0xd')](_0x2dde85);}};}function respondWithFilteredResult(_0x245776,_0xe4eb14){return function(_0x484543){if(_0x484543){var _0x58323e=typeof _0xe4eb14[_0xa341('0xe')]===_0xa341('0xf')&&typeof _0xe4eb14[_0xa341('0x10')]===_0xa341('0xf');var _0x19a516=_0x484543[_0xa341('0x11')];var _0x16b22c=_0x58323e?0x0:_0xe4eb14[_0xa341('0xe')];var _0x4c66a1=_0x58323e?_0x484543[_0xa341('0x11')]:_0xe4eb14[_0xa341('0xe')]+_0xe4eb14['limit'];var _0x4facc3;if(_0x4c66a1>=_0x19a516){_0x4c66a1=_0x19a516;_0x4facc3=0xc8;}else{_0x4facc3=0xce;}_0x245776[_0xa341('0xb')](_0x4facc3);return _0x245776['set'](_0xa341('0x12'),_0x16b22c+'-'+_0x4c66a1+'/'+_0x19a516)[_0xa341('0xd')](_0x484543);}return null;};}function removeEntity(_0x38f021){return function(_0x2d2e4e){if(_0x2d2e4e){return _0x2d2e4e[_0xa341('0x13')]()[_0xa341('0x14')](function(){var _0x580f31=_0x2d2e4e['get']({'plain':!![]});var _0x23d69c=[{'name':_0xa341('0x15'),'value':_0xa341('0x16'),'ignore':![]},{'name':_0xa341('0x17'),'value':_0xa341('0x18'),'ignore':![]},{'name':'InternalRoutes','value':_0xa341('0x19'),'ignore':![]}];var _0x1b14f1=_(_0x23d69c)[_0xa341('0x1a')]('ignore')['map'](_0xa341('0x1b'))['value']();if(_[_0xa341('0x1c')](_0x1b14f1,_0x580f31[_0xa341('0x1d')])){return;}var _0x2932c8=_['find'](_0x23d69c,[_0xa341('0x1b'),_0x580f31[_0xa341('0x1d')]])[_0xa341('0x1e')];return db['UserProfileResource'][_0xa341('0x13')]({'where':{'type':_0x2932c8,'resourceId':_0x580f31['id']}})[_0xa341('0x14')](function(){return _0x2d2e4e;});})[_0xa341('0x14')](function(){_0x38f021['status'](0xcc)[_0xa341('0xc')]();});}};}function handleEntityNotFound(_0x217e99){return function(_0x504316){if(!_0x504316){_0x217e99[_0xa341('0x1f')](0x194);}return _0x504316;};}function handleError(_0x583c75,_0x58f975){_0x58f975=_0x58f975||0x1f4;return function(_0x1119e1){logger[_0xa341('0x20')](_0x1119e1[_0xa341('0x21')]);if(_0x1119e1[_0xa341('0x1e')]){delete _0x1119e1[_0xa341('0x1e')];}_0x583c75[_0xa341('0xb')](_0x58f975)[_0xa341('0x22')](_0x1119e1);};}exports[_0xa341('0x23')]=function(_0x41ad08,_0x2e7b16){var _0x5030a0={},_0x156f76={},_0x4238c5={'count':0x0,'rows':[]};var _0x88bbf1=_[_0xa341('0x24')](db[_0xa341('0x25')][_0xa341('0x26')],function(_0x2cef2f){return{'name':_0x2cef2f['fieldName'],'type':_0x2cef2f[_0xa341('0x1d')][_0xa341('0x27')]};});_0x156f76[_0xa341('0x28')]=_[_0xa341('0x24')](_0x88bbf1,_0xa341('0x1e'));_0x156f76['query']=_['keys'](_0x41ad08['query']);_0x156f76[_0xa341('0x29')]=_[_0xa341('0x2a')](_0x156f76[_0xa341('0x28')],_0x156f76[_0xa341('0x2b')]);_0x5030a0[_0xa341('0x2c')]=_[_0xa341('0x2a')](_0x156f76[_0xa341('0x28')],qs[_0xa341('0x2d')](_0x41ad08[_0xa341('0x2b')][_0xa341('0x2d')]));_0x5030a0['attributes']=_0x5030a0[_0xa341('0x2c')][_0xa341('0x2e')]?_0x5030a0['attributes']:_0x156f76[_0xa341('0x28')];if(!_0x41ad08[_0xa341('0x2b')][_0xa341('0x2f')](_0xa341('0x30'))){_0x5030a0['limit']=qs[_0xa341('0x10')](_0x41ad08[_0xa341('0x2b')]['limit']);_0x5030a0[_0xa341('0xe')]=qs[_0xa341('0xe')](_0x41ad08['query'][_0xa341('0xe')]);}_0x5030a0[_0xa341('0x31')]=qs['sort'](_0x41ad08[_0xa341('0x2b')][_0xa341('0x32')]);_0x5030a0[_0xa341('0x33')]=qs['filters'](_['pick'](_0x41ad08[_0xa341('0x2b')],_0x156f76[_0xa341('0x29')]),_0x88bbf1);if(_0x41ad08[_0xa341('0x2b')][_0xa341('0x1a')]){_0x5030a0[_0xa341('0x33')]=_[_0xa341('0x34')](_0x5030a0[_0xa341('0x33')],{'$or':_['map'](_0x88bbf1,function(_0x146c98){if(_0x146c98[_0xa341('0x1d')]!=='VIRTUAL'){var _0x9313b7={};_0x9313b7[_0x146c98['name']]={'$like':'%'+_0x41ad08[_0xa341('0x2b')][_0xa341('0x1a')]+'%'};return _0x9313b7;}})});}_0x5030a0=_[_0xa341('0x34')]({},_0x5030a0,_0x41ad08[_0xa341('0x35')]);var _0x3fb35a={'where':_0x5030a0['where']};return db[_0xa341('0x25')]['count'](_0x3fb35a)['then'](function(_0x3c46e5){_0x4238c5[_0xa341('0x11')]=_0x3c46e5;if(_0x41ad08['query'][_0xa341('0x36')]){_0x5030a0[_0xa341('0x37')]=[{'all':!![]}];}return db[_0xa341('0x25')][_0xa341('0x38')](_0x5030a0);})[_0xa341('0x14')](function(_0x1f38ff){_0x4238c5[_0xa341('0x39')]=_0x1f38ff;return _0x4238c5;})[_0xa341('0x14')](respondWithFilteredResult(_0x2e7b16,_0x5030a0))['catch'](handleError(_0x2e7b16,null));};exports['show']=function(_0x5d936f,_0x56bc51){var _0x1e1ced={'raw':![],'where':{'id':_0x5d936f[_0xa341('0x3a')]['id']}},_0xb40561={};_0xb40561['model']=_[_0xa341('0x3b')](db[_0xa341('0x25')][_0xa341('0x26')]);_0xb40561[_0xa341('0x2b')]=_[_0xa341('0x3b')](_0x5d936f[_0xa341('0x2b')]);_0xb40561['filters']=_[_0xa341('0x2a')](_0xb40561['model'],_0xb40561[_0xa341('0x2b')]);_0x1e1ced['attributes']=_['intersection'](_0xb40561[_0xa341('0x28')],qs[_0xa341('0x2d')](_0x5d936f['query'][_0xa341('0x2d')]));_0x1e1ced['attributes']=_0x1e1ced[_0xa341('0x2c')]['length']?_0x1e1ced['attributes']:_0xb40561[_0xa341('0x28')];if(_0x5d936f[_0xa341('0x2b')][_0xa341('0x36')]){_0x1e1ced[_0xa341('0x37')]=[{'all':!![]}];}_0x1e1ced=_[_0xa341('0x34')]({},_0x1e1ced,_0x5d936f['options']);return db[_0xa341('0x25')]['find'](_0x1e1ced)['then'](handleEntityNotFound(_0x56bc51,null))[_0xa341('0x14')](respondWithResult(_0x56bc51,null))['catch'](handleError(_0x56bc51,null));};exports[_0xa341('0x13')]=function(_0x1f7f92,_0x24ea88){return db[_0xa341('0x25')][_0xa341('0x3c')]({'where':{'id':_0x1f7f92['params']['id']}})['then'](handleEntityNotFound(_0x24ea88,null))['then'](removeEntity(_0x24ea88,null))[_0xa341('0x3d')](handleError(_0x24ea88,null));};exports[_0xa341('0x3e')]=function(_0xd68610,_0x565812){if(_0xd68610[_0xa341('0x3f')][_0xa341('0x1d')]===_0xa341('0x18')&&!_[_0xa341('0x40')](_0xd68610[_0xa341('0x3f')][_0xa341('0x41')],'_')){_0xd68610[_0xa341('0x3f')]['exten']='_'[_0xa341('0x42')](_0xd68610[_0xa341('0x3f')]['exten']);}return db[_0xa341('0x25')][_0xa341('0x3e')](_0xd68610[_0xa341('0x3f')],{'raw':![]})[_0xa341('0x14')](function(_0x3b3169){var _0x2e59dc=_0xd68610[_0xa341('0x43')][_0xa341('0x44')]({'plain':!![]});if(!_0x2e59dc)throw new Error(_0xa341('0x45'));if(_0x2e59dc[_0xa341('0x46')]==='user'){var _0x4ecfd2=_0x3b3169[_0xa341('0x44')]({'plain':!![]});var _0x126f83=[{'name':_0xa341('0x15'),'value':_0xa341('0x16')},{'name':_0xa341('0x17'),'value':'outbound'},{'name':_0xa341('0x47'),'value':_0xa341('0x19')}];var _0x4f2e3d=_[_0xa341('0x3c')](_0x126f83,['value',_0x4ecfd2[_0xa341('0x1d')]])[_0xa341('0x1e')];return db['UserProfileSection']['find']({'where':{'name':_0x4f2e3d,'userProfileId':_0x2e59dc[_0xa341('0x48')]},'raw':!![]})[_0xa341('0x14')](function(_0x51af7d){if(_0x51af7d&&_0x51af7d['autoAssociation']===0x0){return db[_0xa341('0x49')][_0xa341('0x3e')]({'name':_0x4ecfd2[_0xa341('0x1e')],'resourceId':_0x4ecfd2['id'],'type':_0x51af7d[_0xa341('0x1e')],'sectionId':_0x51af7d['id']},{})[_0xa341('0x14')](function(){return _0x3b3169;});}else{return _0x3b3169;}})[_0xa341('0x3d')](function(_0xabd01b){logger[_0xa341('0x20')](_0xa341('0x4a'),_0xabd01b);throw _0xabd01b;});}return _0x3b3169;})[_0xa341('0x14')](respondWithResult(_0x565812,0xc9))[_0xa341('0x3d')](handleError(_0x565812,null));};exports[_0xa341('0x4b')]=function(_0x17e59e,_0x48b0d8){if(_0x17e59e[_0xa341('0x3f')]['id']){delete _0x17e59e['body']['id'];}return db[_0xa341('0x25')][_0xa341('0x3c')]({'where':{'id':_0x17e59e[_0xa341('0x3a')]['id']}})['then'](handleEntityNotFound(_0x48b0d8,null))[_0xa341('0x14')](function(_0x420a10){if(_0x420a10){return db[_0xa341('0x25')]['update'](_['pick'](_0x17e59e[_0xa341('0x3f')],[_0xa341('0x41'),'context','description',_0xa341('0x4c'),_0xa341('0x4d'),'mandatoryDisposition',_0xa341('0x4e')]),{'where':{'context':_0x420a10[_0xa341('0x4f')],'exten':_0x420a10['exten']},'individualHooks':!![]})[_0xa341('0x14')](function(_0x15ecff){return _0x15ecff;});}return null;})[_0xa341('0x14')](respondWithStatusCode(_0x48b0d8,null))['catch'](handleError(_0x48b0d8,null));};exports['addApplications']=function(_0x1a0442,_0x16c13e){var _0xa0ec35=_0x1a0442[_0xa341('0x3a')]['id'];var _0x27689b=_0x1a0442[_0xa341('0x3f')];var _0x1dfc86=0xc8;var _0x340693=null;return db[_0xa341('0x50')]['transaction']({'isolationLevel':db['sequelize'][_0xa341('0x51')][_0xa341('0x52')]['READ_COMMITTED']},function(_0x5c3ebb){return db[_0xa341('0x25')]['findOne']({'where':{'id':_0xa0ec35},'transaction':_0x5c3ebb})[_0xa341('0x14')](function(_0x3bde78){if(_0x3bde78){return db[_0xa341('0x25')][_0xa341('0x13')]({'where':{'VoiceExtensionId':_0xa0ec35},'transaction':_0x5c3ebb})[_0xa341('0x14')](function(){var _0x2d69ac=_[_0xa341('0x24')](_0x27689b,function(_0x52ba4e){_0x52ba4e['VoiceExtensionId']=_0xa0ec35;_0x52ba4e['isApp']=!![];return _0x52ba4e;});return _0x3bde78[_0xa341('0x53')](_0x2d69ac);})[_0xa341('0x14')](function(_0x52f8f7){return db['VoiceExtension'][_0xa341('0x54')](_0x52f8f7,{'transaction':_0x5c3ebb});});}else{_0x1dfc86=0x194;_0x340693=[];}});})['then'](function(){if(_0x1dfc86!==0x194){return db[_0xa341('0x25')][_0xa341('0x55')]({'where':{'isApp':!![],'VoiceExtensionId':_0xa0ec35},'order':_0xa341('0x56')})[_0xa341('0x14')](function(_0x5754b4){_0x340693=_0x5754b4;});}})[_0xa341('0x3d')](function(_0x290f30){_0x1dfc86=0x1f4;logger['error'](_0x290f30[_0xa341('0x21')]);if(_0x290f30[_0xa341('0x1e')]){delete _0x290f30[_0xa341('0x1e')];}_0x340693=_0x290f30;})['finally'](function(){if(_0x340693===null){_0x16c13e['sendStatus'](_0x1dfc86);}else{if(_0x1dfc86===0x1f4){_0x16c13e[_0xa341('0xb')](_0x1dfc86)[_0xa341('0x22')](_0x340693);}else{_0x16c13e[_0xa341('0xb')](_0x1dfc86)['json'](_0x340693);}}});};