Built motion from commit d1eab355.|2.6.28
[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 _0xdc9d=['type','find','name','destroy','then','error','stack','send','VoiceExtension','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','options','includeAll','findAll','rows','catch','params','include','create','body','outbound','startsWith','exten','user','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','context','cutdigits','mandatoryDisposition','alias','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','VoiceExtensionId','isApp','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','finally','sendStatus','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','./voiceExtension.socket','register','status','end','json','offset','undefined','limit','count','set','Content-Range','get','InboundRoutes','inbound','OutboundRoutes','InternalRoutes','internal','filter','ignore','map','value','includes'];(function(_0x3dcb7f,_0x1bb220){var _0x401d38=function(_0x175421){while(--_0x175421){_0x3dcb7f['push'](_0x3dcb7f['shift']());}};_0x401d38(++_0x1bb220);}(_0xdc9d,0x1af));var _0xddc9=function(_0x443728,_0x3b4c75){_0x443728=_0x443728-0x0;var _0x58ca87=_0xdc9d[_0x443728];return _0x58ca87;};'use strict';var _=require('lodash');var Redis=require('ioredis');var qs=require(_0xddc9('0x0'));var logger=require(_0xddc9('0x1'))(_0xddc9('0x2'));var config=require(_0xddc9('0x3'));var db=require(_0xddc9('0x4'))['db'];config[_0xddc9('0x5')]=_['defaults'](config['redis'],{'host':_0xddc9('0x6'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xddc9('0x5')]));require(_0xddc9('0x7'))[_0xddc9('0x8')](socket);function respondWithStatusCode(_0x2859a7,_0x54facf){_0x54facf=_0x54facf||0xcc;return function(_0x3f14db){if(_0x3f14db){return _0x2859a7['sendStatus'](_0x54facf);}return _0x2859a7[_0xddc9('0x9')](_0x54facf)[_0xddc9('0xa')]();};}function respondWithResult(_0x54c769,_0x18581b){_0x18581b=_0x18581b||0xc8;return function(_0x4c62b7){if(_0x4c62b7){return _0x54c769[_0xddc9('0x9')](_0x18581b)[_0xddc9('0xb')](_0x4c62b7);}};}function respondWithFilteredResult(_0x2ccdb0,_0x178987){return function(_0x417d74){if(_0x417d74){var _0x2d0be8=typeof _0x178987[_0xddc9('0xc')]===_0xddc9('0xd')&&typeof _0x178987[_0xddc9('0xe')]==='undefined';var _0x349714=_0x417d74[_0xddc9('0xf')];var _0x2762bb=_0x2d0be8?0x0:_0x178987[_0xddc9('0xc')];var _0x35d9a4=_0x2d0be8?_0x417d74['count']:_0x178987[_0xddc9('0xc')]+_0x178987[_0xddc9('0xe')];var _0x3e606f;if(_0x35d9a4>=_0x349714){_0x35d9a4=_0x349714;_0x3e606f=0xc8;}else{_0x3e606f=0xce;}_0x2ccdb0[_0xddc9('0x9')](_0x3e606f);return _0x2ccdb0[_0xddc9('0x10')](_0xddc9('0x11'),_0x2762bb+'-'+_0x35d9a4+'/'+_0x349714)[_0xddc9('0xb')](_0x417d74);}return null;};}function removeEntity(_0x5b0ba2){return function(_0x353bc4){if(_0x353bc4){return _0x353bc4['destroy']()['then'](function(){var _0x308828=_0x353bc4[_0xddc9('0x12')]({'plain':!![]});var _0x1699fe=[{'name':_0xddc9('0x13'),'value':_0xddc9('0x14'),'ignore':![]},{'name':_0xddc9('0x15'),'value':'outbound','ignore':![]},{'name':_0xddc9('0x16'),'value':_0xddc9('0x17'),'ignore':![]}];var _0x1c0105=_(_0x1699fe)[_0xddc9('0x18')](_0xddc9('0x19'))[_0xddc9('0x1a')](_0xddc9('0x1b'))[_0xddc9('0x1b')]();if(_[_0xddc9('0x1c')](_0x1c0105,_0x308828[_0xddc9('0x1d')])){return;}var _0x519651=_[_0xddc9('0x1e')](_0x1699fe,[_0xddc9('0x1b'),_0x308828['type']])[_0xddc9('0x1f')];return db['UserProfileResource'][_0xddc9('0x20')]({'where':{'type':_0x519651,'resourceId':_0x308828['id']}})[_0xddc9('0x21')](function(){return _0x353bc4;});})['then'](function(){_0x5b0ba2[_0xddc9('0x9')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3d510f){return function(_0x5d8dd8){if(!_0x5d8dd8){_0x3d510f['sendStatus'](0x194);}return _0x5d8dd8;};}function handleError(_0x125950,_0x51a50b){_0x51a50b=_0x51a50b||0x1f4;return function(_0x7de31a){logger[_0xddc9('0x22')](_0x7de31a[_0xddc9('0x23')]);if(_0x7de31a[_0xddc9('0x1f')]){delete _0x7de31a[_0xddc9('0x1f')];}_0x125950['status'](_0x51a50b)[_0xddc9('0x24')](_0x7de31a);};}exports['index']=function(_0x274c03,_0x369084){var _0x95dfc5={},_0x3d7eb4={},_0xff2bc3={'count':0x0,'rows':[]};var _0x5838ee=_[_0xddc9('0x1a')](db[_0xddc9('0x25')][_0xddc9('0x26')],function(_0x3bf7ab){return{'name':_0x3bf7ab[_0xddc9('0x27')],'type':_0x3bf7ab[_0xddc9('0x1d')][_0xddc9('0x28')]};});_0x3d7eb4[_0xddc9('0x29')]=_[_0xddc9('0x1a')](_0x5838ee,_0xddc9('0x1f'));_0x3d7eb4[_0xddc9('0x2a')]=_[_0xddc9('0x2b')](_0x274c03[_0xddc9('0x2a')]);_0x3d7eb4[_0xddc9('0x2c')]=_[_0xddc9('0x2d')](_0x3d7eb4[_0xddc9('0x29')],_0x3d7eb4[_0xddc9('0x2a')]);_0x95dfc5[_0xddc9('0x2e')]=_['intersection'](_0x3d7eb4[_0xddc9('0x29')],qs[_0xddc9('0x2f')](_0x274c03[_0xddc9('0x2a')]['fields']));_0x95dfc5[_0xddc9('0x2e')]=_0x95dfc5['attributes'][_0xddc9('0x30')]?_0x95dfc5[_0xddc9('0x2e')]:_0x3d7eb4[_0xddc9('0x29')];if(!_0x274c03[_0xddc9('0x2a')][_0xddc9('0x31')](_0xddc9('0x32'))){_0x95dfc5[_0xddc9('0xe')]=qs[_0xddc9('0xe')](_0x274c03[_0xddc9('0x2a')]['limit']);_0x95dfc5[_0xddc9('0xc')]=qs['offset'](_0x274c03[_0xddc9('0x2a')][_0xddc9('0xc')]);}_0x95dfc5[_0xddc9('0x33')]=qs[_0xddc9('0x34')](_0x274c03[_0xddc9('0x2a')]['sort']);_0x95dfc5['where']=qs['filters'](_[_0xddc9('0x35')](_0x274c03[_0xddc9('0x2a')],_0x3d7eb4[_0xddc9('0x2c')]),_0x5838ee);if(_0x274c03[_0xddc9('0x2a')][_0xddc9('0x18')]){_0x95dfc5[_0xddc9('0x36')]=_[_0xddc9('0x37')](_0x95dfc5[_0xddc9('0x36')],{'$or':_[_0xddc9('0x1a')](_0x5838ee,function(_0x17e8d0){if(_0x17e8d0[_0xddc9('0x1d')]!==_0xddc9('0x38')){var _0x5d3697={};_0x5d3697[_0x17e8d0[_0xddc9('0x1f')]]={'$like':'%'+_0x274c03[_0xddc9('0x2a')][_0xddc9('0x18')]+'%'};return _0x5d3697;}})});}_0x95dfc5=_[_0xddc9('0x37')]({},_0x95dfc5,_0x274c03[_0xddc9('0x39')]);var _0x306e39={'where':_0x95dfc5[_0xddc9('0x36')]};return db[_0xddc9('0x25')][_0xddc9('0xf')](_0x306e39)[_0xddc9('0x21')](function(_0x58c17a){_0xff2bc3[_0xddc9('0xf')]=_0x58c17a;if(_0x274c03[_0xddc9('0x2a')][_0xddc9('0x3a')]){_0x95dfc5['include']=[{'all':!![]}];}return db['VoiceExtension'][_0xddc9('0x3b')](_0x95dfc5);})['then'](function(_0x1ea486){_0xff2bc3[_0xddc9('0x3c')]=_0x1ea486;return _0xff2bc3;})['then'](respondWithFilteredResult(_0x369084,_0x95dfc5))[_0xddc9('0x3d')](handleError(_0x369084,null));};exports['show']=function(_0x27556b,_0x540219){var _0xbcc921={'raw':![],'where':{'id':_0x27556b[_0xddc9('0x3e')]['id']}},_0x3bb364={};_0x3bb364[_0xddc9('0x29')]=_['keys'](db[_0xddc9('0x25')][_0xddc9('0x26')]);_0x3bb364['query']=_[_0xddc9('0x2b')](_0x27556b[_0xddc9('0x2a')]);_0x3bb364[_0xddc9('0x2c')]=_[_0xddc9('0x2d')](_0x3bb364[_0xddc9('0x29')],_0x3bb364[_0xddc9('0x2a')]);_0xbcc921[_0xddc9('0x2e')]=_[_0xddc9('0x2d')](_0x3bb364['model'],qs['fields'](_0x27556b[_0xddc9('0x2a')][_0xddc9('0x2f')]));_0xbcc921[_0xddc9('0x2e')]=_0xbcc921[_0xddc9('0x2e')]['length']?_0xbcc921[_0xddc9('0x2e')]:_0x3bb364[_0xddc9('0x29')];if(_0x27556b[_0xddc9('0x2a')][_0xddc9('0x3a')]){_0xbcc921[_0xddc9('0x3f')]=[{'all':!![]}];}_0xbcc921=_[_0xddc9('0x37')]({},_0xbcc921,_0x27556b[_0xddc9('0x39')]);return db[_0xddc9('0x25')]['find'](_0xbcc921)[_0xddc9('0x21')](handleEntityNotFound(_0x540219,null))[_0xddc9('0x21')](respondWithResult(_0x540219,null))['catch'](handleError(_0x540219,null));};exports[_0xddc9('0x20')]=function(_0x5d7d64,_0xde9266){return db[_0xddc9('0x25')]['find']({'where':{'id':_0x5d7d64[_0xddc9('0x3e')]['id']}})[_0xddc9('0x21')](handleEntityNotFound(_0xde9266,null))['then'](removeEntity(_0xde9266,null))['catch'](handleError(_0xde9266,null));};exports[_0xddc9('0x40')]=function(_0x4acba2,_0x2de29f){if(_0x4acba2[_0xddc9('0x41')][_0xddc9('0x1d')]===_0xddc9('0x42')&&!_[_0xddc9('0x43')](_0x4acba2[_0xddc9('0x41')]['exten'],'_')){_0x4acba2['body'][_0xddc9('0x44')]='_'['concat'](_0x4acba2[_0xddc9('0x41')][_0xddc9('0x44')]);}return db[_0xddc9('0x25')][_0xddc9('0x40')](_0x4acba2[_0xddc9('0x41')],{'raw':![]})[_0xddc9('0x21')](function(_0x8db0cb){var _0x557202=_0x4acba2[_0xddc9('0x45')][_0xddc9('0x12')]({'plain':!![]});if(!_0x557202)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x557202['role']===_0xddc9('0x45')){var _0x5a15ef=_0x8db0cb[_0xddc9('0x12')]({'plain':!![]});var _0x2bdbaa=[{'name':'InboundRoutes','value':_0xddc9('0x14')},{'name':_0xddc9('0x15'),'value':_0xddc9('0x42')},{'name':_0xddc9('0x16'),'value':'internal'}];var _0x2f13de=_['find'](_0x2bdbaa,[_0xddc9('0x1b'),_0x5a15ef[_0xddc9('0x1d')]])[_0xddc9('0x1f')];return db[_0xddc9('0x46')][_0xddc9('0x1e')]({'where':{'name':_0x2f13de,'userProfileId':_0x557202[_0xddc9('0x47')]},'raw':!![]})[_0xddc9('0x21')](function(_0x3597c4){if(_0x3597c4&&_0x3597c4['autoAssociation']===0x0){return db[_0xddc9('0x48')][_0xddc9('0x40')]({'name':_0x5a15ef[_0xddc9('0x1f')],'resourceId':_0x5a15ef['id'],'type':_0x3597c4['name'],'sectionId':_0x3597c4['id']},{})[_0xddc9('0x21')](function(){return _0x8db0cb;});}else{return _0x8db0cb;}})[_0xddc9('0x3d')](function(_0x4b270a){logger[_0xddc9('0x22')](_0xddc9('0x49'),_0x4b270a);throw _0x4b270a;});}return _0x8db0cb;})[_0xddc9('0x21')](respondWithResult(_0x2de29f,0xc9))['catch'](handleError(_0x2de29f,null));};exports[_0xddc9('0x4a')]=function(_0x353e02,_0x584d01){if(_0x353e02[_0xddc9('0x41')]['id']){delete _0x353e02[_0xddc9('0x41')]['id'];}return db[_0xddc9('0x25')]['find']({'where':{'id':_0x353e02['params']['id']}})[_0xddc9('0x21')](handleEntityNotFound(_0x584d01,null))['then'](function(_0x169fee){if(_0x169fee){return db[_0xddc9('0x25')][_0xddc9('0x4a')](_['pick'](_0x353e02[_0xddc9('0x41')],['exten',_0xddc9('0x4b'),'description','recordingFormat',_0xddc9('0x4c'),_0xddc9('0x4d'),_0xddc9('0x4e')]),{'where':{'context':_0x169fee[_0xddc9('0x4b')],'exten':_0x169fee[_0xddc9('0x44')]},'individualHooks':!![]})['then'](function(_0x482c97){return _0x482c97;});}return null;})[_0xddc9('0x21')](respondWithStatusCode(_0x584d01,null))['catch'](handleError(_0x584d01,null));};exports[_0xddc9('0x4f')]=function(_0x3f71f8,_0x39084d){var _0x10214a=_0x3f71f8[_0xddc9('0x3e')]['id'];var _0x4d41fe=_0x3f71f8[_0xddc9('0x41')];var _0x3f74ac=0xc8;var _0x9f24ca=null;return db['sequelize'][_0xddc9('0x50')]({'isolationLevel':db[_0xddc9('0x51')][_0xddc9('0x52')][_0xddc9('0x53')][_0xddc9('0x54')]},function(_0xf5114d){return db[_0xddc9('0x25')]['findOne']({'where':{'id':_0x10214a},'transaction':_0xf5114d})['then'](function(_0x5145be){if(_0x5145be){return db[_0xddc9('0x25')]['destroy']({'where':{'VoiceExtensionId':_0x10214a},'transaction':_0xf5114d})['then'](function(){var _0x3b39bf=_[_0xddc9('0x1a')](_0x4d41fe,function(_0x3da8fa){_0x3da8fa[_0xddc9('0x55')]=_0x10214a;_0x3da8fa[_0xddc9('0x56')]=!![];return _0x3da8fa;});return _0x5145be['createRouting'](_0x3b39bf);})[_0xddc9('0x21')](function(_0x42ebed){return db['VoiceExtension'][_0xddc9('0x57')](_0x42ebed,{'transaction':_0xf5114d});});}else{_0x3f74ac=0x194;_0x9f24ca=[];}});})[_0xddc9('0x21')](function(){if(_0x3f74ac!==0x194){return db[_0xddc9('0x25')][_0xddc9('0x58')]({'where':{'isApp':!![],'VoiceExtensionId':_0x10214a},'order':_0xddc9('0x59')})['then'](function(_0x1f0fd7){_0x9f24ca=_0x1f0fd7;});}})['catch'](function(_0x955283){_0x3f74ac=0x1f4;logger['error'](_0x955283['stack']);if(_0x955283[_0xddc9('0x1f')]){delete _0x955283[_0xddc9('0x1f')];}_0x9f24ca=_0x955283;})[_0xddc9('0x5a')](function(){if(_0x9f24ca===null){_0x39084d[_0xddc9('0x5b')](_0x3f74ac);}else{if(_0x3f74ac===0x1f4){_0x39084d[_0xddc9('0x9')](_0x3f74ac)[_0xddc9('0x24')](_0x9f24ca);}else{_0x39084d['status'](_0x3f74ac)[_0xddc9('0xb')](_0x9f24ca);}}});};