Built motion from commit 0900f080.|2.5.45
[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 _0xad1d=['error','send','VoiceExtension','rawAttributes','fieldName','model','keys','filters','intersection','query','attributes','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','findAll','params','fields','catch','create','body','exten','concat','user','get','role','inbound','UserProfileSection','userProfileId','autoAssociation','update','context','recordingFormat','mandatoryDisposition','alias','addApplications','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','createRouting','bulkCreate','finally','../../components/parsers/qs','../../config/logger','api','../../config/environment','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','destroy','OutboundRoutes','outbound','InternalRoutes','internal','ignore','map','value','includes','type','find','name','UserProfileResource','then'];(function(_0x17b6e3,_0x4522ed){var _0x3906f3=function(_0x430f87){while(--_0x430f87){_0x17b6e3['push'](_0x17b6e3['shift']());}};_0x3906f3(++_0x4522ed);}(_0xad1d,0x180));var _0xdad1=function(_0x377a6e,_0x59b99d){_0x377a6e=_0x377a6e-0x0;var _0x37f751=_0xad1d[_0x377a6e];return _0x37f751;};'use strict';var _=require('lodash');var Redis=require('ioredis');var qs=require(_0xdad1('0x0'));var logger=require(_0xdad1('0x1'))(_0xdad1('0x2'));var config=require(_0xdad1('0x3'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xdad1('0x4')](config['redis'],{'host':_0xdad1('0x5'),'port':0x18eb});var socket=require(_0xdad1('0x6'))(new Redis(config['redis']));require(_0xdad1('0x7'))[_0xdad1('0x8')](socket);function respondWithStatusCode(_0xa2573d,_0x474f07){_0x474f07=_0x474f07||0xcc;return function(_0x20aabf){if(_0x20aabf){return _0xa2573d[_0xdad1('0x9')](_0x474f07);}return _0xa2573d['status'](_0x474f07)[_0xdad1('0xa')]();};}function respondWithResult(_0x5ed2c3,_0x48b7b8){_0x48b7b8=_0x48b7b8||0xc8;return function(_0x328593){if(_0x328593){return _0x5ed2c3[_0xdad1('0xb')](_0x48b7b8)[_0xdad1('0xc')](_0x328593);}};}function respondWithFilteredResult(_0x1fabfa,_0x4b9097){return function(_0x3a4e2b){if(_0x3a4e2b){var _0x57281e=typeof _0x4b9097[_0xdad1('0xd')]===_0xdad1('0xe')&&typeof _0x4b9097[_0xdad1('0xf')]===_0xdad1('0xe');var _0x2e6dc2=_0x3a4e2b[_0xdad1('0x10')];var _0x4dfaeb=_0x57281e?0x0:_0x4b9097[_0xdad1('0xd')];var _0x170464=_0x57281e?_0x3a4e2b[_0xdad1('0x10')]:_0x4b9097[_0xdad1('0xd')]+_0x4b9097['limit'];var _0x12b908;if(_0x170464>=_0x2e6dc2){_0x170464=_0x2e6dc2;_0x12b908=0xc8;}else{_0x12b908=0xce;}_0x1fabfa[_0xdad1('0xb')](_0x12b908);return _0x1fabfa['set']('Content-Range',_0x4dfaeb+'-'+_0x170464+'/'+_0x2e6dc2)[_0xdad1('0xc')](_0x3a4e2b);}return null;};}function removeEntity(_0x15e3c1){return function(_0x73f31e){if(_0x73f31e){return _0x73f31e[_0xdad1('0x11')]()['then'](function(){var _0x311299=_0x73f31e['get']({'plain':!![]});var _0xece4a0=[{'name':'InboundRoutes','value':'inbound','ignore':![]},{'name':_0xdad1('0x12'),'value':_0xdad1('0x13'),'ignore':![]},{'name':_0xdad1('0x14'),'value':_0xdad1('0x15'),'ignore':![]}];var _0x4e70d7=_(_0xece4a0)['filter'](_0xdad1('0x16'))[_0xdad1('0x17')]('value')[_0xdad1('0x18')]();if(_[_0xdad1('0x19')](_0x4e70d7,_0x311299[_0xdad1('0x1a')])){return;}var _0x1ca385=_[_0xdad1('0x1b')](_0xece4a0,[_0xdad1('0x18'),_0x311299[_0xdad1('0x1a')]])[_0xdad1('0x1c')];return db[_0xdad1('0x1d')]['destroy']({'where':{'type':_0x1ca385,'resourceId':_0x311299['id']}})[_0xdad1('0x1e')](function(){return _0x73f31e;});})[_0xdad1('0x1e')](function(){_0x15e3c1[_0xdad1('0xb')](0xcc)[_0xdad1('0xa')]();});}};}function handleEntityNotFound(_0x33db7a){return function(_0x1819b1){if(!_0x1819b1){_0x33db7a[_0xdad1('0x9')](0x194);}return _0x1819b1;};}function handleError(_0x8d5ab7,_0x477671){_0x477671=_0x477671||0x1f4;return function(_0x55f7d6){logger[_0xdad1('0x1f')](_0x55f7d6['stack']);if(_0x55f7d6[_0xdad1('0x1c')]){delete _0x55f7d6[_0xdad1('0x1c')];}_0x8d5ab7[_0xdad1('0xb')](_0x477671)[_0xdad1('0x20')](_0x55f7d6);};}exports['index']=function(_0x365d5c,_0x20b68b){var _0x51e703={},_0x5584ef={},_0xaa440e={'count':0x0,'rows':[]};var _0x2d3193=_[_0xdad1('0x17')](db[_0xdad1('0x21')][_0xdad1('0x22')],function(_0x1be0df){return{'name':_0x1be0df[_0xdad1('0x23')],'type':_0x1be0df[_0xdad1('0x1a')]['key']};});_0x5584ef[_0xdad1('0x24')]=_[_0xdad1('0x17')](_0x2d3193,_0xdad1('0x1c'));_0x5584ef['query']=_[_0xdad1('0x25')](_0x365d5c['query']);_0x5584ef[_0xdad1('0x26')]=_[_0xdad1('0x27')](_0x5584ef[_0xdad1('0x24')],_0x5584ef[_0xdad1('0x28')]);_0x51e703[_0xdad1('0x29')]=_[_0xdad1('0x27')](_0x5584ef[_0xdad1('0x24')],qs['fields'](_0x365d5c['query']['fields']));_0x51e703['attributes']=_0x51e703[_0xdad1('0x29')][_0xdad1('0x2a')]?_0x51e703[_0xdad1('0x29')]:_0x5584ef[_0xdad1('0x24')];if(!_0x365d5c[_0xdad1('0x28')][_0xdad1('0x2b')](_0xdad1('0x2c'))){_0x51e703['limit']=qs[_0xdad1('0xf')](_0x365d5c['query'][_0xdad1('0xf')]);_0x51e703[_0xdad1('0xd')]=qs['offset'](_0x365d5c[_0xdad1('0x28')]['offset']);}_0x51e703[_0xdad1('0x2d')]=qs[_0xdad1('0x2e')](_0x365d5c['query']['sort']);_0x51e703['where']=qs[_0xdad1('0x26')](_[_0xdad1('0x2f')](_0x365d5c[_0xdad1('0x28')],_0x5584ef[_0xdad1('0x26')]),_0x2d3193);if(_0x365d5c[_0xdad1('0x28')]['filter']){_0x51e703[_0xdad1('0x30')]=_[_0xdad1('0x31')](_0x51e703['where'],{'$or':_['map'](_0x2d3193,function(_0x108a83){if(_0x108a83[_0xdad1('0x1a')]!==_0xdad1('0x32')){var _0x2f6287={};_0x2f6287[_0x108a83[_0xdad1('0x1c')]]={'$like':'%'+_0x365d5c[_0xdad1('0x28')][_0xdad1('0x33')]+'%'};return _0x2f6287;}})});}_0x51e703=_[_0xdad1('0x31')]({},_0x51e703,_0x365d5c[_0xdad1('0x34')]);var _0x250c49={'where':_0x51e703[_0xdad1('0x30')]};return db[_0xdad1('0x21')]['count'](_0x250c49)[_0xdad1('0x1e')](function(_0x371f91){_0xaa440e[_0xdad1('0x10')]=_0x371f91;if(_0x365d5c[_0xdad1('0x28')][_0xdad1('0x35')]){_0x51e703['include']=[{'all':!![]}];}return db[_0xdad1('0x21')][_0xdad1('0x36')](_0x51e703);})['then'](function(_0x2958f7){_0xaa440e['rows']=_0x2958f7;return _0xaa440e;})['then'](respondWithFilteredResult(_0x20b68b,_0x51e703))['catch'](handleError(_0x20b68b,null));};exports['show']=function(_0x3cfa07,_0x43d2a9){var _0x312cf9={'raw':![],'where':{'id':_0x3cfa07[_0xdad1('0x37')]['id']}},_0x5aaee1={};_0x5aaee1[_0xdad1('0x24')]=_[_0xdad1('0x25')](db['VoiceExtension'][_0xdad1('0x22')]);_0x5aaee1[_0xdad1('0x28')]=_[_0xdad1('0x25')](_0x3cfa07[_0xdad1('0x28')]);_0x5aaee1[_0xdad1('0x26')]=_[_0xdad1('0x27')](_0x5aaee1['model'],_0x5aaee1[_0xdad1('0x28')]);_0x312cf9['attributes']=_[_0xdad1('0x27')](_0x5aaee1['model'],qs[_0xdad1('0x38')](_0x3cfa07[_0xdad1('0x28')]['fields']));_0x312cf9[_0xdad1('0x29')]=_0x312cf9[_0xdad1('0x29')][_0xdad1('0x2a')]?_0x312cf9[_0xdad1('0x29')]:_0x5aaee1[_0xdad1('0x24')];if(_0x3cfa07[_0xdad1('0x28')][_0xdad1('0x35')]){_0x312cf9['include']=[{'all':!![]}];}_0x312cf9=_[_0xdad1('0x31')]({},_0x312cf9,_0x3cfa07[_0xdad1('0x34')]);return db['VoiceExtension'][_0xdad1('0x1b')](_0x312cf9)[_0xdad1('0x1e')](handleEntityNotFound(_0x43d2a9,null))[_0xdad1('0x1e')](respondWithResult(_0x43d2a9,null))[_0xdad1('0x39')](handleError(_0x43d2a9,null));};exports[_0xdad1('0x11')]=function(_0x3020f4,_0x28aa68){return db['VoiceExtension'][_0xdad1('0x1b')]({'where':{'id':_0x3020f4[_0xdad1('0x37')]['id']}})[_0xdad1('0x1e')](handleEntityNotFound(_0x28aa68,null))[_0xdad1('0x1e')](removeEntity(_0x28aa68,null))['catch'](handleError(_0x28aa68,null));};exports[_0xdad1('0x3a')]=function(_0x4b93d3,_0x2238e9){if(_0x4b93d3[_0xdad1('0x3b')][_0xdad1('0x1a')]==='outbound'&&!_['startsWith'](_0x4b93d3[_0xdad1('0x3b')][_0xdad1('0x3c')],'_')){_0x4b93d3['body']['exten']='_'[_0xdad1('0x3d')](_0x4b93d3[_0xdad1('0x3b')][_0xdad1('0x3c')]);}return db['VoiceExtension'][_0xdad1('0x3a')](_0x4b93d3['body'],{'raw':![]})[_0xdad1('0x1e')](function(_0x53e6b9){var _0x3532c6=_0x4b93d3[_0xdad1('0x3e')][_0xdad1('0x3f')]({'plain':!![]});if(!_0x3532c6)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3532c6[_0xdad1('0x40')]==='user'){var _0x291d73=_0x53e6b9[_0xdad1('0x3f')]({'plain':!![]});var _0x5413c6=[{'name':'InboundRoutes','value':_0xdad1('0x41')},{'name':_0xdad1('0x12'),'value':_0xdad1('0x13')},{'name':_0xdad1('0x14'),'value':_0xdad1('0x15')}];var _0x163883=_[_0xdad1('0x1b')](_0x5413c6,[_0xdad1('0x18'),_0x291d73[_0xdad1('0x1a')]])[_0xdad1('0x1c')];return db[_0xdad1('0x42')][_0xdad1('0x1b')]({'where':{'name':_0x163883,'userProfileId':_0x3532c6[_0xdad1('0x43')]},'raw':!![]})[_0xdad1('0x1e')](function(_0x4140f4){if(_0x4140f4&&_0x4140f4[_0xdad1('0x44')]===0x0){return db[_0xdad1('0x1d')][_0xdad1('0x3a')]({'name':_0x291d73[_0xdad1('0x1c')],'resourceId':_0x291d73['id'],'type':_0x4140f4[_0xdad1('0x1c')],'sectionId':_0x4140f4['id']},{})[_0xdad1('0x1e')](function(){return _0x53e6b9;});}else{return _0x53e6b9;}})[_0xdad1('0x39')](function(_0x299c23){logger[_0xdad1('0x1f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x299c23);throw _0x299c23;});}return _0x53e6b9;})[_0xdad1('0x1e')](respondWithResult(_0x2238e9,0xc9))[_0xdad1('0x39')](handleError(_0x2238e9,null));};exports[_0xdad1('0x45')]=function(_0x20bbc4,_0x333415){if(_0x20bbc4['body']['id']){delete _0x20bbc4[_0xdad1('0x3b')]['id'];}return db[_0xdad1('0x21')][_0xdad1('0x1b')]({'where':{'id':_0x20bbc4[_0xdad1('0x37')]['id']}})['then'](handleEntityNotFound(_0x333415,null))['then'](function(_0x459690){if(_0x459690){return db[_0xdad1('0x21')][_0xdad1('0x45')](_['pick'](_0x20bbc4[_0xdad1('0x3b')],['exten',_0xdad1('0x46'),'description',_0xdad1('0x47'),'cutdigits',_0xdad1('0x48'),_0xdad1('0x49')]),{'where':{'context':_0x459690[_0xdad1('0x46')],'exten':_0x459690[_0xdad1('0x3c')]},'individualHooks':!![]})[_0xdad1('0x1e')](function(_0x408895){return _0x408895;});}return null;})[_0xdad1('0x1e')](respondWithStatusCode(_0x333415,null))[_0xdad1('0x39')](handleError(_0x333415,null));};exports[_0xdad1('0x4a')]=function(_0x53bd33,_0x4871de){var _0x5e406a=_0x53bd33[_0xdad1('0x37')]['id'];var _0x4398df=_0x53bd33['body'];var _0x2acc31=0xc8;var _0x10bd43=null;return db[_0xdad1('0x4b')]['transaction']({'isolationLevel':db[_0xdad1('0x4b')][_0xdad1('0x4c')][_0xdad1('0x4d')][_0xdad1('0x4e')]},function(_0x4dee69){return db[_0xdad1('0x21')][_0xdad1('0x4f')]({'where':{'id':_0x5e406a},'transaction':_0x4dee69})[_0xdad1('0x1e')](function(_0x5d0849){if(_0x5d0849){return db[_0xdad1('0x21')]['destroy']({'where':{'VoiceExtensionId':_0x5e406a},'transaction':_0x4dee69})['then'](function(){var _0x5d8f4c=_[_0xdad1('0x17')](_0x4398df,function(_0x231c26){_0x231c26['VoiceExtensionId']=_0x5e406a;_0x231c26['isApp']=!![];return _0x231c26;});return _0x5d0849[_0xdad1('0x50')](_0x5d8f4c);})[_0xdad1('0x1e')](function(_0x330320){return db[_0xdad1('0x21')][_0xdad1('0x51')](_0x330320,{'transaction':_0x4dee69});});}else{_0x2acc31=0x194;_0x10bd43=[];}});})[_0xdad1('0x1e')](function(){if(_0x2acc31!==0x194){return db['VoiceExtension']['findAndCountAll']({'where':{'isApp':!![],'VoiceExtensionId':_0x5e406a},'order':'cast(priority\x20as\x20unsigned)'})[_0xdad1('0x1e')](function(_0x312a79){_0x10bd43=_0x312a79;});}})['catch'](function(_0x58f2a5){_0x2acc31=0x1f4;logger[_0xdad1('0x1f')](_0x58f2a5['stack']);if(_0x58f2a5[_0xdad1('0x1c')]){delete _0x58f2a5[_0xdad1('0x1c')];}_0x10bd43=_0x58f2a5;})[_0xdad1('0x52')](function(){if(_0x10bd43===null){_0x4871de[_0xdad1('0x9')](_0x2acc31);}else{if(_0x2acc31===0x1f4){_0x4871de[_0xdad1('0xb')](_0x2acc31)[_0xdad1('0x20')](_0x10bd43);}else{_0x4871de[_0xdad1('0xb')](_0x2acc31)[_0xdad1('0xc')](_0x10bd43);}}});};