e6f59863feddf2e977521e90147d6f2cc8f9a21b
[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 _0x9756=['./voiceExtension.socket','register','sendStatus','status','offset','undefined','count','destroy','then','get','inbound','OutboundRoutes','outbound','InternalRoutes','internal','filter','ignore','map','value','includes','type','find','name','UserProfileResource','end','error','stack','send','index','VoiceExtension','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','pick','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','create','body','exten','concat','user','role','InboundRoutes','UserProfileSection','userProfileId','update','description','recordingFormat','cutdigits','mandatoryDisposition','alias','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','isApp','createRouting','bulkCreate','finally','json','lodash','ioredis','../../config/environment','../../mysqldb','redis','localhost'];(function(_0x3e009c,_0x45170c){var _0x97fd2c=function(_0x5b3b0b){while(--_0x5b3b0b){_0x3e009c['push'](_0x3e009c['shift']());}};_0x97fd2c(++_0x45170c);}(_0x9756,0x1b2));var _0x6975=function(_0x2adbeb,_0x5581be){_0x2adbeb=_0x2adbeb-0x0;var _0x5e18a6=_0x9756[_0x2adbeb];return _0x5e18a6;};'use strict';var _=require(_0x6975('0x0'));var Redis=require(_0x6975('0x1'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')('api');var config=require(_0x6975('0x2'));var db=require(_0x6975('0x3'))['db'];config[_0x6975('0x4')]=_['defaults'](config[_0x6975('0x4')],{'host':_0x6975('0x5'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6975('0x4')]));require(_0x6975('0x6'))[_0x6975('0x7')](socket);function respondWithStatusCode(_0x593633,_0x9820a4){_0x9820a4=_0x9820a4||0xcc;return function(_0xeff41d){if(_0xeff41d){return _0x593633[_0x6975('0x8')](_0x9820a4);}return _0x593633[_0x6975('0x9')](_0x9820a4)['end']();};}function respondWithResult(_0x5d3720,_0x141dc9){_0x141dc9=_0x141dc9||0xc8;return function(_0x42d817){if(_0x42d817){return _0x5d3720[_0x6975('0x9')](_0x141dc9)['json'](_0x42d817);}};}function respondWithFilteredResult(_0x156e88,_0x4f91bb){return function(_0x436fa5){if(_0x436fa5){var _0x4d7bed=typeof _0x4f91bb[_0x6975('0xa')]===_0x6975('0xb')&&typeof _0x4f91bb['limit']===_0x6975('0xb');var _0x13c8ae=_0x436fa5[_0x6975('0xc')];var _0x415401=_0x4d7bed?0x0:_0x4f91bb[_0x6975('0xa')];var _0x319b6c=_0x4d7bed?_0x436fa5[_0x6975('0xc')]:_0x4f91bb['offset']+_0x4f91bb['limit'];var _0x475823;if(_0x319b6c>=_0x13c8ae){_0x319b6c=_0x13c8ae;_0x475823=0xc8;}else{_0x475823=0xce;}_0x156e88[_0x6975('0x9')](_0x475823);return _0x156e88['set']('Content-Range',_0x415401+'-'+_0x319b6c+'/'+_0x13c8ae)['json'](_0x436fa5);}return null;};}function removeEntity(_0x22bc51){return function(_0x261d04){if(_0x261d04){return _0x261d04[_0x6975('0xd')]()[_0x6975('0xe')](function(){var _0x33f237=_0x261d04[_0x6975('0xf')]({'plain':!![]});var _0x207fb8=[{'name':'InboundRoutes','value':_0x6975('0x10'),'ignore':![]},{'name':_0x6975('0x11'),'value':_0x6975('0x12'),'ignore':![]},{'name':_0x6975('0x13'),'value':_0x6975('0x14'),'ignore':![]}];var _0xb7fce4=_(_0x207fb8)[_0x6975('0x15')](_0x6975('0x16'))[_0x6975('0x17')](_0x6975('0x18'))[_0x6975('0x18')]();if(_[_0x6975('0x19')](_0xb7fce4,_0x33f237[_0x6975('0x1a')])){return;}var _0x308fe5=_[_0x6975('0x1b')](_0x207fb8,[_0x6975('0x18'),_0x33f237['type']])[_0x6975('0x1c')];return db[_0x6975('0x1d')][_0x6975('0xd')]({'where':{'type':_0x308fe5,'resourceId':_0x33f237['id']}})['then'](function(){return _0x261d04;});})[_0x6975('0xe')](function(){_0x22bc51['status'](0xcc)[_0x6975('0x1e')]();});}};}function handleEntityNotFound(_0x129171){return function(_0xb49e1a){if(!_0xb49e1a){_0x129171[_0x6975('0x8')](0x194);}return _0xb49e1a;};}function handleError(_0x164944,_0x52627b){_0x52627b=_0x52627b||0x1f4;return function(_0xd17561){logger[_0x6975('0x1f')](_0xd17561[_0x6975('0x20')]);if(_0xd17561[_0x6975('0x1c')]){delete _0xd17561['name'];}_0x164944[_0x6975('0x9')](_0x52627b)[_0x6975('0x21')](_0xd17561);};}exports[_0x6975('0x22')]=function(_0x38d409,_0x1e8eb6){var _0x45b89e={},_0x74df4f={},_0x346ee6={'count':0x0,'rows':[]};var _0x3858a2=_['map'](db[_0x6975('0x23')][_0x6975('0x24')],function(_0x5ee38e){return{'name':_0x5ee38e[_0x6975('0x25')],'type':_0x5ee38e['type'][_0x6975('0x26')]};});_0x74df4f['model']=_[_0x6975('0x17')](_0x3858a2,_0x6975('0x1c'));_0x74df4f[_0x6975('0x27')]=_[_0x6975('0x28')](_0x38d409[_0x6975('0x27')]);_0x74df4f[_0x6975('0x29')]=_[_0x6975('0x2a')](_0x74df4f[_0x6975('0x2b')],_0x74df4f['query']);_0x45b89e[_0x6975('0x2c')]=_[_0x6975('0x2a')](_0x74df4f['model'],qs[_0x6975('0x2d')](_0x38d409['query'][_0x6975('0x2d')]));_0x45b89e[_0x6975('0x2c')]=_0x45b89e[_0x6975('0x2c')]['length']?_0x45b89e['attributes']:_0x74df4f['model'];if(!_0x38d409[_0x6975('0x27')][_0x6975('0x2e')](_0x6975('0x2f'))){_0x45b89e[_0x6975('0x30')]=qs[_0x6975('0x30')](_0x38d409[_0x6975('0x27')]['limit']);_0x45b89e[_0x6975('0xa')]=qs[_0x6975('0xa')](_0x38d409['query'][_0x6975('0xa')]);}_0x45b89e[_0x6975('0x31')]=qs[_0x6975('0x32')](_0x38d409[_0x6975('0x27')][_0x6975('0x32')]);_0x45b89e['where']=qs['filters'](_[_0x6975('0x33')](_0x38d409[_0x6975('0x27')],_0x74df4f['filters']),_0x3858a2);if(_0x38d409[_0x6975('0x27')][_0x6975('0x15')]){_0x45b89e[_0x6975('0x34')]=_[_0x6975('0x35')](_0x45b89e['where'],{'$or':_[_0x6975('0x17')](_0x3858a2,function(_0x305bc4){if(_0x305bc4[_0x6975('0x1a')]!==_0x6975('0x36')){var _0x3be54f={};_0x3be54f[_0x305bc4[_0x6975('0x1c')]]={'$like':'%'+_0x38d409[_0x6975('0x27')]['filter']+'%'};return _0x3be54f;}})});}_0x45b89e=_[_0x6975('0x35')]({},_0x45b89e,_0x38d409[_0x6975('0x37')]);var _0x594a08={'where':_0x45b89e[_0x6975('0x34')]};return db[_0x6975('0x23')]['count'](_0x594a08)[_0x6975('0xe')](function(_0x63e476){_0x346ee6[_0x6975('0xc')]=_0x63e476;if(_0x38d409[_0x6975('0x27')][_0x6975('0x38')]){_0x45b89e[_0x6975('0x39')]=[{'all':!![]}];}return db[_0x6975('0x23')][_0x6975('0x3a')](_0x45b89e);})['then'](function(_0x3a30ff){_0x346ee6[_0x6975('0x3b')]=_0x3a30ff;return _0x346ee6;})[_0x6975('0xe')](respondWithFilteredResult(_0x1e8eb6,_0x45b89e))[_0x6975('0x3c')](handleError(_0x1e8eb6,null));};exports[_0x6975('0x3d')]=function(_0x231029,_0x4ee5c5){var _0xed46f1={'raw':![],'where':{'id':_0x231029[_0x6975('0x3e')]['id']}},_0x4c93ba={};_0x4c93ba[_0x6975('0x2b')]=_['keys'](db[_0x6975('0x23')][_0x6975('0x24')]);_0x4c93ba['query']=_[_0x6975('0x28')](_0x231029[_0x6975('0x27')]);_0x4c93ba[_0x6975('0x29')]=_[_0x6975('0x2a')](_0x4c93ba['model'],_0x4c93ba[_0x6975('0x27')]);_0xed46f1[_0x6975('0x2c')]=_[_0x6975('0x2a')](_0x4c93ba[_0x6975('0x2b')],qs[_0x6975('0x2d')](_0x231029[_0x6975('0x27')][_0x6975('0x2d')]));_0xed46f1[_0x6975('0x2c')]=_0xed46f1[_0x6975('0x2c')][_0x6975('0x3f')]?_0xed46f1[_0x6975('0x2c')]:_0x4c93ba[_0x6975('0x2b')];if(_0x231029[_0x6975('0x27')][_0x6975('0x38')]){_0xed46f1[_0x6975('0x39')]=[{'all':!![]}];}_0xed46f1=_['merge']({},_0xed46f1,_0x231029[_0x6975('0x37')]);return db[_0x6975('0x23')][_0x6975('0x1b')](_0xed46f1)['then'](handleEntityNotFound(_0x4ee5c5,null))[_0x6975('0xe')](respondWithResult(_0x4ee5c5,null))[_0x6975('0x3c')](handleError(_0x4ee5c5,null));};exports['destroy']=function(_0x2affe0,_0x4dea06){return db[_0x6975('0x23')][_0x6975('0x1b')]({'where':{'id':_0x2affe0[_0x6975('0x3e')]['id']}})['then'](handleEntityNotFound(_0x4dea06,null))[_0x6975('0xe')](removeEntity(_0x4dea06,null))[_0x6975('0x3c')](handleError(_0x4dea06,null));};exports[_0x6975('0x40')]=function(_0x163d5f,_0x15b611){if(_0x163d5f['body'][_0x6975('0x1a')]===_0x6975('0x12')&&!_['startsWith'](_0x163d5f[_0x6975('0x41')][_0x6975('0x42')],'_')){_0x163d5f[_0x6975('0x41')][_0x6975('0x42')]='_'[_0x6975('0x43')](_0x163d5f['body'][_0x6975('0x42')]);}return db[_0x6975('0x23')]['create'](_0x163d5f['body'],{'raw':![]})['then'](function(_0x2663db){var _0x16364d=_0x163d5f[_0x6975('0x44')]['get']({'plain':!![]});if(!_0x16364d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x16364d[_0x6975('0x45')]===_0x6975('0x44')){var _0x541ddc=_0x2663db['get']({'plain':!![]});var _0x2b0620=[{'name':_0x6975('0x46'),'value':_0x6975('0x10')},{'name':_0x6975('0x11'),'value':'outbound'},{'name':_0x6975('0x13'),'value':_0x6975('0x14')}];var _0xdb08ef=_[_0x6975('0x1b')](_0x2b0620,[_0x6975('0x18'),_0x541ddc['type']])[_0x6975('0x1c')];return db[_0x6975('0x47')][_0x6975('0x1b')]({'where':{'name':_0xdb08ef,'userProfileId':_0x16364d[_0x6975('0x48')]},'raw':!![]})['then'](function(_0x5dd966){if(_0x5dd966&&_0x5dd966['autoAssociation']===0x0){return db[_0x6975('0x1d')][_0x6975('0x40')]({'name':_0x541ddc[_0x6975('0x1c')],'resourceId':_0x541ddc['id'],'type':_0x5dd966[_0x6975('0x1c')],'sectionId':_0x5dd966['id']},{})['then'](function(){return _0x2663db;});}else{return _0x2663db;}})[_0x6975('0x3c')](function(_0x4338e8){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4338e8);throw _0x4338e8;});}return _0x2663db;})[_0x6975('0xe')](respondWithResult(_0x15b611,0xc9))[_0x6975('0x3c')](handleError(_0x15b611,null));};exports[_0x6975('0x49')]=function(_0x39fa29,_0x1ef517){if(_0x39fa29['body']['id']){delete _0x39fa29[_0x6975('0x41')]['id'];}return db[_0x6975('0x23')][_0x6975('0x1b')]({'where':{'id':_0x39fa29['params']['id']}})[_0x6975('0xe')](handleEntityNotFound(_0x1ef517,null))[_0x6975('0xe')](function(_0x45f1be){if(_0x45f1be){return db['VoiceExtension'][_0x6975('0x49')](_[_0x6975('0x33')](_0x39fa29[_0x6975('0x41')],[_0x6975('0x42'),'context',_0x6975('0x4a'),_0x6975('0x4b'),_0x6975('0x4c'),_0x6975('0x4d'),_0x6975('0x4e')]),{'where':{'context':_0x45f1be['context'],'exten':_0x45f1be[_0x6975('0x42')]},'individualHooks':!![]})[_0x6975('0xe')](function(_0x1c9567){return _0x1c9567;});}return null;})['then'](respondWithStatusCode(_0x1ef517,null))[_0x6975('0x3c')](handleError(_0x1ef517,null));};exports['addApplications']=function(_0x58d434,_0x35cc37){var _0x30ff41=_0x58d434[_0x6975('0x3e')]['id'];var _0x4e9ceb=_0x58d434['body'];var _0x27cfce=0xc8;var _0x119d65=null;return db['sequelize'][_0x6975('0x4f')]({'isolationLevel':db['sequelize'][_0x6975('0x50')][_0x6975('0x51')][_0x6975('0x52')]},function(_0x180417){return db[_0x6975('0x23')]['findOne']({'where':{'id':_0x30ff41},'transaction':_0x180417})['then'](function(_0x1d1b89){if(_0x1d1b89){return db[_0x6975('0x23')][_0x6975('0xd')]({'where':{'VoiceExtensionId':_0x30ff41},'transaction':_0x180417})['then'](function(){var _0x29da59=_[_0x6975('0x17')](_0x4e9ceb,function(_0x38f5ec){_0x38f5ec['VoiceExtensionId']=_0x30ff41;_0x38f5ec[_0x6975('0x53')]=!![];return _0x38f5ec;});return _0x1d1b89[_0x6975('0x54')](_0x29da59);})[_0x6975('0xe')](function(_0x404d0d){return db['VoiceExtension'][_0x6975('0x55')](_0x404d0d,{'transaction':_0x180417});});}else{_0x27cfce=0x194;_0x119d65=[];}});})[_0x6975('0xe')](function(){if(_0x27cfce!==0x194){return db[_0x6975('0x23')]['findAndCountAll']({'where':{'isApp':!![],'VoiceExtensionId':_0x30ff41},'order':'cast(priority\x20as\x20unsigned)'})[_0x6975('0xe')](function(_0x42f384){_0x119d65=_0x42f384;});}})[_0x6975('0x3c')](function(_0x5222f8){_0x27cfce=0x1f4;logger[_0x6975('0x1f')](_0x5222f8['stack']);if(_0x5222f8['name']){delete _0x5222f8[_0x6975('0x1c')];}_0x119d65=_0x5222f8;})[_0x6975('0x56')](function(){if(_0x119d65===null){_0x35cc37['sendStatus'](_0x27cfce);}else{if(_0x27cfce===0x1f4){_0x35cc37[_0x6975('0x9')](_0x27cfce)[_0x6975('0x21')](_0x119d65);}else{_0x35cc37['status'](_0x27cfce)[_0x6975('0x57')](_0x119d65);}}});};