Built motion from commit ce03bc3d.|2.5.39
[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 _0x0bce=['inbound','OutboundRoutes','outbound','InternalRoutes','internal','map','value','find','UserProfileResource','stack','name','send','index','VoiceExtension','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','pick','where','VIRTUAL','filter','merge','includeAll','include','findAll','rows','catch','show','params','options','create','body','exten','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','update','context','description','mandatoryDisposition','alias','addApplications','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','VoiceExtensionId','isApp','findAndCountAll','finally','ioredis','../../components/parsers/qs','api','../../config/environment','redis','defaults','localhost','./voiceExtension.socket','register','status','end','json','offset','undefined','limit','count','Content-Range','destroy','then','InboundRoutes'];(function(_0x4ea6af,_0x4aa32e){var _0x4cb1e6=function(_0xc9edd0){while(--_0xc9edd0){_0x4ea6af['push'](_0x4ea6af['shift']());}};_0x4cb1e6(++_0x4aa32e);}(_0x0bce,0x1f0));var _0xe0bc=function(_0x6c2433,_0x2fbbc1){_0x6c2433=_0x6c2433-0x0;var _0x19608=_0x0bce[_0x6c2433];return _0x19608;};'use strict';var _=require('lodash');var Redis=require(_0xe0bc('0x0'));var qs=require(_0xe0bc('0x1'));var logger=require('../../config/logger')(_0xe0bc('0x2'));var config=require(_0xe0bc('0x3'));var db=require('../../mysqldb')['db'];config[_0xe0bc('0x4')]=_[_0xe0bc('0x5')](config['redis'],{'host':_0xe0bc('0x6'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xe0bc('0x7'))[_0xe0bc('0x8')](socket);function respondWithStatusCode(_0x31c5cd,_0x1ac051){_0x1ac051=_0x1ac051||0xcc;return function(_0x29f688){if(_0x29f688){return _0x31c5cd['sendStatus'](_0x1ac051);}return _0x31c5cd[_0xe0bc('0x9')](_0x1ac051)[_0xe0bc('0xa')]();};}function respondWithResult(_0x407003,_0xbce6ea){_0xbce6ea=_0xbce6ea||0xc8;return function(_0x1c1835){if(_0x1c1835){return _0x407003[_0xe0bc('0x9')](_0xbce6ea)[_0xe0bc('0xb')](_0x1c1835);}};}function respondWithFilteredResult(_0x171a0b,_0x4dbba3){return function(_0x4daeb4){if(_0x4daeb4){var _0x30058b=typeof _0x4dbba3[_0xe0bc('0xc')]===_0xe0bc('0xd')&&typeof _0x4dbba3[_0xe0bc('0xe')]==='undefined';var _0x3d75e4=_0x4daeb4[_0xe0bc('0xf')];var _0x20cb3c=_0x30058b?0x0:_0x4dbba3['offset'];var _0x5c0d21=_0x30058b?_0x4daeb4[_0xe0bc('0xf')]:_0x4dbba3[_0xe0bc('0xc')]+_0x4dbba3['limit'];var _0x5abf9b;if(_0x5c0d21>=_0x3d75e4){_0x5c0d21=_0x3d75e4;_0x5abf9b=0xc8;}else{_0x5abf9b=0xce;}_0x171a0b[_0xe0bc('0x9')](_0x5abf9b);return _0x171a0b['set'](_0xe0bc('0x10'),_0x20cb3c+'-'+_0x5c0d21+'/'+_0x3d75e4)[_0xe0bc('0xb')](_0x4daeb4);}return null;};}function removeEntity(_0xe57dbf){return function(_0x4c2c7f){if(_0x4c2c7f){return _0x4c2c7f[_0xe0bc('0x11')]()[_0xe0bc('0x12')](function(){var _0x1c3b88=_0x4c2c7f['get']({'plain':!![]});var _0x30dcd6=[{'name':_0xe0bc('0x13'),'value':_0xe0bc('0x14'),'ignore':![]},{'name':_0xe0bc('0x15'),'value':_0xe0bc('0x16'),'ignore':![]},{'name':_0xe0bc('0x17'),'value':_0xe0bc('0x18'),'ignore':![]}];var _0x31a607=_(_0x30dcd6)['filter']('ignore')[_0xe0bc('0x19')](_0xe0bc('0x1a'))['value']();if(_['includes'](_0x31a607,_0x1c3b88['type'])){return;}var _0x406d5b=_[_0xe0bc('0x1b')](_0x30dcd6,['value',_0x1c3b88['type']])['name'];return db[_0xe0bc('0x1c')]['destroy']({'where':{'type':_0x406d5b,'resourceId':_0x1c3b88['id']}})[_0xe0bc('0x12')](function(){return _0x4c2c7f;});})['then'](function(){_0xe57dbf[_0xe0bc('0x9')](0xcc)[_0xe0bc('0xa')]();});}};}function handleEntityNotFound(_0x17ee9c){return function(_0x461c67){if(!_0x461c67){_0x17ee9c['sendStatus'](0x194);}return _0x461c67;};}function handleError(_0x3826b9,_0x46f47d){_0x46f47d=_0x46f47d||0x1f4;return function(_0x375ad7){logger['error'](_0x375ad7[_0xe0bc('0x1d')]);if(_0x375ad7[_0xe0bc('0x1e')]){delete _0x375ad7[_0xe0bc('0x1e')];}_0x3826b9[_0xe0bc('0x9')](_0x46f47d)[_0xe0bc('0x1f')](_0x375ad7);};}exports[_0xe0bc('0x20')]=function(_0x46badb,_0x512b98){var _0x44a079={},_0x39196c={},_0x3535fd={'count':0x0,'rows':[]};var _0x393406=_[_0xe0bc('0x19')](db[_0xe0bc('0x21')][_0xe0bc('0x22')],function(_0x3830c7){return{'name':_0x3830c7['fieldName'],'type':_0x3830c7[_0xe0bc('0x23')][_0xe0bc('0x24')]};});_0x39196c[_0xe0bc('0x25')]=_[_0xe0bc('0x19')](_0x393406,_0xe0bc('0x1e'));_0x39196c[_0xe0bc('0x26')]=_[_0xe0bc('0x27')](_0x46badb[_0xe0bc('0x26')]);_0x39196c[_0xe0bc('0x28')]=_[_0xe0bc('0x29')](_0x39196c['model'],_0x39196c[_0xe0bc('0x26')]);_0x44a079['attributes']=_[_0xe0bc('0x29')](_0x39196c[_0xe0bc('0x25')],qs[_0xe0bc('0x2a')](_0x46badb[_0xe0bc('0x26')][_0xe0bc('0x2a')]));_0x44a079[_0xe0bc('0x2b')]=_0x44a079[_0xe0bc('0x2b')][_0xe0bc('0x2c')]?_0x44a079[_0xe0bc('0x2b')]:_0x39196c[_0xe0bc('0x25')];if(!_0x46badb[_0xe0bc('0x26')][_0xe0bc('0x2d')]('nolimit')){_0x44a079[_0xe0bc('0xe')]=qs['limit'](_0x46badb[_0xe0bc('0x26')][_0xe0bc('0xe')]);_0x44a079[_0xe0bc('0xc')]=qs['offset'](_0x46badb[_0xe0bc('0x26')][_0xe0bc('0xc')]);}_0x44a079[_0xe0bc('0x2e')]=qs['sort'](_0x46badb[_0xe0bc('0x26')]['sort']);_0x44a079['where']=qs['filters'](_[_0xe0bc('0x2f')](_0x46badb['query'],_0x39196c[_0xe0bc('0x28')]),_0x393406);if(_0x46badb[_0xe0bc('0x26')]['filter']){_0x44a079[_0xe0bc('0x30')]=_['merge'](_0x44a079[_0xe0bc('0x30')],{'$or':_['map'](_0x393406,function(_0x3f66f8){if(_0x3f66f8[_0xe0bc('0x23')]!==_0xe0bc('0x31')){var _0x27dc66={};_0x27dc66[_0x3f66f8[_0xe0bc('0x1e')]]={'$like':'%'+_0x46badb[_0xe0bc('0x26')][_0xe0bc('0x32')]+'%'};return _0x27dc66;}})});}_0x44a079=_[_0xe0bc('0x33')]({},_0x44a079,_0x46badb['options']);var _0x282625={'where':_0x44a079[_0xe0bc('0x30')]};return db[_0xe0bc('0x21')][_0xe0bc('0xf')](_0x282625)[_0xe0bc('0x12')](function(_0x12f1fd){_0x3535fd['count']=_0x12f1fd;if(_0x46badb[_0xe0bc('0x26')][_0xe0bc('0x34')]){_0x44a079[_0xe0bc('0x35')]=[{'all':!![]}];}return db[_0xe0bc('0x21')][_0xe0bc('0x36')](_0x44a079);})[_0xe0bc('0x12')](function(_0x48fa03){_0x3535fd[_0xe0bc('0x37')]=_0x48fa03;return _0x3535fd;})[_0xe0bc('0x12')](respondWithFilteredResult(_0x512b98,_0x44a079))[_0xe0bc('0x38')](handleError(_0x512b98,null));};exports[_0xe0bc('0x39')]=function(_0x12a2a7,_0x3ec334){var _0x4765c1={'raw':![],'where':{'id':_0x12a2a7[_0xe0bc('0x3a')]['id']}},_0x222e84={};_0x222e84[_0xe0bc('0x25')]=_['keys'](db['VoiceExtension'][_0xe0bc('0x22')]);_0x222e84[_0xe0bc('0x26')]=_['keys'](_0x12a2a7[_0xe0bc('0x26')]);_0x222e84[_0xe0bc('0x28')]=_[_0xe0bc('0x29')](_0x222e84[_0xe0bc('0x25')],_0x222e84[_0xe0bc('0x26')]);_0x4765c1[_0xe0bc('0x2b')]=_['intersection'](_0x222e84[_0xe0bc('0x25')],qs[_0xe0bc('0x2a')](_0x12a2a7[_0xe0bc('0x26')][_0xe0bc('0x2a')]));_0x4765c1[_0xe0bc('0x2b')]=_0x4765c1['attributes'][_0xe0bc('0x2c')]?_0x4765c1['attributes']:_0x222e84[_0xe0bc('0x25')];if(_0x12a2a7[_0xe0bc('0x26')][_0xe0bc('0x34')]){_0x4765c1[_0xe0bc('0x35')]=[{'all':!![]}];}_0x4765c1=_[_0xe0bc('0x33')]({},_0x4765c1,_0x12a2a7[_0xe0bc('0x3b')]);return db['VoiceExtension']['find'](_0x4765c1)[_0xe0bc('0x12')](handleEntityNotFound(_0x3ec334,null))[_0xe0bc('0x12')](respondWithResult(_0x3ec334,null))['catch'](handleError(_0x3ec334,null));};exports['destroy']=function(_0x3d9db0,_0x3ac153){return db[_0xe0bc('0x21')][_0xe0bc('0x1b')]({'where':{'id':_0x3d9db0[_0xe0bc('0x3a')]['id']}})['then'](handleEntityNotFound(_0x3ac153,null))[_0xe0bc('0x12')](removeEntity(_0x3ac153,null))[_0xe0bc('0x38')](handleError(_0x3ac153,null));};exports[_0xe0bc('0x3c')]=function(_0x4f3b14,_0x55514f){if(_0x4f3b14[_0xe0bc('0x3d')][_0xe0bc('0x23')]===_0xe0bc('0x16')&&!_['startsWith'](_0x4f3b14[_0xe0bc('0x3d')][_0xe0bc('0x3e')],'_')){_0x4f3b14[_0xe0bc('0x3d')][_0xe0bc('0x3e')]='_'['concat'](_0x4f3b14[_0xe0bc('0x3d')]['exten']);}return db[_0xe0bc('0x21')][_0xe0bc('0x3c')](_0x4f3b14[_0xe0bc('0x3d')],{'raw':![]})[_0xe0bc('0x12')](function(_0x10eac3){var _0x3e8beb=_0x4f3b14[_0xe0bc('0x3f')][_0xe0bc('0x40')]({'plain':!![]});if(!_0x3e8beb)throw new Error(_0xe0bc('0x41'));if(_0x3e8beb[_0xe0bc('0x42')]===_0xe0bc('0x3f')){var _0x53afb0=_0x10eac3[_0xe0bc('0x40')]({'plain':!![]});var _0x1e84a3=[{'name':_0xe0bc('0x13'),'value':_0xe0bc('0x14')},{'name':_0xe0bc('0x15'),'value':'outbound'},{'name':'InternalRoutes','value':'internal'}];var _0x3f7c56=_['find'](_0x1e84a3,[_0xe0bc('0x1a'),_0x53afb0[_0xe0bc('0x23')]])['name'];return db[_0xe0bc('0x43')][_0xe0bc('0x1b')]({'where':{'name':_0x3f7c56,'userProfileId':_0x3e8beb[_0xe0bc('0x44')]},'raw':!![]})['then'](function(_0x1f66ab){if(_0x1f66ab&&_0x1f66ab[_0xe0bc('0x45')]===0x0){return db[_0xe0bc('0x1c')]['create']({'name':_0x53afb0[_0xe0bc('0x1e')],'resourceId':_0x53afb0['id'],'type':_0x1f66ab[_0xe0bc('0x1e')],'sectionId':_0x1f66ab['id']},{})['then'](function(){return _0x10eac3;});}else{return _0x10eac3;}})[_0xe0bc('0x38')](function(_0x53d4cb){logger[_0xe0bc('0x46')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x53d4cb);throw _0x53d4cb;});}return _0x10eac3;})[_0xe0bc('0x12')](respondWithResult(_0x55514f,0xc9))[_0xe0bc('0x38')](handleError(_0x55514f,null));};exports[_0xe0bc('0x47')]=function(_0x4d3678,_0x3eb4c5){if(_0x4d3678[_0xe0bc('0x3d')]['id']){delete _0x4d3678[_0xe0bc('0x3d')]['id'];}return db[_0xe0bc('0x21')][_0xe0bc('0x1b')]({'where':{'id':_0x4d3678[_0xe0bc('0x3a')]['id']}})[_0xe0bc('0x12')](handleEntityNotFound(_0x3eb4c5,null))[_0xe0bc('0x12')](function(_0x13c070){if(_0x13c070){return db['VoiceExtension'][_0xe0bc('0x47')](_[_0xe0bc('0x2f')](_0x4d3678[_0xe0bc('0x3d')],[_0xe0bc('0x3e'),_0xe0bc('0x48'),_0xe0bc('0x49'),'recordingFormat','cutdigits',_0xe0bc('0x4a'),_0xe0bc('0x4b')]),{'where':{'context':_0x13c070[_0xe0bc('0x48')],'exten':_0x13c070[_0xe0bc('0x3e')]},'individualHooks':!![]})['then'](function(_0x3714ec){return _0x3714ec;});}return null;})[_0xe0bc('0x12')](respondWithStatusCode(_0x3eb4c5,null))[_0xe0bc('0x38')](handleError(_0x3eb4c5,null));};exports[_0xe0bc('0x4c')]=function(_0x978318,_0x3273cf){var _0x2143b8=_0x978318[_0xe0bc('0x3a')]['id'];var _0x11dd75=_0x978318[_0xe0bc('0x3d')];var _0x4f1b5d=0xc8;var _0x14c7ca=null;return db[_0xe0bc('0x4d')]['transaction']({'isolationLevel':db['sequelize'][_0xe0bc('0x4e')][_0xe0bc('0x4f')][_0xe0bc('0x50')]},function(_0x2ddf9c){return db['VoiceExtension'][_0xe0bc('0x51')]({'where':{'id':_0x2143b8},'transaction':_0x2ddf9c})[_0xe0bc('0x12')](function(_0x41ae4b){if(_0x41ae4b){return db[_0xe0bc('0x21')]['destroy']({'where':{'VoiceExtensionId':_0x2143b8},'transaction':_0x2ddf9c})['then'](function(){var _0x3a6aa2=_['map'](_0x11dd75,function(_0x1c7668){_0x1c7668[_0xe0bc('0x52')]=_0x2143b8;_0x1c7668[_0xe0bc('0x53')]=!![];return _0x1c7668;});return _0x41ae4b['createRouting'](_0x3a6aa2);})[_0xe0bc('0x12')](function(_0x4511f7){return db[_0xe0bc('0x21')]['bulkCreate'](_0x4511f7,{'transaction':_0x2ddf9c});});}else{_0x4f1b5d=0x194;_0x14c7ca=[];}});})[_0xe0bc('0x12')](function(){if(_0x4f1b5d!==0x194){return db['VoiceExtension'][_0xe0bc('0x54')]({'where':{'isApp':!![],'VoiceExtensionId':_0x2143b8},'order':'cast(priority\x20as\x20unsigned)'})['then'](function(_0x4e9c25){_0x14c7ca=_0x4e9c25;});}})[_0xe0bc('0x38')](function(_0x266e4c){_0x4f1b5d=0x1f4;logger['error'](_0x266e4c[_0xe0bc('0x1d')]);if(_0x266e4c[_0xe0bc('0x1e')]){delete _0x266e4c[_0xe0bc('0x1e')];}_0x14c7ca=_0x266e4c;})[_0xe0bc('0x55')](function(){if(_0x14c7ca===null){_0x3273cf['sendStatus'](_0x4f1b5d);}else{if(_0x4f1b5d===0x1f4){_0x3273cf[_0xe0bc('0x9')](_0x4f1b5d)[_0xe0bc('0x1f')](_0x14c7ca);}else{_0x3273cf[_0xe0bc('0x9')](_0x4f1b5d)[_0xe0bc('0xb')](_0x14c7ca);}}});};