8eae701e334fbbfffb0c160c09502a8a9cb56d38
[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 _0x10ce=['UserProfileResource','update','context','recordingFormat','cutdigits','alias','addApplications','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','VoiceExtensionId','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','stack','finally','lodash','../../components/parsers/qs','../../config/logger','api','defaults','redis','localhost','socket.io-emitter','./voiceExtension.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','destroy','inbound','OutboundRoutes','outbound','InternalRoutes','internal','filter','ignore','map','value','type','find','then','error','name','send','rawAttributes','fieldName','key','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','options','VoiceExtension','includeAll','include','findAll','rows','show','params','catch','create','body','startsWith','exten','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','InboundRoutes','UserProfileSection','autoAssociation'];(function(_0x4154a6,_0x2c0b8e){var _0x3b2786=function(_0x2f5936){while(--_0x2f5936){_0x4154a6['push'](_0x4154a6['shift']());}};_0x3b2786(++_0x2c0b8e);}(_0x10ce,0x1da));var _0xe10c=function(_0x4bd748,_0x2f731d){_0x4bd748=_0x4bd748-0x0;var _0x3c9e26=_0x10ce[_0x4bd748];return _0x3c9e26;};'use strict';var _=require(_0xe10c('0x0'));var Redis=require('ioredis');var qs=require(_0xe10c('0x1'));var logger=require(_0xe10c('0x2'))(_0xe10c('0x3'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config['redis']=_[_0xe10c('0x4')](config[_0xe10c('0x5')],{'host':_0xe10c('0x6'),'port':0x18eb});var socket=require(_0xe10c('0x7'))(new Redis(config[_0xe10c('0x5')]));require(_0xe10c('0x8'))[_0xe10c('0x9')](socket);function respondWithStatusCode(_0x3354dc,_0x13a764){_0x13a764=_0x13a764||0xcc;return function(_0x107d72){if(_0x107d72){return _0x3354dc[_0xe10c('0xa')](_0x13a764);}return _0x3354dc[_0xe10c('0xb')](_0x13a764)[_0xe10c('0xc')]();};}function respondWithResult(_0x589e02,_0x15b938){_0x15b938=_0x15b938||0xc8;return function(_0x336b35){if(_0x336b35){return _0x589e02[_0xe10c('0xb')](_0x15b938)[_0xe10c('0xd')](_0x336b35);}};}function respondWithFilteredResult(_0x3cabac,_0x33da75){return function(_0x5126fa){if(_0x5126fa){var _0x419d55=typeof _0x33da75[_0xe10c('0xe')]===_0xe10c('0xf')&&typeof _0x33da75[_0xe10c('0x10')]===_0xe10c('0xf');var _0x2b5d87=_0x5126fa['count'];var _0x158ef1=_0x419d55?0x0:_0x33da75['offset'];var _0x5d5b62=_0x419d55?_0x5126fa[_0xe10c('0x11')]:_0x33da75[_0xe10c('0xe')]+_0x33da75[_0xe10c('0x10')];var _0x87d967;if(_0x5d5b62>=_0x2b5d87){_0x5d5b62=_0x2b5d87;_0x87d967=0xc8;}else{_0x87d967=0xce;}_0x3cabac[_0xe10c('0xb')](_0x87d967);return _0x3cabac[_0xe10c('0x12')](_0xe10c('0x13'),_0x158ef1+'-'+_0x5d5b62+'/'+_0x2b5d87)[_0xe10c('0xd')](_0x5126fa);}return null;};}function removeEntity(_0x32cf19){return function(_0x57f7b1){if(_0x57f7b1){return _0x57f7b1[_0xe10c('0x14')]()['then'](function(){var _0x2b26ba=_0x57f7b1['get']({'plain':!![]});var _0x2c030b=[{'name':'InboundRoutes','value':_0xe10c('0x15'),'ignore':![]},{'name':_0xe10c('0x16'),'value':_0xe10c('0x17'),'ignore':![]},{'name':_0xe10c('0x18'),'value':_0xe10c('0x19'),'ignore':![]}];var _0x28793c=_(_0x2c030b)[_0xe10c('0x1a')](_0xe10c('0x1b'))[_0xe10c('0x1c')](_0xe10c('0x1d'))[_0xe10c('0x1d')]();if(_['includes'](_0x28793c,_0x2b26ba[_0xe10c('0x1e')])){return;}var _0x4cc3b0=_[_0xe10c('0x1f')](_0x2c030b,[_0xe10c('0x1d'),_0x2b26ba[_0xe10c('0x1e')]])['name'];return db['UserProfileResource']['destroy']({'where':{'type':_0x4cc3b0,'resourceId':_0x2b26ba['id']}})[_0xe10c('0x20')](function(){return _0x57f7b1;});})['then'](function(){_0x32cf19[_0xe10c('0xb')](0xcc)['end']();});}};}function handleEntityNotFound(_0x376311){return function(_0x28a7b4){if(!_0x28a7b4){_0x376311['sendStatus'](0x194);}return _0x28a7b4;};}function handleError(_0x56f50a,_0x75824b){_0x75824b=_0x75824b||0x1f4;return function(_0x57fba0){logger[_0xe10c('0x21')](_0x57fba0['stack']);if(_0x57fba0[_0xe10c('0x22')]){delete _0x57fba0['name'];}_0x56f50a[_0xe10c('0xb')](_0x75824b)[_0xe10c('0x23')](_0x57fba0);};}exports['index']=function(_0x1e7119,_0x1f47a9){var _0x4737ba={},_0x256312={},_0xcbfae2={'count':0x0,'rows':[]};var _0x3fa8aa=_['map'](db['VoiceExtension'][_0xe10c('0x24')],function(_0x57d5c6){return{'name':_0x57d5c6[_0xe10c('0x25')],'type':_0x57d5c6[_0xe10c('0x1e')][_0xe10c('0x26')]};});_0x256312[_0xe10c('0x27')]=_[_0xe10c('0x1c')](_0x3fa8aa,_0xe10c('0x22'));_0x256312['query']=_[_0xe10c('0x28')](_0x1e7119['query']);_0x256312[_0xe10c('0x29')]=_[_0xe10c('0x2a')](_0x256312[_0xe10c('0x27')],_0x256312[_0xe10c('0x2b')]);_0x4737ba[_0xe10c('0x2c')]=_['intersection'](_0x256312['model'],qs[_0xe10c('0x2d')](_0x1e7119[_0xe10c('0x2b')]['fields']));_0x4737ba[_0xe10c('0x2c')]=_0x4737ba['attributes'][_0xe10c('0x2e')]?_0x4737ba['attributes']:_0x256312[_0xe10c('0x27')];if(!_0x1e7119[_0xe10c('0x2b')][_0xe10c('0x2f')]('nolimit')){_0x4737ba['limit']=qs['limit'](_0x1e7119[_0xe10c('0x2b')]['limit']);_0x4737ba['offset']=qs[_0xe10c('0xe')](_0x1e7119[_0xe10c('0x2b')][_0xe10c('0xe')]);}_0x4737ba[_0xe10c('0x30')]=qs['sort'](_0x1e7119[_0xe10c('0x2b')][_0xe10c('0x31')]);_0x4737ba[_0xe10c('0x32')]=qs['filters'](_[_0xe10c('0x33')](_0x1e7119[_0xe10c('0x2b')],_0x256312[_0xe10c('0x29')]),_0x3fa8aa);if(_0x1e7119[_0xe10c('0x2b')]['filter']){_0x4737ba[_0xe10c('0x32')]=_[_0xe10c('0x34')](_0x4737ba[_0xe10c('0x32')],{'$or':_['map'](_0x3fa8aa,function(_0x30811b){if(_0x30811b[_0xe10c('0x1e')]!=='VIRTUAL'){var _0x1aa04d={};_0x1aa04d[_0x30811b['name']]={'$like':'%'+_0x1e7119[_0xe10c('0x2b')]['filter']+'%'};return _0x1aa04d;}})});}_0x4737ba=_['merge']({},_0x4737ba,_0x1e7119[_0xe10c('0x35')]);var _0x26ace8={'where':_0x4737ba[_0xe10c('0x32')]};return db[_0xe10c('0x36')]['count'](_0x26ace8)['then'](function(_0x59434f){_0xcbfae2[_0xe10c('0x11')]=_0x59434f;if(_0x1e7119[_0xe10c('0x2b')][_0xe10c('0x37')]){_0x4737ba[_0xe10c('0x38')]=[{'all':!![]}];}return db[_0xe10c('0x36')][_0xe10c('0x39')](_0x4737ba);})[_0xe10c('0x20')](function(_0x58311b){_0xcbfae2[_0xe10c('0x3a')]=_0x58311b;return _0xcbfae2;})[_0xe10c('0x20')](respondWithFilteredResult(_0x1f47a9,_0x4737ba))['catch'](handleError(_0x1f47a9,null));};exports[_0xe10c('0x3b')]=function(_0x7e9c3b,_0x2809c7){var _0x31fe00={'raw':![],'where':{'id':_0x7e9c3b[_0xe10c('0x3c')]['id']}},_0xa31a08={};_0xa31a08['model']=_[_0xe10c('0x28')](db['VoiceExtension'][_0xe10c('0x24')]);_0xa31a08[_0xe10c('0x2b')]=_[_0xe10c('0x28')](_0x7e9c3b[_0xe10c('0x2b')]);_0xa31a08[_0xe10c('0x29')]=_['intersection'](_0xa31a08[_0xe10c('0x27')],_0xa31a08[_0xe10c('0x2b')]);_0x31fe00[_0xe10c('0x2c')]=_[_0xe10c('0x2a')](_0xa31a08[_0xe10c('0x27')],qs[_0xe10c('0x2d')](_0x7e9c3b[_0xe10c('0x2b')][_0xe10c('0x2d')]));_0x31fe00['attributes']=_0x31fe00[_0xe10c('0x2c')][_0xe10c('0x2e')]?_0x31fe00[_0xe10c('0x2c')]:_0xa31a08[_0xe10c('0x27')];if(_0x7e9c3b[_0xe10c('0x2b')][_0xe10c('0x37')]){_0x31fe00[_0xe10c('0x38')]=[{'all':!![]}];}_0x31fe00=_['merge']({},_0x31fe00,_0x7e9c3b[_0xe10c('0x35')]);return db['VoiceExtension'][_0xe10c('0x1f')](_0x31fe00)[_0xe10c('0x20')](handleEntityNotFound(_0x2809c7,null))[_0xe10c('0x20')](respondWithResult(_0x2809c7,null))['catch'](handleError(_0x2809c7,null));};exports[_0xe10c('0x14')]=function(_0x2585fb,_0xdca8ac){return db[_0xe10c('0x36')][_0xe10c('0x1f')]({'where':{'id':_0x2585fb[_0xe10c('0x3c')]['id']}})[_0xe10c('0x20')](handleEntityNotFound(_0xdca8ac,null))['then'](removeEntity(_0xdca8ac,null))[_0xe10c('0x3d')](handleError(_0xdca8ac,null));};exports[_0xe10c('0x3e')]=function(_0x4c587c,_0x29c0fb){if(_0x4c587c[_0xe10c('0x3f')]['type']===_0xe10c('0x17')&&!_[_0xe10c('0x40')](_0x4c587c['body'][_0xe10c('0x41')],'_')){_0x4c587c[_0xe10c('0x3f')][_0xe10c('0x41')]='_'['concat'](_0x4c587c[_0xe10c('0x3f')]['exten']);}return db[_0xe10c('0x36')][_0xe10c('0x3e')](_0x4c587c[_0xe10c('0x3f')],{'raw':![]})[_0xe10c('0x20')](function(_0x22c20f){var _0xd67aa5=_0x4c587c['user'][_0xe10c('0x42')]({'plain':!![]});if(!_0xd67aa5)throw new Error(_0xe10c('0x43'));if(_0xd67aa5[_0xe10c('0x44')]==='user'){var _0x2cea5b=_0x22c20f[_0xe10c('0x42')]({'plain':!![]});var _0x2f16a3=[{'name':_0xe10c('0x45'),'value':_0xe10c('0x15')},{'name':_0xe10c('0x16'),'value':_0xe10c('0x17')},{'name':_0xe10c('0x18'),'value':_0xe10c('0x19')}];var _0x26563f=_[_0xe10c('0x1f')](_0x2f16a3,['value',_0x2cea5b[_0xe10c('0x1e')]])[_0xe10c('0x22')];return db[_0xe10c('0x46')]['find']({'where':{'name':_0x26563f,'userProfileId':_0xd67aa5['userProfileId']},'raw':!![]})['then'](function(_0x5e0ba5){if(_0x5e0ba5&&_0x5e0ba5[_0xe10c('0x47')]===0x0){return db[_0xe10c('0x48')]['create']({'name':_0x2cea5b[_0xe10c('0x22')],'resourceId':_0x2cea5b['id'],'type':_0x5e0ba5[_0xe10c('0x22')],'sectionId':_0x5e0ba5['id']},{})[_0xe10c('0x20')](function(){return _0x22c20f;});}else{return _0x22c20f;}})[_0xe10c('0x3d')](function(_0xcedcb1){logger[_0xe10c('0x21')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xcedcb1);throw _0xcedcb1;});}return _0x22c20f;})['then'](respondWithResult(_0x29c0fb,0xc9))[_0xe10c('0x3d')](handleError(_0x29c0fb,null));};exports['update']=function(_0x3e4cc2,_0x47b4f4){if(_0x3e4cc2[_0xe10c('0x3f')]['id']){delete _0x3e4cc2[_0xe10c('0x3f')]['id'];}return db['VoiceExtension'][_0xe10c('0x1f')]({'where':{'id':_0x3e4cc2[_0xe10c('0x3c')]['id']}})[_0xe10c('0x20')](handleEntityNotFound(_0x47b4f4,null))[_0xe10c('0x20')](function(_0x356037){if(_0x356037){return db[_0xe10c('0x36')][_0xe10c('0x49')](_[_0xe10c('0x33')](_0x3e4cc2[_0xe10c('0x3f')],[_0xe10c('0x41'),_0xe10c('0x4a'),'description',_0xe10c('0x4b'),_0xe10c('0x4c'),'mandatoryDisposition',_0xe10c('0x4d')]),{'where':{'context':_0x356037[_0xe10c('0x4a')],'exten':_0x356037[_0xe10c('0x41')]},'individualHooks':!![]})[_0xe10c('0x20')](function(_0x45659c){return _0x45659c;});}return null;})['then'](respondWithStatusCode(_0x47b4f4,null))[_0xe10c('0x3d')](handleError(_0x47b4f4,null));};exports[_0xe10c('0x4e')]=function(_0x1bfc7f,_0x11bd35){var _0x235e10=_0x1bfc7f[_0xe10c('0x3c')]['id'];var _0x1d4415=_0x1bfc7f['body'];var _0x3f0230=0xc8;var _0x153f7a=null;return db[_0xe10c('0x4f')]['transaction']({'isolationLevel':db['sequelize'][_0xe10c('0x50')][_0xe10c('0x51')][_0xe10c('0x52')]},function(_0x257606){return db[_0xe10c('0x36')][_0xe10c('0x53')]({'where':{'id':_0x235e10},'transaction':_0x257606})[_0xe10c('0x20')](function(_0x35f190){if(_0x35f190){return db[_0xe10c('0x36')][_0xe10c('0x14')]({'where':{'VoiceExtensionId':_0x235e10},'transaction':_0x257606})['then'](function(){var _0x16a17b=_[_0xe10c('0x1c')](_0x1d4415,function(_0x1f18e6){_0x1f18e6[_0xe10c('0x54')]=_0x235e10;_0x1f18e6['isApp']=!![];return _0x1f18e6;});return _0x35f190[_0xe10c('0x55')](_0x16a17b);})[_0xe10c('0x20')](function(_0x492759){return db['VoiceExtension'][_0xe10c('0x56')](_0x492759,{'transaction':_0x257606});});}else{_0x3f0230=0x194;_0x153f7a=[];}});})[_0xe10c('0x20')](function(){if(_0x3f0230!==0x194){return db['VoiceExtension'][_0xe10c('0x57')]({'where':{'isApp':!![],'VoiceExtensionId':_0x235e10},'order':_0xe10c('0x58')})[_0xe10c('0x20')](function(_0x258111){_0x153f7a=_0x258111;});}})[_0xe10c('0x3d')](function(_0x3c2bd8){_0x3f0230=0x1f4;logger['error'](_0x3c2bd8[_0xe10c('0x59')]);if(_0x3c2bd8[_0xe10c('0x22')]){delete _0x3c2bd8['name'];}_0x153f7a=_0x3c2bd8;})[_0xe10c('0x5a')](function(){if(_0x153f7a===null){_0x11bd35['sendStatus'](_0x3f0230);}else{if(_0x3f0230===0x1f4){_0x11bd35[_0xe10c('0xb')](_0x3f0230)[_0xe10c('0x23')](_0x153f7a);}else{_0x11bd35[_0xe10c('0xb')](_0x3f0230)[_0xe10c('0xd')](_0x153f7a);}}});};