860ba1fae6b4654d99353aba1c6475ad2c0c5247
[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 _0x2c0a=['intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','create','body','outbound','concat','exten','user','get','role','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','context','description','cutdigits','mandatoryDisposition','alias','addApplications','transaction','Transaction','ISOLATION_LEVELS','findOne','VoiceExtensionId','createRouting','bulkCreate','cast(priority\x20as\x20unsigned)','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','sendStatus','status','end','json','undefined','limit','count','offset','set','destroy','then','InboundRoutes','inbound','OutboundRoutes','InternalRoutes','internal','filter','ignore','map','value','includes','type','find','name','stack','send','index','VoiceExtension','fieldName','key','model','query','attributes'];(function(_0x39599b,_0x5688a8){var _0x577fb7=function(_0x42e290){while(--_0x42e290){_0x39599b['push'](_0x39599b['shift']());}};_0x577fb7(++_0x5688a8);}(_0x2c0a,0xe8));var _0xa2c0=function(_0x48cb1f,_0x5ca68d){_0x48cb1f=_0x48cb1f-0x0;var _0x172c4d=_0x2c0a[_0x48cb1f];return _0x172c4d;};'use strict';var _=require(_0xa2c0('0x0'));var Redis=require(_0xa2c0('0x1'));var qs=require(_0xa2c0('0x2'));var logger=require(_0xa2c0('0x3'))(_0xa2c0('0x4'));var config=require('../../config/environment');var db=require(_0xa2c0('0x5'))['db'];config[_0xa2c0('0x6')]=_[_0xa2c0('0x7')](config[_0xa2c0('0x6')],{'host':_0xa2c0('0x8'),'port':0x18eb});var socket=require(_0xa2c0('0x9'))(new Redis(config['redis']));require(_0xa2c0('0xa'))['register'](socket);function respondWithStatusCode(_0x18f6c2,_0x29ea10){_0x29ea10=_0x29ea10||0xcc;return function(_0x14922f){if(_0x14922f){return _0x18f6c2[_0xa2c0('0xb')](_0x29ea10);}return _0x18f6c2[_0xa2c0('0xc')](_0x29ea10)[_0xa2c0('0xd')]();};}function respondWithResult(_0x709acd,_0x27417f){_0x27417f=_0x27417f||0xc8;return function(_0x42ece1){if(_0x42ece1){return _0x709acd[_0xa2c0('0xc')](_0x27417f)[_0xa2c0('0xe')](_0x42ece1);}};}function respondWithFilteredResult(_0x1275b7,_0x5e8b7b){return function(_0x1b206f){if(_0x1b206f){var _0xef2239=typeof _0x5e8b7b['offset']===_0xa2c0('0xf')&&typeof _0x5e8b7b[_0xa2c0('0x10')]===_0xa2c0('0xf');var _0x55f5d9=_0x1b206f[_0xa2c0('0x11')];var _0x54c26a=_0xef2239?0x0:_0x5e8b7b[_0xa2c0('0x12')];var _0x5a635b=_0xef2239?_0x1b206f[_0xa2c0('0x11')]:_0x5e8b7b[_0xa2c0('0x12')]+_0x5e8b7b[_0xa2c0('0x10')];var _0x27a881;if(_0x5a635b>=_0x55f5d9){_0x5a635b=_0x55f5d9;_0x27a881=0xc8;}else{_0x27a881=0xce;}_0x1275b7[_0xa2c0('0xc')](_0x27a881);return _0x1275b7[_0xa2c0('0x13')]('Content-Range',_0x54c26a+'-'+_0x5a635b+'/'+_0x55f5d9)[_0xa2c0('0xe')](_0x1b206f);}return null;};}function removeEntity(_0x447aa3){return function(_0x5dcdb3){if(_0x5dcdb3){return _0x5dcdb3[_0xa2c0('0x14')]()[_0xa2c0('0x15')](function(){var _0x3ec099=_0x5dcdb3['get']({'plain':!![]});var _0x37ba11=[{'name':_0xa2c0('0x16'),'value':_0xa2c0('0x17'),'ignore':![]},{'name':_0xa2c0('0x18'),'value':'outbound','ignore':![]},{'name':_0xa2c0('0x19'),'value':_0xa2c0('0x1a'),'ignore':![]}];var _0x1fd322=_(_0x37ba11)[_0xa2c0('0x1b')](_0xa2c0('0x1c'))[_0xa2c0('0x1d')](_0xa2c0('0x1e'))[_0xa2c0('0x1e')]();if(_[_0xa2c0('0x1f')](_0x1fd322,_0x3ec099[_0xa2c0('0x20')])){return;}var _0x509f1d=_[_0xa2c0('0x21')](_0x37ba11,[_0xa2c0('0x1e'),_0x3ec099[_0xa2c0('0x20')]])[_0xa2c0('0x22')];return db['UserProfileResource'][_0xa2c0('0x14')]({'where':{'type':_0x509f1d,'resourceId':_0x3ec099['id']}})[_0xa2c0('0x15')](function(){return _0x5dcdb3;});})[_0xa2c0('0x15')](function(){_0x447aa3[_0xa2c0('0xc')](0xcc)[_0xa2c0('0xd')]();});}};}function handleEntityNotFound(_0x35c93b){return function(_0x18f293){if(!_0x18f293){_0x35c93b['sendStatus'](0x194);}return _0x18f293;};}function handleError(_0x15460a,_0x4892ca){_0x4892ca=_0x4892ca||0x1f4;return function(_0x4d205d){logger['error'](_0x4d205d[_0xa2c0('0x23')]);if(_0x4d205d[_0xa2c0('0x22')]){delete _0x4d205d['name'];}_0x15460a[_0xa2c0('0xc')](_0x4892ca)[_0xa2c0('0x24')](_0x4d205d);};}exports[_0xa2c0('0x25')]=function(_0x1187ee,_0x5b9047){var _0x4aa426={},_0xad1d80={},_0x3d21d2={'count':0x0,'rows':[]};var _0x147352=_[_0xa2c0('0x1d')](db[_0xa2c0('0x26')]['rawAttributes'],function(_0x51eba2){return{'name':_0x51eba2[_0xa2c0('0x27')],'type':_0x51eba2[_0xa2c0('0x20')][_0xa2c0('0x28')]};});_0xad1d80[_0xa2c0('0x29')]=_['map'](_0x147352,_0xa2c0('0x22'));_0xad1d80[_0xa2c0('0x2a')]=_['keys'](_0x1187ee[_0xa2c0('0x2a')]);_0xad1d80['filters']=_['intersection'](_0xad1d80[_0xa2c0('0x29')],_0xad1d80[_0xa2c0('0x2a')]);_0x4aa426[_0xa2c0('0x2b')]=_[_0xa2c0('0x2c')](_0xad1d80[_0xa2c0('0x29')],qs[_0xa2c0('0x2d')](_0x1187ee[_0xa2c0('0x2a')]['fields']));_0x4aa426[_0xa2c0('0x2b')]=_0x4aa426[_0xa2c0('0x2b')][_0xa2c0('0x2e')]?_0x4aa426[_0xa2c0('0x2b')]:_0xad1d80[_0xa2c0('0x29')];if(!_0x1187ee['query'][_0xa2c0('0x2f')](_0xa2c0('0x30'))){_0x4aa426[_0xa2c0('0x10')]=qs[_0xa2c0('0x10')](_0x1187ee[_0xa2c0('0x2a')][_0xa2c0('0x10')]);_0x4aa426[_0xa2c0('0x12')]=qs[_0xa2c0('0x12')](_0x1187ee[_0xa2c0('0x2a')][_0xa2c0('0x12')]);}_0x4aa426[_0xa2c0('0x31')]=qs[_0xa2c0('0x32')](_0x1187ee[_0xa2c0('0x2a')]['sort']);_0x4aa426[_0xa2c0('0x33')]=qs['filters'](_[_0xa2c0('0x34')](_0x1187ee[_0xa2c0('0x2a')],_0xad1d80[_0xa2c0('0x35')]),_0x147352);if(_0x1187ee['query'][_0xa2c0('0x1b')]){_0x4aa426['where']=_[_0xa2c0('0x36')](_0x4aa426[_0xa2c0('0x33')],{'$or':_['map'](_0x147352,function(_0x4bd473){if(_0x4bd473[_0xa2c0('0x20')]!==_0xa2c0('0x37')){var _0x3dd9ca={};_0x3dd9ca[_0x4bd473[_0xa2c0('0x22')]]={'$like':'%'+_0x1187ee[_0xa2c0('0x2a')][_0xa2c0('0x1b')]+'%'};return _0x3dd9ca;}})});}_0x4aa426=_[_0xa2c0('0x36')]({},_0x4aa426,_0x1187ee[_0xa2c0('0x38')]);var _0xb379bf={'where':_0x4aa426['where']};return db[_0xa2c0('0x26')][_0xa2c0('0x11')](_0xb379bf)['then'](function(_0x1dbe95){_0x3d21d2[_0xa2c0('0x11')]=_0x1dbe95;if(_0x1187ee['query'][_0xa2c0('0x39')]){_0x4aa426['include']=[{'all':!![]}];}return db[_0xa2c0('0x26')][_0xa2c0('0x3a')](_0x4aa426);})[_0xa2c0('0x15')](function(_0x2725de){_0x3d21d2[_0xa2c0('0x3b')]=_0x2725de;return _0x3d21d2;})['then'](respondWithFilteredResult(_0x5b9047,_0x4aa426))[_0xa2c0('0x3c')](handleError(_0x5b9047,null));};exports[_0xa2c0('0x3d')]=function(_0x5188e6,_0x4949e9){var _0x22bc1e={'raw':![],'where':{'id':_0x5188e6[_0xa2c0('0x3e')]['id']}},_0x2c6e46={};_0x2c6e46[_0xa2c0('0x29')]=_[_0xa2c0('0x3f')](db[_0xa2c0('0x26')]['rawAttributes']);_0x2c6e46[_0xa2c0('0x2a')]=_[_0xa2c0('0x3f')](_0x5188e6[_0xa2c0('0x2a')]);_0x2c6e46[_0xa2c0('0x35')]=_[_0xa2c0('0x2c')](_0x2c6e46[_0xa2c0('0x29')],_0x2c6e46[_0xa2c0('0x2a')]);_0x22bc1e[_0xa2c0('0x2b')]=_[_0xa2c0('0x2c')](_0x2c6e46[_0xa2c0('0x29')],qs['fields'](_0x5188e6['query'][_0xa2c0('0x2d')]));_0x22bc1e[_0xa2c0('0x2b')]=_0x22bc1e[_0xa2c0('0x2b')][_0xa2c0('0x2e')]?_0x22bc1e[_0xa2c0('0x2b')]:_0x2c6e46[_0xa2c0('0x29')];if(_0x5188e6['query'][_0xa2c0('0x39')]){_0x22bc1e['include']=[{'all':!![]}];}_0x22bc1e=_['merge']({},_0x22bc1e,_0x5188e6['options']);return db['VoiceExtension'][_0xa2c0('0x21')](_0x22bc1e)['then'](handleEntityNotFound(_0x4949e9,null))[_0xa2c0('0x15')](respondWithResult(_0x4949e9,null))[_0xa2c0('0x3c')](handleError(_0x4949e9,null));};exports['destroy']=function(_0x3a9d5e,_0x5c214e){return db[_0xa2c0('0x26')]['find']({'where':{'id':_0x3a9d5e[_0xa2c0('0x3e')]['id']}})[_0xa2c0('0x15')](handleEntityNotFound(_0x5c214e,null))[_0xa2c0('0x15')](removeEntity(_0x5c214e,null))[_0xa2c0('0x3c')](handleError(_0x5c214e,null));};exports[_0xa2c0('0x40')]=function(_0x1057e0,_0x5e23b0){if(_0x1057e0[_0xa2c0('0x41')][_0xa2c0('0x20')]===_0xa2c0('0x42')&&!_['startsWith'](_0x1057e0[_0xa2c0('0x41')]['exten'],'_')){_0x1057e0[_0xa2c0('0x41')]['exten']='_'[_0xa2c0('0x43')](_0x1057e0[_0xa2c0('0x41')][_0xa2c0('0x44')]);}return db[_0xa2c0('0x26')][_0xa2c0('0x40')](_0x1057e0[_0xa2c0('0x41')],{'raw':![]})[_0xa2c0('0x15')](function(_0x277518){var _0xb6cdc0=_0x1057e0[_0xa2c0('0x45')][_0xa2c0('0x46')]({'plain':!![]});if(!_0xb6cdc0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xb6cdc0[_0xa2c0('0x47')]===_0xa2c0('0x45')){var _0x1f6e66=_0x277518[_0xa2c0('0x46')]({'plain':!![]});var _0x197121=[{'name':_0xa2c0('0x16'),'value':_0xa2c0('0x17')},{'name':_0xa2c0('0x18'),'value':_0xa2c0('0x42')},{'name':'InternalRoutes','value':_0xa2c0('0x1a')}];var _0xde4eec=_[_0xa2c0('0x21')](_0x197121,[_0xa2c0('0x1e'),_0x1f6e66[_0xa2c0('0x20')]])['name'];return db['UserProfileSection'][_0xa2c0('0x21')]({'where':{'name':_0xde4eec,'userProfileId':_0xb6cdc0[_0xa2c0('0x48')]},'raw':!![]})[_0xa2c0('0x15')](function(_0x1e3964){if(_0x1e3964&&_0x1e3964[_0xa2c0('0x49')]===0x0){return db[_0xa2c0('0x4a')][_0xa2c0('0x40')]({'name':_0x1f6e66['name'],'resourceId':_0x1f6e66['id'],'type':_0x1e3964[_0xa2c0('0x22')],'sectionId':_0x1e3964['id']},{})['then'](function(){return _0x277518;});}else{return _0x277518;}})['catch'](function(_0x347079){logger[_0xa2c0('0x4b')](_0xa2c0('0x4c'),_0x347079);throw _0x347079;});}return _0x277518;})[_0xa2c0('0x15')](respondWithResult(_0x5e23b0,0xc9))[_0xa2c0('0x3c')](handleError(_0x5e23b0,null));};exports[_0xa2c0('0x4d')]=function(_0x216fee,_0x105a5c){if(_0x216fee['body']['id']){delete _0x216fee[_0xa2c0('0x41')]['id'];}return db[_0xa2c0('0x26')]['find']({'where':{'id':_0x216fee['params']['id']}})['then'](handleEntityNotFound(_0x105a5c,null))[_0xa2c0('0x15')](function(_0xea5926){if(_0xea5926){return db[_0xa2c0('0x26')][_0xa2c0('0x4d')](_[_0xa2c0('0x34')](_0x216fee[_0xa2c0('0x41')],[_0xa2c0('0x44'),_0xa2c0('0x4e'),_0xa2c0('0x4f'),'recordingFormat',_0xa2c0('0x50'),_0xa2c0('0x51'),_0xa2c0('0x52')]),{'where':{'context':_0xea5926[_0xa2c0('0x4e')],'exten':_0xea5926['exten']},'individualHooks':!![]})[_0xa2c0('0x15')](function(_0x5bc4e3){return _0x5bc4e3;});}return null;})[_0xa2c0('0x15')](respondWithStatusCode(_0x105a5c,null))[_0xa2c0('0x3c')](handleError(_0x105a5c,null));};exports[_0xa2c0('0x53')]=function(_0x3ba29d,_0x7e787f){var _0x1aa65f=_0x3ba29d[_0xa2c0('0x3e')]['id'];var _0x482733=_0x3ba29d[_0xa2c0('0x41')];var _0xdd35f4=0xc8;var _0x5edb94=null;return db['sequelize'][_0xa2c0('0x54')]({'isolationLevel':db['sequelize'][_0xa2c0('0x55')][_0xa2c0('0x56')]['READ_COMMITTED']},function(_0x1af591){return db[_0xa2c0('0x26')][_0xa2c0('0x57')]({'where':{'id':_0x1aa65f},'transaction':_0x1af591})['then'](function(_0x5287d4){if(_0x5287d4){return db[_0xa2c0('0x26')]['destroy']({'where':{'VoiceExtensionId':_0x1aa65f},'transaction':_0x1af591})[_0xa2c0('0x15')](function(){var _0x4c9e67=_['map'](_0x482733,function(_0x546f1b){_0x546f1b[_0xa2c0('0x58')]=_0x1aa65f;_0x546f1b['isApp']=!![];return _0x546f1b;});return _0x5287d4[_0xa2c0('0x59')](_0x4c9e67);})[_0xa2c0('0x15')](function(_0x39d0b1){return db[_0xa2c0('0x26')][_0xa2c0('0x5a')](_0x39d0b1,{'transaction':_0x1af591});});}else{_0xdd35f4=0x194;_0x5edb94=[];}});})[_0xa2c0('0x15')](function(){if(_0xdd35f4!==0x194){return db[_0xa2c0('0x26')]['findAndCountAll']({'where':{'isApp':!![],'VoiceExtensionId':_0x1aa65f},'order':_0xa2c0('0x5b')})[_0xa2c0('0x15')](function(_0x1e75d5){_0x5edb94=_0x1e75d5;});}})['catch'](function(_0x19d183){_0xdd35f4=0x1f4;logger[_0xa2c0('0x4b')](_0x19d183[_0xa2c0('0x23')]);if(_0x19d183[_0xa2c0('0x22')]){delete _0x19d183[_0xa2c0('0x22')];}_0x5edb94=_0x19d183;})['finally'](function(){if(_0x5edb94===null){_0x7e787f['sendStatus'](_0xdd35f4);}else{if(_0xdd35f4===0x1f4){_0x7e787f[_0xa2c0('0xc')](_0xdd35f4)['send'](_0x5edb94);}else{_0x7e787f[_0xa2c0('0xc')](_0xdd35f4)[_0xa2c0('0xe')](_0x5edb94);}}});};