ff98e1668e13949df681e4df331fa175bd26cac5
[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 _0x2243=['user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','OutboundRoutes','internal','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','context','description','recordingFormat','cutdigits','sequelize','transaction','Transaction','READ_COMMITTED','findOne','VoiceExtensionId','isApp','createRouting','bulkCreate','findAndCountAll','stack','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','sendStatus','status','json','offset','undefined','count','limit','Content-Range','then','get','InboundRoutes','inbound','outbound','InternalRoutes','filter','ignore','map','value','includes','type','find','name','UserProfileResource','destroy','end','error','index','VoiceExtension','rawAttributes','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','sort','where','pick','merge','VIRTUAL','options','includeAll','findAll','show','params','include','catch','body','exten','concat','create'];(function(_0x57b07c,_0x3035a5){var _0x372f20=function(_0x4f8e3a){while(--_0x4f8e3a){_0x57b07c['push'](_0x57b07c['shift']());}};_0x372f20(++_0x3035a5);}(_0x2243,0x1da));var _0x3224=function(_0x1cc3a0,_0x31c0ef){_0x1cc3a0=_0x1cc3a0-0x0;var _0x55372e=_0x2243[_0x1cc3a0];return _0x55372e;};'use strict';var _=require(_0x3224('0x0'));var Redis=require(_0x3224('0x1'));var qs=require(_0x3224('0x2'));var logger=require(_0x3224('0x3'))(_0x3224('0x4'));var config=require(_0x3224('0x5'));var db=require(_0x3224('0x6'))['db'];config[_0x3224('0x7')]=_[_0x3224('0x8')](config['redis'],{'host':_0x3224('0x9'),'port':0x18eb});var socket=require(_0x3224('0xa'))(new Redis(config[_0x3224('0x7')]));require(_0x3224('0xb'))[_0x3224('0xc')](socket);function respondWithStatusCode(_0x478030,_0x486849){_0x486849=_0x486849||0xcc;return function(_0x1b8eb9){if(_0x1b8eb9){return _0x478030[_0x3224('0xd')](_0x486849);}return _0x478030[_0x3224('0xe')](_0x486849)['end']();};}function respondWithResult(_0x71943,_0x1da815){_0x1da815=_0x1da815||0xc8;return function(_0x4a1e45){if(_0x4a1e45){return _0x71943[_0x3224('0xe')](_0x1da815)[_0x3224('0xf')](_0x4a1e45);}};}function respondWithFilteredResult(_0x5884c7,_0x15214a){return function(_0x2ffdbd){if(_0x2ffdbd){var _0x1bce8f=typeof _0x15214a[_0x3224('0x10')]===_0x3224('0x11')&&typeof _0x15214a['limit']==='undefined';var _0x2bd2af=_0x2ffdbd[_0x3224('0x12')];var _0x4a2449=_0x1bce8f?0x0:_0x15214a[_0x3224('0x10')];var _0x3d6217=_0x1bce8f?_0x2ffdbd['count']:_0x15214a[_0x3224('0x10')]+_0x15214a[_0x3224('0x13')];var _0x28f4fe;if(_0x3d6217>=_0x2bd2af){_0x3d6217=_0x2bd2af;_0x28f4fe=0xc8;}else{_0x28f4fe=0xce;}_0x5884c7[_0x3224('0xe')](_0x28f4fe);return _0x5884c7['set'](_0x3224('0x14'),_0x4a2449+'-'+_0x3d6217+'/'+_0x2bd2af)[_0x3224('0xf')](_0x2ffdbd);}return null;};}function removeEntity(_0x4ce322){return function(_0x227b62){if(_0x227b62){return _0x227b62['destroy']()[_0x3224('0x15')](function(){var _0x2828f7=_0x227b62[_0x3224('0x16')]({'plain':!![]});var _0x149f2d=[{'name':_0x3224('0x17'),'value':_0x3224('0x18'),'ignore':![]},{'name':'OutboundRoutes','value':_0x3224('0x19'),'ignore':![]},{'name':_0x3224('0x1a'),'value':'internal','ignore':![]}];var _0x34bd15=_(_0x149f2d)[_0x3224('0x1b')](_0x3224('0x1c'))[_0x3224('0x1d')](_0x3224('0x1e'))[_0x3224('0x1e')]();if(_[_0x3224('0x1f')](_0x34bd15,_0x2828f7[_0x3224('0x20')])){return;}var _0x1086b7=_[_0x3224('0x21')](_0x149f2d,[_0x3224('0x1e'),_0x2828f7['type']])[_0x3224('0x22')];return db[_0x3224('0x23')][_0x3224('0x24')]({'where':{'type':_0x1086b7,'resourceId':_0x2828f7['id']}})[_0x3224('0x15')](function(){return _0x227b62;});})[_0x3224('0x15')](function(){_0x4ce322[_0x3224('0xe')](0xcc)[_0x3224('0x25')]();});}};}function handleEntityNotFound(_0xa25153){return function(_0xddce92){if(!_0xddce92){_0xa25153['sendStatus'](0x194);}return _0xddce92;};}function handleError(_0x453468,_0x591844){_0x591844=_0x591844||0x1f4;return function(_0x597c84){logger[_0x3224('0x26')](_0x597c84['stack']);if(_0x597c84[_0x3224('0x22')]){delete _0x597c84[_0x3224('0x22')];}_0x453468[_0x3224('0xe')](_0x591844)['send'](_0x597c84);};}exports[_0x3224('0x27')]=function(_0x3b6f9a,_0x30f10b){var _0x34a1b3={},_0x509484={},_0x3e41af={'count':0x0,'rows':[]};var _0x5ed6d7=_[_0x3224('0x1d')](db[_0x3224('0x28')][_0x3224('0x29')],function(_0x4f9d13){return{'name':_0x4f9d13['fieldName'],'type':_0x4f9d13[_0x3224('0x20')]['key']};});_0x509484[_0x3224('0x2a')]=_[_0x3224('0x1d')](_0x5ed6d7,_0x3224('0x22'));_0x509484['query']=_[_0x3224('0x2b')](_0x3b6f9a[_0x3224('0x2c')]);_0x509484[_0x3224('0x2d')]=_[_0x3224('0x2e')](_0x509484['model'],_0x509484['query']);_0x34a1b3['attributes']=_[_0x3224('0x2e')](_0x509484[_0x3224('0x2a')],qs['fields'](_0x3b6f9a[_0x3224('0x2c')][_0x3224('0x2f')]));_0x34a1b3[_0x3224('0x30')]=_0x34a1b3[_0x3224('0x30')]['length']?_0x34a1b3['attributes']:_0x509484[_0x3224('0x2a')];if(!_0x3b6f9a[_0x3224('0x2c')][_0x3224('0x31')]('nolimit')){_0x34a1b3[_0x3224('0x13')]=qs[_0x3224('0x13')](_0x3b6f9a[_0x3224('0x2c')]['limit']);_0x34a1b3[_0x3224('0x10')]=qs[_0x3224('0x10')](_0x3b6f9a[_0x3224('0x2c')]['offset']);}_0x34a1b3['order']=qs['sort'](_0x3b6f9a[_0x3224('0x2c')][_0x3224('0x32')]);_0x34a1b3[_0x3224('0x33')]=qs['filters'](_[_0x3224('0x34')](_0x3b6f9a[_0x3224('0x2c')],_0x509484['filters']),_0x5ed6d7);if(_0x3b6f9a[_0x3224('0x2c')][_0x3224('0x1b')]){_0x34a1b3[_0x3224('0x33')]=_[_0x3224('0x35')](_0x34a1b3[_0x3224('0x33')],{'$or':_[_0x3224('0x1d')](_0x5ed6d7,function(_0x273f31){if(_0x273f31[_0x3224('0x20')]!==_0x3224('0x36')){var _0x1a6d88={};_0x1a6d88[_0x273f31['name']]={'$like':'%'+_0x3b6f9a[_0x3224('0x2c')][_0x3224('0x1b')]+'%'};return _0x1a6d88;}})});}_0x34a1b3=_[_0x3224('0x35')]({},_0x34a1b3,_0x3b6f9a[_0x3224('0x37')]);var _0x1096bd={'where':_0x34a1b3[_0x3224('0x33')]};return db[_0x3224('0x28')][_0x3224('0x12')](_0x1096bd)[_0x3224('0x15')](function(_0x538da4){_0x3e41af['count']=_0x538da4;if(_0x3b6f9a[_0x3224('0x2c')][_0x3224('0x38')]){_0x34a1b3['include']=[{'all':!![]}];}return db[_0x3224('0x28')][_0x3224('0x39')](_0x34a1b3);})[_0x3224('0x15')](function(_0x11b4f1){_0x3e41af['rows']=_0x11b4f1;return _0x3e41af;})[_0x3224('0x15')](respondWithFilteredResult(_0x30f10b,_0x34a1b3))['catch'](handleError(_0x30f10b,null));};exports[_0x3224('0x3a')]=function(_0x4593bf,_0x34a4a7){var _0x2657fa={'raw':![],'where':{'id':_0x4593bf[_0x3224('0x3b')]['id']}},_0x4b7b4e={};_0x4b7b4e[_0x3224('0x2a')]=_[_0x3224('0x2b')](db['VoiceExtension'][_0x3224('0x29')]);_0x4b7b4e['query']=_[_0x3224('0x2b')](_0x4593bf[_0x3224('0x2c')]);_0x4b7b4e[_0x3224('0x2d')]=_[_0x3224('0x2e')](_0x4b7b4e['model'],_0x4b7b4e[_0x3224('0x2c')]);_0x2657fa[_0x3224('0x30')]=_[_0x3224('0x2e')](_0x4b7b4e['model'],qs['fields'](_0x4593bf[_0x3224('0x2c')][_0x3224('0x2f')]));_0x2657fa['attributes']=_0x2657fa['attributes']['length']?_0x2657fa[_0x3224('0x30')]:_0x4b7b4e['model'];if(_0x4593bf[_0x3224('0x2c')][_0x3224('0x38')]){_0x2657fa[_0x3224('0x3c')]=[{'all':!![]}];}_0x2657fa=_[_0x3224('0x35')]({},_0x2657fa,_0x4593bf[_0x3224('0x37')]);return db[_0x3224('0x28')][_0x3224('0x21')](_0x2657fa)[_0x3224('0x15')](handleEntityNotFound(_0x34a4a7,null))[_0x3224('0x15')](respondWithResult(_0x34a4a7,null))['catch'](handleError(_0x34a4a7,null));};exports[_0x3224('0x24')]=function(_0x1b8f4d,_0x19c90c){return db[_0x3224('0x28')]['find']({'where':{'id':_0x1b8f4d[_0x3224('0x3b')]['id']}})[_0x3224('0x15')](handleEntityNotFound(_0x19c90c,null))[_0x3224('0x15')](removeEntity(_0x19c90c,null))[_0x3224('0x3d')](handleError(_0x19c90c,null));};exports['create']=function(_0x5c5c8b,_0x2a8265){if(_0x5c5c8b[_0x3224('0x3e')][_0x3224('0x20')]==='outbound'&&!_['startsWith'](_0x5c5c8b[_0x3224('0x3e')][_0x3224('0x3f')],'_')){_0x5c5c8b['body'][_0x3224('0x3f')]='_'[_0x3224('0x40')](_0x5c5c8b[_0x3224('0x3e')][_0x3224('0x3f')]);}return db[_0x3224('0x28')][_0x3224('0x41')](_0x5c5c8b[_0x3224('0x3e')],{'raw':![]})[_0x3224('0x15')](function(_0x11597f){var _0x194ff0=_0x5c5c8b[_0x3224('0x42')][_0x3224('0x16')]({'plain':!![]});if(!_0x194ff0)throw new Error(_0x3224('0x43'));if(_0x194ff0[_0x3224('0x44')]===_0x3224('0x42')){var _0x5b1735=_0x11597f['get']({'plain':!![]});var _0xf94917=[{'name':_0x3224('0x17'),'value':'inbound'},{'name':_0x3224('0x45'),'value':_0x3224('0x19')},{'name':_0x3224('0x1a'),'value':_0x3224('0x46')}];var _0x3bf59d=_['find'](_0xf94917,[_0x3224('0x1e'),_0x5b1735['type']])[_0x3224('0x22')];return db[_0x3224('0x47')]['find']({'where':{'name':_0x3bf59d,'userProfileId':_0x194ff0['userProfileId']},'raw':!![]})['then'](function(_0x39deff){if(_0x39deff&&_0x39deff[_0x3224('0x48')]===0x0){return db[_0x3224('0x23')]['create']({'name':_0x5b1735['name'],'resourceId':_0x5b1735['id'],'type':_0x39deff[_0x3224('0x22')],'sectionId':_0x39deff['id']},{})['then'](function(){return _0x11597f;});}else{return _0x11597f;}})['catch'](function(_0x46604e){logger['error'](_0x3224('0x49'),_0x46604e);throw _0x46604e;});}return _0x11597f;})['then'](respondWithResult(_0x2a8265,0xc9))[_0x3224('0x3d')](handleError(_0x2a8265,null));};exports[_0x3224('0x4a')]=function(_0xc07c9d,_0x39504d){if(_0xc07c9d[_0x3224('0x3e')]['id']){delete _0xc07c9d['body']['id'];}return db[_0x3224('0x28')][_0x3224('0x21')]({'where':{'id':_0xc07c9d['params']['id']}})[_0x3224('0x15')](handleEntityNotFound(_0x39504d,null))[_0x3224('0x15')](function(_0xbb3cdc){if(_0xbb3cdc){return db[_0x3224('0x28')][_0x3224('0x4a')](_[_0x3224('0x34')](_0xc07c9d['body'],[_0x3224('0x3f'),_0x3224('0x4b'),_0x3224('0x4c'),_0x3224('0x4d'),_0x3224('0x4e'),'mandatoryDisposition','alias']),{'where':{'context':_0xbb3cdc[_0x3224('0x4b')],'exten':_0xbb3cdc[_0x3224('0x3f')]},'individualHooks':!![]})['then'](function(_0x484722){return _0x484722;});}return null;})['then'](respondWithStatusCode(_0x39504d,null))[_0x3224('0x3d')](handleError(_0x39504d,null));};exports['addApplications']=function(_0x5c80f7,_0x26878b){var _0x478663=_0x5c80f7[_0x3224('0x3b')]['id'];var _0x1d138e=_0x5c80f7['body'];var _0xf51d19=0xc8;var _0x1afdd6=null;return db[_0x3224('0x4f')][_0x3224('0x50')]({'isolationLevel':db['sequelize'][_0x3224('0x51')]['ISOLATION_LEVELS'][_0x3224('0x52')]},function(_0x29e83a){return db[_0x3224('0x28')][_0x3224('0x53')]({'where':{'id':_0x478663},'transaction':_0x29e83a})[_0x3224('0x15')](function(_0x3d01ad){if(_0x3d01ad){return db[_0x3224('0x28')][_0x3224('0x24')]({'where':{'VoiceExtensionId':_0x478663},'transaction':_0x29e83a})[_0x3224('0x15')](function(){var _0x1d096b=_['map'](_0x1d138e,function(_0x2566b2){_0x2566b2[_0x3224('0x54')]=_0x478663;_0x2566b2[_0x3224('0x55')]=!![];return _0x2566b2;});return _0x3d01ad[_0x3224('0x56')](_0x1d096b);})[_0x3224('0x15')](function(_0x4544fd){return db['VoiceExtension'][_0x3224('0x57')](_0x4544fd,{'transaction':_0x29e83a});});}else{_0xf51d19=0x194;_0x1afdd6=[];}});})[_0x3224('0x15')](function(){if(_0xf51d19!==0x194){return db['VoiceExtension'][_0x3224('0x58')]({'where':{'isApp':!![],'VoiceExtensionId':_0x478663},'order':'cast(priority\x20as\x20unsigned)'})[_0x3224('0x15')](function(_0x3cd6a0){_0x1afdd6=_0x3cd6a0;});}})[_0x3224('0x3d')](function(_0x4450c9){_0xf51d19=0x1f4;logger['error'](_0x4450c9[_0x3224('0x59')]);if(_0x4450c9[_0x3224('0x22')]){delete _0x4450c9[_0x3224('0x22')];}_0x1afdd6=_0x4450c9;})['finally'](function(){if(_0x1afdd6===null){_0x26878b[_0x3224('0xd')](_0xf51d19);}else{if(_0xf51d19===0x1f4){_0x26878b[_0x3224('0xe')](_0xf51d19)['send'](_0x1afdd6);}else{_0x26878b[_0x3224('0xe')](_0xf51d19)['json'](_0x1afdd6);}}});};