91b4faece9b90dd07ea6b498604559677f520ff8
[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 _0x7a3f=['filters','intersection','attributes','fields','nolimit','sort','where','pick','merge','options','VoiceExtension','includeAll','include','findAll','rows','catch','params','keys','create','body','outbound','startsWith','exten','concat','user','inbound','OutboundRoutes','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','context','description','recordingFormat','addApplications','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','VoiceExtensionId','isApp','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','send','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','json','offset','undefined','limit','count','Content-Range','then','get','InboundRoutes','internal','filter','map','value','includes','type','find','UserProfileResource','destroy','end','stack','name','index','rawAttributes','key','model','query'];(function(_0x2e48b8,_0x1cb078){var _0x4abeca=function(_0x16df96){while(--_0x16df96){_0x2e48b8['push'](_0x2e48b8['shift']());}};_0x4abeca(++_0x1cb078);}(_0x7a3f,0xdb));var _0xf7a3=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x7a3f[_0x4565bf];return _0x5610ba;};'use strict';var _=require('lodash');var Redis=require(_0xf7a3('0x0'));var qs=require(_0xf7a3('0x1'));var logger=require(_0xf7a3('0x2'))(_0xf7a3('0x3'));var config=require(_0xf7a3('0x4'));var db=require(_0xf7a3('0x5'))['db'];config[_0xf7a3('0x6')]=_[_0xf7a3('0x7')](config[_0xf7a3('0x6')],{'host':_0xf7a3('0x8'),'port':0x18eb});var socket=require(_0xf7a3('0x9'))(new Redis(config[_0xf7a3('0x6')]));require('./voiceExtension.socket')[_0xf7a3('0xa')](socket);function respondWithStatusCode(_0x550452,_0x50c921){_0x50c921=_0x50c921||0xcc;return function(_0x43b261){if(_0x43b261){return _0x550452[_0xf7a3('0xb')](_0x50c921);}return _0x550452['status'](_0x50c921)['end']();};}function respondWithResult(_0x53590a,_0x5b73ca){_0x5b73ca=_0x5b73ca||0xc8;return function(_0x30b988){if(_0x30b988){return _0x53590a[_0xf7a3('0xc')](_0x5b73ca)[_0xf7a3('0xd')](_0x30b988);}};}function respondWithFilteredResult(_0x1800af,_0x140105){return function(_0x2ed03c){if(_0x2ed03c){var _0x243607=typeof _0x140105[_0xf7a3('0xe')]===_0xf7a3('0xf')&&typeof _0x140105[_0xf7a3('0x10')]===_0xf7a3('0xf');var _0x7f03af=_0x2ed03c[_0xf7a3('0x11')];var _0x3bcd60=_0x243607?0x0:_0x140105['offset'];var _0x2bdd5c=_0x243607?_0x2ed03c[_0xf7a3('0x11')]:_0x140105[_0xf7a3('0xe')]+_0x140105['limit'];var _0x14e6c7;if(_0x2bdd5c>=_0x7f03af){_0x2bdd5c=_0x7f03af;_0x14e6c7=0xc8;}else{_0x14e6c7=0xce;}_0x1800af[_0xf7a3('0xc')](_0x14e6c7);return _0x1800af['set'](_0xf7a3('0x12'),_0x3bcd60+'-'+_0x2bdd5c+'/'+_0x7f03af)[_0xf7a3('0xd')](_0x2ed03c);}return null;};}function removeEntity(_0x53046f){return function(_0x3548ea){if(_0x3548ea){return _0x3548ea['destroy']()[_0xf7a3('0x13')](function(){var _0x47bea5=_0x3548ea[_0xf7a3('0x14')]({'plain':!![]});var _0x20079b=[{'name':_0xf7a3('0x15'),'value':'inbound','ignore':![]},{'name':'OutboundRoutes','value':'outbound','ignore':![]},{'name':'InternalRoutes','value':_0xf7a3('0x16'),'ignore':![]}];var _0x4ae843=_(_0x20079b)[_0xf7a3('0x17')]('ignore')[_0xf7a3('0x18')](_0xf7a3('0x19'))[_0xf7a3('0x19')]();if(_[_0xf7a3('0x1a')](_0x4ae843,_0x47bea5[_0xf7a3('0x1b')])){return;}var _0x3c4693=_[_0xf7a3('0x1c')](_0x20079b,[_0xf7a3('0x19'),_0x47bea5['type']])['name'];return db[_0xf7a3('0x1d')][_0xf7a3('0x1e')]({'where':{'type':_0x3c4693,'resourceId':_0x47bea5['id']}})['then'](function(){return _0x3548ea;});})[_0xf7a3('0x13')](function(){_0x53046f['status'](0xcc)[_0xf7a3('0x1f')]();});}};}function handleEntityNotFound(_0x590c97){return function(_0x326d19){if(!_0x326d19){_0x590c97['sendStatus'](0x194);}return _0x326d19;};}function handleError(_0x2d672d,_0x125519){_0x125519=_0x125519||0x1f4;return function(_0x25fddd){logger['error'](_0x25fddd[_0xf7a3('0x20')]);if(_0x25fddd[_0xf7a3('0x21')]){delete _0x25fddd[_0xf7a3('0x21')];}_0x2d672d['status'](_0x125519)['send'](_0x25fddd);};}exports[_0xf7a3('0x22')]=function(_0x1d71c9,_0x4006ea){var _0x192cf4={},_0x1c1340={},_0x564473={'count':0x0,'rows':[]};var _0x452dba=_[_0xf7a3('0x18')](db['VoiceExtension'][_0xf7a3('0x23')],function(_0xcede02){return{'name':_0xcede02['fieldName'],'type':_0xcede02[_0xf7a3('0x1b')][_0xf7a3('0x24')]};});_0x1c1340[_0xf7a3('0x25')]=_[_0xf7a3('0x18')](_0x452dba,_0xf7a3('0x21'));_0x1c1340[_0xf7a3('0x26')]=_['keys'](_0x1d71c9[_0xf7a3('0x26')]);_0x1c1340[_0xf7a3('0x27')]=_[_0xf7a3('0x28')](_0x1c1340[_0xf7a3('0x25')],_0x1c1340[_0xf7a3('0x26')]);_0x192cf4[_0xf7a3('0x29')]=_[_0xf7a3('0x28')](_0x1c1340[_0xf7a3('0x25')],qs[_0xf7a3('0x2a')](_0x1d71c9['query'][_0xf7a3('0x2a')]));_0x192cf4[_0xf7a3('0x29')]=_0x192cf4['attributes']['length']?_0x192cf4[_0xf7a3('0x29')]:_0x1c1340[_0xf7a3('0x25')];if(!_0x1d71c9[_0xf7a3('0x26')]['hasOwnProperty'](_0xf7a3('0x2b'))){_0x192cf4['limit']=qs[_0xf7a3('0x10')](_0x1d71c9[_0xf7a3('0x26')]['limit']);_0x192cf4[_0xf7a3('0xe')]=qs[_0xf7a3('0xe')](_0x1d71c9[_0xf7a3('0x26')][_0xf7a3('0xe')]);}_0x192cf4['order']=qs[_0xf7a3('0x2c')](_0x1d71c9[_0xf7a3('0x26')]['sort']);_0x192cf4[_0xf7a3('0x2d')]=qs[_0xf7a3('0x27')](_[_0xf7a3('0x2e')](_0x1d71c9[_0xf7a3('0x26')],_0x1c1340[_0xf7a3('0x27')]),_0x452dba);if(_0x1d71c9[_0xf7a3('0x26')][_0xf7a3('0x17')]){_0x192cf4['where']=_['merge'](_0x192cf4[_0xf7a3('0x2d')],{'$or':_[_0xf7a3('0x18')](_0x452dba,function(_0x5b4b46){if(_0x5b4b46[_0xf7a3('0x1b')]!=='VIRTUAL'){var _0x465d66={};_0x465d66[_0x5b4b46[_0xf7a3('0x21')]]={'$like':'%'+_0x1d71c9['query'][_0xf7a3('0x17')]+'%'};return _0x465d66;}})});}_0x192cf4=_[_0xf7a3('0x2f')]({},_0x192cf4,_0x1d71c9[_0xf7a3('0x30')]);var _0x3c2fd2={'where':_0x192cf4['where']};return db[_0xf7a3('0x31')][_0xf7a3('0x11')](_0x3c2fd2)[_0xf7a3('0x13')](function(_0x551e07){_0x564473['count']=_0x551e07;if(_0x1d71c9[_0xf7a3('0x26')][_0xf7a3('0x32')]){_0x192cf4[_0xf7a3('0x33')]=[{'all':!![]}];}return db[_0xf7a3('0x31')][_0xf7a3('0x34')](_0x192cf4);})[_0xf7a3('0x13')](function(_0x2eeba9){_0x564473[_0xf7a3('0x35')]=_0x2eeba9;return _0x564473;})[_0xf7a3('0x13')](respondWithFilteredResult(_0x4006ea,_0x192cf4))[_0xf7a3('0x36')](handleError(_0x4006ea,null));};exports['show']=function(_0x32ede4,_0x3cf4a2){var _0x2e6e66={'raw':![],'where':{'id':_0x32ede4[_0xf7a3('0x37')]['id']}},_0x367f1b={};_0x367f1b[_0xf7a3('0x25')]=_[_0xf7a3('0x38')](db['VoiceExtension'][_0xf7a3('0x23')]);_0x367f1b['query']=_[_0xf7a3('0x38')](_0x32ede4['query']);_0x367f1b[_0xf7a3('0x27')]=_[_0xf7a3('0x28')](_0x367f1b[_0xf7a3('0x25')],_0x367f1b['query']);_0x2e6e66[_0xf7a3('0x29')]=_[_0xf7a3('0x28')](_0x367f1b[_0xf7a3('0x25')],qs[_0xf7a3('0x2a')](_0x32ede4[_0xf7a3('0x26')][_0xf7a3('0x2a')]));_0x2e6e66[_0xf7a3('0x29')]=_0x2e6e66[_0xf7a3('0x29')]['length']?_0x2e6e66[_0xf7a3('0x29')]:_0x367f1b[_0xf7a3('0x25')];if(_0x32ede4['query'][_0xf7a3('0x32')]){_0x2e6e66['include']=[{'all':!![]}];}_0x2e6e66=_[_0xf7a3('0x2f')]({},_0x2e6e66,_0x32ede4[_0xf7a3('0x30')]);return db[_0xf7a3('0x31')][_0xf7a3('0x1c')](_0x2e6e66)[_0xf7a3('0x13')](handleEntityNotFound(_0x3cf4a2,null))[_0xf7a3('0x13')](respondWithResult(_0x3cf4a2,null))[_0xf7a3('0x36')](handleError(_0x3cf4a2,null));};exports[_0xf7a3('0x1e')]=function(_0x12d714,_0x44cf9f){return db['VoiceExtension'][_0xf7a3('0x1c')]({'where':{'id':_0x12d714[_0xf7a3('0x37')]['id']}})[_0xf7a3('0x13')](handleEntityNotFound(_0x44cf9f,null))[_0xf7a3('0x13')](removeEntity(_0x44cf9f,null))[_0xf7a3('0x36')](handleError(_0x44cf9f,null));};exports[_0xf7a3('0x39')]=function(_0x136a2b,_0x51d88f){if(_0x136a2b[_0xf7a3('0x3a')][_0xf7a3('0x1b')]===_0xf7a3('0x3b')&&!_[_0xf7a3('0x3c')](_0x136a2b[_0xf7a3('0x3a')][_0xf7a3('0x3d')],'_')){_0x136a2b[_0xf7a3('0x3a')]['exten']='_'[_0xf7a3('0x3e')](_0x136a2b['body'][_0xf7a3('0x3d')]);}return db[_0xf7a3('0x31')][_0xf7a3('0x39')](_0x136a2b[_0xf7a3('0x3a')],{'raw':![]})[_0xf7a3('0x13')](function(_0x4187b6){var _0x4e5205=_0x136a2b['user'][_0xf7a3('0x14')]({'plain':!![]});if(!_0x4e5205)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4e5205['role']===_0xf7a3('0x3f')){var _0x2018c2=_0x4187b6[_0xf7a3('0x14')]({'plain':!![]});var _0x482f55=[{'name':_0xf7a3('0x15'),'value':_0xf7a3('0x40')},{'name':_0xf7a3('0x41'),'value':_0xf7a3('0x3b')},{'name':'InternalRoutes','value':'internal'}];var _0x59aa92=_[_0xf7a3('0x1c')](_0x482f55,[_0xf7a3('0x19'),_0x2018c2[_0xf7a3('0x1b')]])[_0xf7a3('0x21')];return db[_0xf7a3('0x42')]['find']({'where':{'name':_0x59aa92,'userProfileId':_0x4e5205[_0xf7a3('0x43')]},'raw':!![]})['then'](function(_0xf616fc){if(_0xf616fc&&_0xf616fc['autoAssociation']===0x0){return db['UserProfileResource'][_0xf7a3('0x39')]({'name':_0x2018c2[_0xf7a3('0x21')],'resourceId':_0x2018c2['id'],'type':_0xf616fc[_0xf7a3('0x21')],'sectionId':_0xf616fc['id']},{})['then'](function(){return _0x4187b6;});}else{return _0x4187b6;}})[_0xf7a3('0x36')](function(_0x1afa2b){logger[_0xf7a3('0x44')](_0xf7a3('0x45'),_0x1afa2b);throw _0x1afa2b;});}return _0x4187b6;})[_0xf7a3('0x13')](respondWithResult(_0x51d88f,0xc9))[_0xf7a3('0x36')](handleError(_0x51d88f,null));};exports[_0xf7a3('0x46')]=function(_0x340dd3,_0x4a420e){if(_0x340dd3[_0xf7a3('0x3a')]['id']){delete _0x340dd3[_0xf7a3('0x3a')]['id'];}return db[_0xf7a3('0x31')][_0xf7a3('0x1c')]({'where':{'id':_0x340dd3[_0xf7a3('0x37')]['id']}})[_0xf7a3('0x13')](handleEntityNotFound(_0x4a420e,null))[_0xf7a3('0x13')](function(_0x4eae19){if(_0x4eae19){return db['VoiceExtension']['update'](_[_0xf7a3('0x2e')](_0x340dd3[_0xf7a3('0x3a')],[_0xf7a3('0x3d'),_0xf7a3('0x47'),_0xf7a3('0x48'),_0xf7a3('0x49'),'cutdigits','mandatoryDisposition','alias']),{'where':{'context':_0x4eae19[_0xf7a3('0x47')],'exten':_0x4eae19[_0xf7a3('0x3d')]},'individualHooks':!![]})[_0xf7a3('0x13')](function(_0x553256){return _0x553256;});}return null;})[_0xf7a3('0x13')](respondWithStatusCode(_0x4a420e,null))['catch'](handleError(_0x4a420e,null));};exports[_0xf7a3('0x4a')]=function(_0x529864,_0x3c5dda){var _0x4e649c=_0x529864['params']['id'];var _0x412b63=_0x529864[_0xf7a3('0x3a')];var _0x5a45d3=0xc8;var _0x2047f0=null;return db['sequelize'][_0xf7a3('0x4b')]({'isolationLevel':db['sequelize'][_0xf7a3('0x4c')][_0xf7a3('0x4d')][_0xf7a3('0x4e')]},function(_0x1c025a){return db[_0xf7a3('0x31')][_0xf7a3('0x4f')]({'where':{'id':_0x4e649c},'transaction':_0x1c025a})['then'](function(_0x138b1d){if(_0x138b1d){return db[_0xf7a3('0x31')][_0xf7a3('0x1e')]({'where':{'VoiceExtensionId':_0x4e649c},'transaction':_0x1c025a})['then'](function(){var _0x437740=_[_0xf7a3('0x18')](_0x412b63,function(_0x4cd992){_0x4cd992[_0xf7a3('0x50')]=_0x4e649c;_0x4cd992[_0xf7a3('0x51')]=!![];return _0x4cd992;});return _0x138b1d['createRouting'](_0x437740);})[_0xf7a3('0x13')](function(_0xff5364){return db[_0xf7a3('0x31')][_0xf7a3('0x52')](_0xff5364,{'transaction':_0x1c025a});});}else{_0x5a45d3=0x194;_0x2047f0=[];}});})[_0xf7a3('0x13')](function(){if(_0x5a45d3!==0x194){return db[_0xf7a3('0x31')][_0xf7a3('0x53')]({'where':{'isApp':!![],'VoiceExtensionId':_0x4e649c},'order':_0xf7a3('0x54')})[_0xf7a3('0x13')](function(_0xf08ec8){_0x2047f0=_0xf08ec8;});}})[_0xf7a3('0x36')](function(_0x417dd4){_0x5a45d3=0x1f4;logger[_0xf7a3('0x44')](_0x417dd4[_0xf7a3('0x20')]);if(_0x417dd4[_0xf7a3('0x21')]){delete _0x417dd4[_0xf7a3('0x21')];}_0x2047f0=_0x417dd4;})['finally'](function(){if(_0x2047f0===null){_0x3c5dda['sendStatus'](_0x5a45d3);}else{if(_0x5a45d3===0x1f4){_0x3c5dda[_0xf7a3('0xc')](_0x5a45d3)[_0xf7a3('0x55')](_0x2047f0);}else{_0x3c5dda[_0xf7a3('0xc')](_0x5a45d3)['json'](_0x2047f0);}}});};