fdcaece92ec6fbe2b5c0f989b6a8242ee11941db
[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 _0x09e6=['inbound','outbound','InternalRoutes','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','context','description','recordingFormat','cutdigits','mandatoryDisposition','alias','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','VoiceExtensionId','isApp','createRouting','findAndCountAll','finally','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./voiceExtension.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','destroy','then','InboundRoutes','OutboundRoutes','internal','ignore','value','includes','type','find','name','UserProfileResource','error','stack','index','map','VoiceExtension','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','catch','show','rawAttributes','length','includeAll','params','create','body','startsWith','exten','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user'];(function(_0x320666,_0xe645b5){var _0x8596e0=function(_0x14e398){while(--_0x14e398){_0x320666['push'](_0x320666['shift']());}};_0x8596e0(++_0xe645b5);}(_0x09e6,0x74));var _0x609e=function(_0x503bd4,_0x20cfd8){_0x503bd4=_0x503bd4-0x0;var _0x37e91d=_0x09e6[_0x503bd4];return _0x37e91d;};'use strict';var _=require('lodash');var Redis=require('ioredis');var qs=require(_0x609e('0x0'));var logger=require(_0x609e('0x1'))('api');var config=require(_0x609e('0x2'));var db=require(_0x609e('0x3'))['db'];config[_0x609e('0x4')]=_[_0x609e('0x5')](config[_0x609e('0x4')],{'host':'localhost','port':0x18eb});var socket=require(_0x609e('0x6'))(new Redis(config[_0x609e('0x4')]));require(_0x609e('0x7'))[_0x609e('0x8')](socket);function respondWithStatusCode(_0xb32333,_0x3dea93){_0x3dea93=_0x3dea93||0xcc;return function(_0x311dd2){if(_0x311dd2){return _0xb32333[_0x609e('0x9')](_0x3dea93);}return _0xb32333['status'](_0x3dea93)[_0x609e('0xa')]();};}function respondWithResult(_0x59498a,_0x3b88a6){_0x3b88a6=_0x3b88a6||0xc8;return function(_0x52e344){if(_0x52e344){return _0x59498a[_0x609e('0xb')](_0x3b88a6)[_0x609e('0xc')](_0x52e344);}};}function respondWithFilteredResult(_0x9979ef,_0x44eabd){return function(_0x491e3d){if(_0x491e3d){var _0x3cf070=typeof _0x44eabd[_0x609e('0xd')]===_0x609e('0xe')&&typeof _0x44eabd[_0x609e('0xf')]===_0x609e('0xe');var _0x5a6674=_0x491e3d[_0x609e('0x10')];var _0x4ad871=_0x3cf070?0x0:_0x44eabd[_0x609e('0xd')];var _0xd6f4f=_0x3cf070?_0x491e3d[_0x609e('0x10')]:_0x44eabd[_0x609e('0xd')]+_0x44eabd[_0x609e('0xf')];var _0x19b023;if(_0xd6f4f>=_0x5a6674){_0xd6f4f=_0x5a6674;_0x19b023=0xc8;}else{_0x19b023=0xce;}_0x9979ef[_0x609e('0xb')](_0x19b023);return _0x9979ef[_0x609e('0x11')](_0x609e('0x12'),_0x4ad871+'-'+_0xd6f4f+'/'+_0x5a6674)[_0x609e('0xc')](_0x491e3d);}return null;};}function removeEntity(_0x24828b){return function(_0x246f28){if(_0x246f28){return _0x246f28[_0x609e('0x13')]()[_0x609e('0x14')](function(){var _0x3ba38c=_0x246f28['get']({'plain':!![]});var _0x173279=[{'name':_0x609e('0x15'),'value':'inbound','ignore':![]},{'name':_0x609e('0x16'),'value':'outbound','ignore':![]},{'name':'InternalRoutes','value':_0x609e('0x17'),'ignore':![]}];var _0x291b86=_(_0x173279)['filter'](_0x609e('0x18'))['map'](_0x609e('0x19'))[_0x609e('0x19')]();if(_[_0x609e('0x1a')](_0x291b86,_0x3ba38c[_0x609e('0x1b')])){return;}var _0x142787=_[_0x609e('0x1c')](_0x173279,[_0x609e('0x19'),_0x3ba38c[_0x609e('0x1b')]])[_0x609e('0x1d')];return db[_0x609e('0x1e')]['destroy']({'where':{'type':_0x142787,'resourceId':_0x3ba38c['id']}})[_0x609e('0x14')](function(){return _0x246f28;});})[_0x609e('0x14')](function(){_0x24828b[_0x609e('0xb')](0xcc)[_0x609e('0xa')]();});}};}function handleEntityNotFound(_0x5843c1){return function(_0x4f7f85){if(!_0x4f7f85){_0x5843c1['sendStatus'](0x194);}return _0x4f7f85;};}function handleError(_0x4ed682,_0x4c85f9){_0x4c85f9=_0x4c85f9||0x1f4;return function(_0x226794){logger[_0x609e('0x1f')](_0x226794[_0x609e('0x20')]);if(_0x226794[_0x609e('0x1d')]){delete _0x226794[_0x609e('0x1d')];}_0x4ed682[_0x609e('0xb')](_0x4c85f9)['send'](_0x226794);};}exports[_0x609e('0x21')]=function(_0x445a40,_0x4fb8ca){var _0x24cd22={},_0x7e38ed={},_0xbafc45={'count':0x0,'rows':[]};var _0x233678=_[_0x609e('0x22')](db[_0x609e('0x23')]['rawAttributes'],function(_0x2a906b){return{'name':_0x2a906b[_0x609e('0x24')],'type':_0x2a906b[_0x609e('0x1b')][_0x609e('0x25')]};});_0x7e38ed[_0x609e('0x26')]=_['map'](_0x233678,_0x609e('0x1d'));_0x7e38ed[_0x609e('0x27')]=_[_0x609e('0x28')](_0x445a40['query']);_0x7e38ed[_0x609e('0x29')]=_[_0x609e('0x2a')](_0x7e38ed['model'],_0x7e38ed[_0x609e('0x27')]);_0x24cd22[_0x609e('0x2b')]=_['intersection'](_0x7e38ed[_0x609e('0x26')],qs[_0x609e('0x2c')](_0x445a40[_0x609e('0x27')][_0x609e('0x2c')]));_0x24cd22['attributes']=_0x24cd22[_0x609e('0x2b')]['length']?_0x24cd22['attributes']:_0x7e38ed[_0x609e('0x26')];if(!_0x445a40[_0x609e('0x27')][_0x609e('0x2d')]('nolimit')){_0x24cd22[_0x609e('0xf')]=qs['limit'](_0x445a40[_0x609e('0x27')][_0x609e('0xf')]);_0x24cd22[_0x609e('0xd')]=qs[_0x609e('0xd')](_0x445a40[_0x609e('0x27')]['offset']);}_0x24cd22[_0x609e('0x2e')]=qs[_0x609e('0x2f')](_0x445a40[_0x609e('0x27')][_0x609e('0x2f')]);_0x24cd22[_0x609e('0x30')]=qs[_0x609e('0x29')](_[_0x609e('0x31')](_0x445a40['query'],_0x7e38ed[_0x609e('0x29')]),_0x233678);if(_0x445a40[_0x609e('0x27')][_0x609e('0x32')]){_0x24cd22['where']=_[_0x609e('0x33')](_0x24cd22[_0x609e('0x30')],{'$or':_[_0x609e('0x22')](_0x233678,function(_0x4d21ca){if(_0x4d21ca[_0x609e('0x1b')]!==_0x609e('0x34')){var _0x4f792e={};_0x4f792e[_0x4d21ca[_0x609e('0x1d')]]={'$like':'%'+_0x445a40[_0x609e('0x27')][_0x609e('0x32')]+'%'};return _0x4f792e;}})});}_0x24cd22=_[_0x609e('0x33')]({},_0x24cd22,_0x445a40[_0x609e('0x35')]);var _0x2e2a2c={'where':_0x24cd22[_0x609e('0x30')]};return db['VoiceExtension'][_0x609e('0x10')](_0x2e2a2c)[_0x609e('0x14')](function(_0x1f6d34){_0xbafc45['count']=_0x1f6d34;if(_0x445a40['query']['includeAll']){_0x24cd22['include']=[{'all':!![]}];}return db[_0x609e('0x23')][_0x609e('0x36')](_0x24cd22);})[_0x609e('0x14')](function(_0x9915f){_0xbafc45['rows']=_0x9915f;return _0xbafc45;})[_0x609e('0x14')](respondWithFilteredResult(_0x4fb8ca,_0x24cd22))[_0x609e('0x37')](handleError(_0x4fb8ca,null));};exports[_0x609e('0x38')]=function(_0x482eb9,_0x563693){var _0x3f00a7={'raw':![],'where':{'id':_0x482eb9['params']['id']}},_0x344de3={};_0x344de3[_0x609e('0x26')]=_[_0x609e('0x28')](db[_0x609e('0x23')][_0x609e('0x39')]);_0x344de3['query']=_[_0x609e('0x28')](_0x482eb9[_0x609e('0x27')]);_0x344de3[_0x609e('0x29')]=_[_0x609e('0x2a')](_0x344de3[_0x609e('0x26')],_0x344de3[_0x609e('0x27')]);_0x3f00a7[_0x609e('0x2b')]=_[_0x609e('0x2a')](_0x344de3['model'],qs[_0x609e('0x2c')](_0x482eb9[_0x609e('0x27')][_0x609e('0x2c')]));_0x3f00a7[_0x609e('0x2b')]=_0x3f00a7[_0x609e('0x2b')][_0x609e('0x3a')]?_0x3f00a7[_0x609e('0x2b')]:_0x344de3['model'];if(_0x482eb9['query'][_0x609e('0x3b')]){_0x3f00a7['include']=[{'all':!![]}];}_0x3f00a7=_[_0x609e('0x33')]({},_0x3f00a7,_0x482eb9['options']);return db[_0x609e('0x23')][_0x609e('0x1c')](_0x3f00a7)['then'](handleEntityNotFound(_0x563693,null))[_0x609e('0x14')](respondWithResult(_0x563693,null))[_0x609e('0x37')](handleError(_0x563693,null));};exports[_0x609e('0x13')]=function(_0x38d905,_0x16d951){return db[_0x609e('0x23')]['find']({'where':{'id':_0x38d905[_0x609e('0x3c')]['id']}})[_0x609e('0x14')](handleEntityNotFound(_0x16d951,null))[_0x609e('0x14')](removeEntity(_0x16d951,null))[_0x609e('0x37')](handleError(_0x16d951,null));};exports[_0x609e('0x3d')]=function(_0xec27c7,_0xfaca00){if(_0xec27c7[_0x609e('0x3e')][_0x609e('0x1b')]==='outbound'&&!_[_0x609e('0x3f')](_0xec27c7[_0x609e('0x3e')][_0x609e('0x40')],'_')){_0xec27c7['body'][_0x609e('0x40')]='_'['concat'](_0xec27c7[_0x609e('0x3e')][_0x609e('0x40')]);}return db['VoiceExtension'][_0x609e('0x3d')](_0xec27c7[_0x609e('0x3e')],{'raw':![]})[_0x609e('0x14')](function(_0xda7a4a){var _0x1f4eb2=_0xec27c7['user'][_0x609e('0x41')]({'plain':!![]});if(!_0x1f4eb2)throw new Error(_0x609e('0x42'));if(_0x1f4eb2['role']===_0x609e('0x43')){var _0x54f745=_0xda7a4a[_0x609e('0x41')]({'plain':!![]});var _0x5c274a=[{'name':_0x609e('0x15'),'value':_0x609e('0x44')},{'name':_0x609e('0x16'),'value':_0x609e('0x45')},{'name':_0x609e('0x46'),'value':_0x609e('0x17')}];var _0x38221a=_[_0x609e('0x1c')](_0x5c274a,[_0x609e('0x19'),_0x54f745[_0x609e('0x1b')]])['name'];return db[_0x609e('0x47')]['find']({'where':{'name':_0x38221a,'userProfileId':_0x1f4eb2['userProfileId']},'raw':!![]})[_0x609e('0x14')](function(_0x4c7a12){if(_0x4c7a12&&_0x4c7a12[_0x609e('0x48')]===0x0){return db[_0x609e('0x1e')][_0x609e('0x3d')]({'name':_0x54f745[_0x609e('0x1d')],'resourceId':_0x54f745['id'],'type':_0x4c7a12[_0x609e('0x1d')],'sectionId':_0x4c7a12['id']},{})[_0x609e('0x14')](function(){return _0xda7a4a;});}else{return _0xda7a4a;}})[_0x609e('0x37')](function(_0x538cd1){logger['error'](_0x609e('0x49'),_0x538cd1);throw _0x538cd1;});}return _0xda7a4a;})['then'](respondWithResult(_0xfaca00,0xc9))[_0x609e('0x37')](handleError(_0xfaca00,null));};exports[_0x609e('0x4a')]=function(_0x6a780d,_0x44725a){if(_0x6a780d[_0x609e('0x3e')]['id']){delete _0x6a780d[_0x609e('0x3e')]['id'];}return db[_0x609e('0x23')][_0x609e('0x1c')]({'where':{'id':_0x6a780d[_0x609e('0x3c')]['id']}})[_0x609e('0x14')](handleEntityNotFound(_0x44725a,null))['then'](function(_0x70a33d){if(_0x70a33d){return db['VoiceExtension'][_0x609e('0x4a')](_['pick'](_0x6a780d[_0x609e('0x3e')],[_0x609e('0x40'),_0x609e('0x4b'),_0x609e('0x4c'),_0x609e('0x4d'),_0x609e('0x4e'),_0x609e('0x4f'),_0x609e('0x50')]),{'where':{'context':_0x70a33d[_0x609e('0x4b')],'exten':_0x70a33d['exten']},'individualHooks':!![]})['then'](function(_0x186b20){return _0x186b20;});}return null;})['then'](respondWithStatusCode(_0x44725a,null))['catch'](handleError(_0x44725a,null));};exports[_0x609e('0x51')]=function(_0x490a09,_0xda83bd){var _0x439e85=_0x490a09[_0x609e('0x3c')]['id'];var _0x5ebab0=_0x490a09[_0x609e('0x3e')];var _0x4a24a1=0xc8;var _0x3cf32b=null;return db[_0x609e('0x52')][_0x609e('0x53')]({'isolationLevel':db[_0x609e('0x52')][_0x609e('0x54')][_0x609e('0x55')][_0x609e('0x56')]},function(_0x7d17cc){return db['VoiceExtension']['findOne']({'where':{'id':_0x439e85},'transaction':_0x7d17cc})[_0x609e('0x14')](function(_0x50df3c){if(_0x50df3c){return db[_0x609e('0x23')][_0x609e('0x13')]({'where':{'VoiceExtensionId':_0x439e85},'transaction':_0x7d17cc})['then'](function(){var _0x2847df=_['map'](_0x5ebab0,function(_0x5c7c61){_0x5c7c61[_0x609e('0x57')]=_0x439e85;_0x5c7c61[_0x609e('0x58')]=!![];return _0x5c7c61;});return _0x50df3c[_0x609e('0x59')](_0x2847df);})['then'](function(_0x16cc65){return db[_0x609e('0x23')]['bulkCreate'](_0x16cc65,{'transaction':_0x7d17cc});});}else{_0x4a24a1=0x194;_0x3cf32b=[];}});})['then'](function(){if(_0x4a24a1!==0x194){return db[_0x609e('0x23')][_0x609e('0x5a')]({'where':{'isApp':!![],'VoiceExtensionId':_0x439e85},'order':'cast(priority\x20as\x20unsigned)'})[_0x609e('0x14')](function(_0x576c6c){_0x3cf32b=_0x576c6c;});}})[_0x609e('0x37')](function(_0x137737){_0x4a24a1=0x1f4;logger[_0x609e('0x1f')](_0x137737[_0x609e('0x20')]);if(_0x137737[_0x609e('0x1d')]){delete _0x137737[_0x609e('0x1d')];}_0x3cf32b=_0x137737;})[_0x609e('0x5b')](function(){if(_0x3cf32b===null){_0xda83bd[_0x609e('0x9')](_0x4a24a1);}else{if(_0x4a24a1===0x1f4){_0xda83bd['status'](_0x4a24a1)['send'](_0x3cf32b);}else{_0xda83bd[_0x609e('0xb')](_0x4a24a1)[_0x609e('0xc')](_0x3cf32b);}}});};