Built motion from commit 52c8a02d.|2.6.29
[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 _0x7a74=['userProfileId','autoAssociation','update','pick','context','description','recordingFormat','mandatoryDisposition','alias','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','isApp','createRouting','bulkCreate','cast(priority\x20as\x20unsigned)','error','finally','json','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','offset','undefined','count','limit','Content-Range','destroy','then','InboundRoutes','inbound','outbound','InternalRoutes','internal','filter','ignore','value','type','name','UserProfileResource','stack','index','map','VoiceExtension','rawAttributes','fieldName','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','where','merge','VIRTUAL','catch','show','params','includeAll','include','options','create','startsWith','exten','concat','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','UserProfileSection'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7a74,0xd1));var _0x47a7=function(_0x38537f,_0x252124){_0x38537f=_0x38537f-0x0;var _0x141e23=_0x7a74[_0x38537f];return _0x141e23;};'use strict';var _=require(_0x47a7('0x0'));var Redis=require('ioredis');var qs=require(_0x47a7('0x1'));var logger=require(_0x47a7('0x2'))(_0x47a7('0x3'));var config=require(_0x47a7('0x4'));var db=require('../../mysqldb')['db'];config[_0x47a7('0x5')]=_[_0x47a7('0x6')](config[_0x47a7('0x5')],{'host':_0x47a7('0x7'),'port':0x18eb});var socket=require(_0x47a7('0x8'))(new Redis(config['redis']));require('./voiceExtension.socket')[_0x47a7('0x9')](socket);function respondWithStatusCode(_0x5bc349,_0x35ee39){_0x35ee39=_0x35ee39||0xcc;return function(_0x4baf0f){if(_0x4baf0f){return _0x5bc349[_0x47a7('0xa')](_0x35ee39);}return _0x5bc349[_0x47a7('0xb')](_0x35ee39)[_0x47a7('0xc')]();};}function respondWithResult(_0x531a72,_0xe0f61c){_0xe0f61c=_0xe0f61c||0xc8;return function(_0x48500a){if(_0x48500a){return _0x531a72[_0x47a7('0xb')](_0xe0f61c)['json'](_0x48500a);}};}function respondWithFilteredResult(_0x134e50,_0x3c0b15){return function(_0xfce44e){if(_0xfce44e){var _0x52f68b=typeof _0x3c0b15[_0x47a7('0xd')]==='undefined'&&typeof _0x3c0b15['limit']===_0x47a7('0xe');var _0x2aa7a9=_0xfce44e['count'];var _0x363379=_0x52f68b?0x0:_0x3c0b15[_0x47a7('0xd')];var _0x10aa31=_0x52f68b?_0xfce44e[_0x47a7('0xf')]:_0x3c0b15[_0x47a7('0xd')]+_0x3c0b15[_0x47a7('0x10')];var _0x471ddf;if(_0x10aa31>=_0x2aa7a9){_0x10aa31=_0x2aa7a9;_0x471ddf=0xc8;}else{_0x471ddf=0xce;}_0x134e50[_0x47a7('0xb')](_0x471ddf);return _0x134e50['set'](_0x47a7('0x11'),_0x363379+'-'+_0x10aa31+'/'+_0x2aa7a9)['json'](_0xfce44e);}return null;};}function removeEntity(_0x1458b1){return function(_0x36de38){if(_0x36de38){return _0x36de38[_0x47a7('0x12')]()[_0x47a7('0x13')](function(){var _0x117264=_0x36de38['get']({'plain':!![]});var _0x59fd0b=[{'name':_0x47a7('0x14'),'value':_0x47a7('0x15'),'ignore':![]},{'name':'OutboundRoutes','value':_0x47a7('0x16'),'ignore':![]},{'name':_0x47a7('0x17'),'value':_0x47a7('0x18'),'ignore':![]}];var _0x5f456c=_(_0x59fd0b)[_0x47a7('0x19')](_0x47a7('0x1a'))['map'](_0x47a7('0x1b'))[_0x47a7('0x1b')]();if(_['includes'](_0x5f456c,_0x117264[_0x47a7('0x1c')])){return;}var _0x3449f5=_['find'](_0x59fd0b,[_0x47a7('0x1b'),_0x117264['type']])[_0x47a7('0x1d')];return db[_0x47a7('0x1e')][_0x47a7('0x12')]({'where':{'type':_0x3449f5,'resourceId':_0x117264['id']}})[_0x47a7('0x13')](function(){return _0x36de38;});})[_0x47a7('0x13')](function(){_0x1458b1[_0x47a7('0xb')](0xcc)['end']();});}};}function handleEntityNotFound(_0x46d2db){return function(_0x15aa79){if(!_0x15aa79){_0x46d2db[_0x47a7('0xa')](0x194);}return _0x15aa79;};}function handleError(_0x565804,_0x57b40d){_0x57b40d=_0x57b40d||0x1f4;return function(_0x288d94){logger['error'](_0x288d94[_0x47a7('0x1f')]);if(_0x288d94[_0x47a7('0x1d')]){delete _0x288d94[_0x47a7('0x1d')];}_0x565804[_0x47a7('0xb')](_0x57b40d)['send'](_0x288d94);};}exports[_0x47a7('0x20')]=function(_0xa598e0,_0x5e1ebd){var _0x32a172={},_0x3b412e={},_0x4b5f9d={'count':0x0,'rows':[]};var _0x2e28e3=_[_0x47a7('0x21')](db[_0x47a7('0x22')][_0x47a7('0x23')],function(_0x1a64e9){return{'name':_0x1a64e9[_0x47a7('0x24')],'type':_0x1a64e9[_0x47a7('0x1c')][_0x47a7('0x25')]};});_0x3b412e[_0x47a7('0x26')]=_[_0x47a7('0x21')](_0x2e28e3,_0x47a7('0x1d'));_0x3b412e['query']=_[_0x47a7('0x27')](_0xa598e0[_0x47a7('0x28')]);_0x3b412e['filters']=_[_0x47a7('0x29')](_0x3b412e[_0x47a7('0x26')],_0x3b412e['query']);_0x32a172[_0x47a7('0x2a')]=_[_0x47a7('0x29')](_0x3b412e[_0x47a7('0x26')],qs['fields'](_0xa598e0[_0x47a7('0x28')][_0x47a7('0x2b')]));_0x32a172[_0x47a7('0x2a')]=_0x32a172['attributes'][_0x47a7('0x2c')]?_0x32a172['attributes']:_0x3b412e['model'];if(!_0xa598e0['query'][_0x47a7('0x2d')](_0x47a7('0x2e'))){_0x32a172['limit']=qs[_0x47a7('0x10')](_0xa598e0['query'][_0x47a7('0x10')]);_0x32a172[_0x47a7('0xd')]=qs[_0x47a7('0xd')](_0xa598e0['query'][_0x47a7('0xd')]);}_0x32a172[_0x47a7('0x2f')]=qs[_0x47a7('0x30')](_0xa598e0[_0x47a7('0x28')]['sort']);_0x32a172['where']=qs[_0x47a7('0x31')](_['pick'](_0xa598e0['query'],_0x3b412e[_0x47a7('0x31')]),_0x2e28e3);if(_0xa598e0[_0x47a7('0x28')]['filter']){_0x32a172[_0x47a7('0x32')]=_[_0x47a7('0x33')](_0x32a172['where'],{'$or':_[_0x47a7('0x21')](_0x2e28e3,function(_0x58eb92){if(_0x58eb92[_0x47a7('0x1c')]!==_0x47a7('0x34')){var _0x28d702={};_0x28d702[_0x58eb92['name']]={'$like':'%'+_0xa598e0[_0x47a7('0x28')]['filter']+'%'};return _0x28d702;}})});}_0x32a172=_[_0x47a7('0x33')]({},_0x32a172,_0xa598e0['options']);var _0x1580f7={'where':_0x32a172[_0x47a7('0x32')]};return db['VoiceExtension'][_0x47a7('0xf')](_0x1580f7)['then'](function(_0x2a4073){_0x4b5f9d[_0x47a7('0xf')]=_0x2a4073;if(_0xa598e0[_0x47a7('0x28')]['includeAll']){_0x32a172['include']=[{'all':!![]}];}return db[_0x47a7('0x22')]['findAll'](_0x32a172);})[_0x47a7('0x13')](function(_0x462079){_0x4b5f9d['rows']=_0x462079;return _0x4b5f9d;})[_0x47a7('0x13')](respondWithFilteredResult(_0x5e1ebd,_0x32a172))[_0x47a7('0x35')](handleError(_0x5e1ebd,null));};exports[_0x47a7('0x36')]=function(_0x12b79b,_0xd34707){var _0x5dce26={'raw':![],'where':{'id':_0x12b79b[_0x47a7('0x37')]['id']}},_0x266e76={};_0x266e76[_0x47a7('0x26')]=_[_0x47a7('0x27')](db['VoiceExtension'][_0x47a7('0x23')]);_0x266e76[_0x47a7('0x28')]=_[_0x47a7('0x27')](_0x12b79b['query']);_0x266e76[_0x47a7('0x31')]=_[_0x47a7('0x29')](_0x266e76[_0x47a7('0x26')],_0x266e76[_0x47a7('0x28')]);_0x5dce26[_0x47a7('0x2a')]=_[_0x47a7('0x29')](_0x266e76[_0x47a7('0x26')],qs[_0x47a7('0x2b')](_0x12b79b[_0x47a7('0x28')][_0x47a7('0x2b')]));_0x5dce26[_0x47a7('0x2a')]=_0x5dce26[_0x47a7('0x2a')][_0x47a7('0x2c')]?_0x5dce26[_0x47a7('0x2a')]:_0x266e76[_0x47a7('0x26')];if(_0x12b79b['query'][_0x47a7('0x38')]){_0x5dce26[_0x47a7('0x39')]=[{'all':!![]}];}_0x5dce26=_['merge']({},_0x5dce26,_0x12b79b[_0x47a7('0x3a')]);return db['VoiceExtension']['find'](_0x5dce26)[_0x47a7('0x13')](handleEntityNotFound(_0xd34707,null))[_0x47a7('0x13')](respondWithResult(_0xd34707,null))[_0x47a7('0x35')](handleError(_0xd34707,null));};exports[_0x47a7('0x12')]=function(_0xa90d1d,_0x51b1e0){return db[_0x47a7('0x22')]['find']({'where':{'id':_0xa90d1d[_0x47a7('0x37')]['id']}})[_0x47a7('0x13')](handleEntityNotFound(_0x51b1e0,null))[_0x47a7('0x13')](removeEntity(_0x51b1e0,null))['catch'](handleError(_0x51b1e0,null));};exports[_0x47a7('0x3b')]=function(_0x46129f,_0x3704e6){if(_0x46129f['body'][_0x47a7('0x1c')]===_0x47a7('0x16')&&!_[_0x47a7('0x3c')](_0x46129f['body'][_0x47a7('0x3d')],'_')){_0x46129f['body'][_0x47a7('0x3d')]='_'[_0x47a7('0x3e')](_0x46129f['body'][_0x47a7('0x3d')]);}return db[_0x47a7('0x22')]['create'](_0x46129f[_0x47a7('0x3f')],{'raw':![]})[_0x47a7('0x13')](function(_0x1256d1){var _0x3fa81e=_0x46129f[_0x47a7('0x40')][_0x47a7('0x41')]({'plain':!![]});if(!_0x3fa81e)throw new Error(_0x47a7('0x42'));if(_0x3fa81e[_0x47a7('0x43')]==='user'){var _0x37503c=_0x1256d1['get']({'plain':!![]});var _0x368718=[{'name':_0x47a7('0x14'),'value':_0x47a7('0x15')},{'name':'OutboundRoutes','value':'outbound'},{'name':'InternalRoutes','value':'internal'}];var _0x424a73=_[_0x47a7('0x44')](_0x368718,['value',_0x37503c[_0x47a7('0x1c')]])[_0x47a7('0x1d')];return db[_0x47a7('0x45')][_0x47a7('0x44')]({'where':{'name':_0x424a73,'userProfileId':_0x3fa81e[_0x47a7('0x46')]},'raw':!![]})[_0x47a7('0x13')](function(_0x4580c0){if(_0x4580c0&&_0x4580c0[_0x47a7('0x47')]===0x0){return db[_0x47a7('0x1e')][_0x47a7('0x3b')]({'name':_0x37503c[_0x47a7('0x1d')],'resourceId':_0x37503c['id'],'type':_0x4580c0[_0x47a7('0x1d')],'sectionId':_0x4580c0['id']},{})[_0x47a7('0x13')](function(){return _0x1256d1;});}else{return _0x1256d1;}})[_0x47a7('0x35')](function(_0x518fd2){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x518fd2);throw _0x518fd2;});}return _0x1256d1;})['then'](respondWithResult(_0x3704e6,0xc9))[_0x47a7('0x35')](handleError(_0x3704e6,null));};exports['update']=function(_0x1454c7,_0x4e40a2){if(_0x1454c7[_0x47a7('0x3f')]['id']){delete _0x1454c7[_0x47a7('0x3f')]['id'];}return db[_0x47a7('0x22')][_0x47a7('0x44')]({'where':{'id':_0x1454c7[_0x47a7('0x37')]['id']}})[_0x47a7('0x13')](handleEntityNotFound(_0x4e40a2,null))[_0x47a7('0x13')](function(_0xd35ca5){if(_0xd35ca5){return db[_0x47a7('0x22')][_0x47a7('0x48')](_[_0x47a7('0x49')](_0x1454c7[_0x47a7('0x3f')],['exten',_0x47a7('0x4a'),_0x47a7('0x4b'),_0x47a7('0x4c'),'cutdigits',_0x47a7('0x4d'),_0x47a7('0x4e')]),{'where':{'context':_0xd35ca5[_0x47a7('0x4a')],'exten':_0xd35ca5[_0x47a7('0x3d')]},'individualHooks':!![]})[_0x47a7('0x13')](function(_0x2c4bfd){return _0x2c4bfd;});}return null;})[_0x47a7('0x13')](respondWithStatusCode(_0x4e40a2,null))['catch'](handleError(_0x4e40a2,null));};exports[_0x47a7('0x4f')]=function(_0x2260dd,_0x14a333){var _0x459fd0=_0x2260dd[_0x47a7('0x37')]['id'];var _0x501dc8=_0x2260dd[_0x47a7('0x3f')];var _0x359878=0xc8;var _0x1cdbfe=null;return db[_0x47a7('0x50')][_0x47a7('0x51')]({'isolationLevel':db['sequelize'][_0x47a7('0x52')][_0x47a7('0x53')][_0x47a7('0x54')]},function(_0x135864){return db[_0x47a7('0x22')][_0x47a7('0x55')]({'where':{'id':_0x459fd0},'transaction':_0x135864})['then'](function(_0x444b1f){if(_0x444b1f){return db['VoiceExtension'][_0x47a7('0x12')]({'where':{'VoiceExtensionId':_0x459fd0},'transaction':_0x135864})[_0x47a7('0x13')](function(){var _0x2b3abf=_['map'](_0x501dc8,function(_0x53b147){_0x53b147['VoiceExtensionId']=_0x459fd0;_0x53b147[_0x47a7('0x56')]=!![];return _0x53b147;});return _0x444b1f[_0x47a7('0x57')](_0x2b3abf);})[_0x47a7('0x13')](function(_0x5d2e21){return db[_0x47a7('0x22')][_0x47a7('0x58')](_0x5d2e21,{'transaction':_0x135864});});}else{_0x359878=0x194;_0x1cdbfe=[];}});})[_0x47a7('0x13')](function(){if(_0x359878!==0x194){return db[_0x47a7('0x22')]['findAndCountAll']({'where':{'isApp':!![],'VoiceExtensionId':_0x459fd0},'order':_0x47a7('0x59')})['then'](function(_0x377fa1){_0x1cdbfe=_0x377fa1;});}})[_0x47a7('0x35')](function(_0x3bcae4){_0x359878=0x1f4;logger[_0x47a7('0x5a')](_0x3bcae4['stack']);if(_0x3bcae4[_0x47a7('0x1d')]){delete _0x3bcae4[_0x47a7('0x1d')];}_0x1cdbfe=_0x3bcae4;})[_0x47a7('0x5b')](function(){if(_0x1cdbfe===null){_0x14a333[_0x47a7('0xa')](_0x359878);}else{if(_0x359878===0x1f4){_0x14a333[_0x47a7('0xb')](_0x359878)['send'](_0x1cdbfe);}else{_0x14a333[_0x47a7('0xb')](_0x359878)[_0x47a7('0x5c')](_0x1cdbfe);}}});};