c016d828b9aab2b90f6243b5bce3bda98b3450a7
[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 _0xd2a7=['VoiceExtension','rawAttributes','fieldName','key','model','query','intersection','attributes','length','nolimit','order','sort','where','filters','pick','VIRTUAL','merge','options','includeAll','findAll','catch','show','params','keys','fields','include','find','create','body','startsWith','exten','concat','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','update','context','description','cutdigits','mandatoryDisposition','alias','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','isApp','bulkCreate','findAndCountAll','lodash','../../config/logger','api','../../config/environment','localhost','socket.io-emitter','redis','./voiceExtension.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','then','InboundRoutes','inbound','OutboundRoutes','outbound','InternalRoutes','internal','filter','ignore','map','value','includes','type','name','UserProfileResource','destroy','error','stack','send'];(function(_0x420c1b,_0x151b4d){var _0x1de48a=function(_0x229384){while(--_0x229384){_0x420c1b['push'](_0x420c1b['shift']());}};_0x1de48a(++_0x151b4d);}(_0xd2a7,0x8f));var _0x7d2a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd2a7[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7d2a('0x0'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require(_0x7d2a('0x1'))(_0x7d2a('0x2'));var config=require(_0x7d2a('0x3'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config['redis'],{'host':_0x7d2a('0x4'),'port':0x18eb});var socket=require(_0x7d2a('0x5'))(new Redis(config[_0x7d2a('0x6')]));require(_0x7d2a('0x7'))['register'](socket);function respondWithStatusCode(_0x139fdb,_0x11f300){_0x11f300=_0x11f300||0xcc;return function(_0x34f8c5){if(_0x34f8c5){return _0x139fdb[_0x7d2a('0x8')](_0x11f300);}return _0x139fdb[_0x7d2a('0x9')](_0x11f300)[_0x7d2a('0xa')]();};}function respondWithResult(_0x4df51c,_0x2d9423){_0x2d9423=_0x2d9423||0xc8;return function(_0x3d2d73){if(_0x3d2d73){return _0x4df51c[_0x7d2a('0x9')](_0x2d9423)[_0x7d2a('0xb')](_0x3d2d73);}};}function respondWithFilteredResult(_0x5eee94,_0x325931){return function(_0x56b910){if(_0x56b910){var _0x94cff3=typeof _0x325931[_0x7d2a('0xc')]===_0x7d2a('0xd')&&typeof _0x325931[_0x7d2a('0xe')]===_0x7d2a('0xd');var _0x269029=_0x56b910[_0x7d2a('0xf')];var _0x5af225=_0x94cff3?0x0:_0x325931['offset'];var _0x2275ca=_0x94cff3?_0x56b910[_0x7d2a('0xf')]:_0x325931[_0x7d2a('0xc')]+_0x325931['limit'];var _0x333d28;if(_0x2275ca>=_0x269029){_0x2275ca=_0x269029;_0x333d28=0xc8;}else{_0x333d28=0xce;}_0x5eee94[_0x7d2a('0x9')](_0x333d28);return _0x5eee94[_0x7d2a('0x10')](_0x7d2a('0x11'),_0x5af225+'-'+_0x2275ca+'/'+_0x269029)['json'](_0x56b910);}return null;};}function removeEntity(_0x492d65){return function(_0x5521bc){if(_0x5521bc){return _0x5521bc['destroy']()[_0x7d2a('0x12')](function(){var _0x5300f7=_0x5521bc['get']({'plain':!![]});var _0xd14538=[{'name':_0x7d2a('0x13'),'value':_0x7d2a('0x14'),'ignore':![]},{'name':_0x7d2a('0x15'),'value':_0x7d2a('0x16'),'ignore':![]},{'name':_0x7d2a('0x17'),'value':_0x7d2a('0x18'),'ignore':![]}];var _0x182f7d=_(_0xd14538)[_0x7d2a('0x19')](_0x7d2a('0x1a'))[_0x7d2a('0x1b')](_0x7d2a('0x1c'))[_0x7d2a('0x1c')]();if(_[_0x7d2a('0x1d')](_0x182f7d,_0x5300f7[_0x7d2a('0x1e')])){return;}var _0x82b3bb=_['find'](_0xd14538,[_0x7d2a('0x1c'),_0x5300f7['type']])[_0x7d2a('0x1f')];return db[_0x7d2a('0x20')][_0x7d2a('0x21')]({'where':{'type':_0x82b3bb,'resourceId':_0x5300f7['id']}})[_0x7d2a('0x12')](function(){return _0x5521bc;});})[_0x7d2a('0x12')](function(){_0x492d65[_0x7d2a('0x9')](0xcc)[_0x7d2a('0xa')]();});}};}function handleEntityNotFound(_0x4e06d9){return function(_0x1b9eb3){if(!_0x1b9eb3){_0x4e06d9[_0x7d2a('0x8')](0x194);}return _0x1b9eb3;};}function handleError(_0x3a3a64,_0xb57e45){_0xb57e45=_0xb57e45||0x1f4;return function(_0x929c38){logger[_0x7d2a('0x22')](_0x929c38[_0x7d2a('0x23')]);if(_0x929c38['name']){delete _0x929c38[_0x7d2a('0x1f')];}_0x3a3a64[_0x7d2a('0x9')](_0xb57e45)[_0x7d2a('0x24')](_0x929c38);};}exports['index']=function(_0x31ea55,_0x222212){var _0xf7eda8={},_0x26de4e={},_0x392b81={'count':0x0,'rows':[]};var _0x4a748e=_[_0x7d2a('0x1b')](db[_0x7d2a('0x25')][_0x7d2a('0x26')],function(_0xe064ad){return{'name':_0xe064ad[_0x7d2a('0x27')],'type':_0xe064ad[_0x7d2a('0x1e')][_0x7d2a('0x28')]};});_0x26de4e[_0x7d2a('0x29')]=_['map'](_0x4a748e,_0x7d2a('0x1f'));_0x26de4e[_0x7d2a('0x2a')]=_['keys'](_0x31ea55[_0x7d2a('0x2a')]);_0x26de4e['filters']=_[_0x7d2a('0x2b')](_0x26de4e[_0x7d2a('0x29')],_0x26de4e[_0x7d2a('0x2a')]);_0xf7eda8[_0x7d2a('0x2c')]=_['intersection'](_0x26de4e['model'],qs['fields'](_0x31ea55[_0x7d2a('0x2a')]['fields']));_0xf7eda8[_0x7d2a('0x2c')]=_0xf7eda8[_0x7d2a('0x2c')][_0x7d2a('0x2d')]?_0xf7eda8[_0x7d2a('0x2c')]:_0x26de4e[_0x7d2a('0x29')];if(!_0x31ea55['query']['hasOwnProperty'](_0x7d2a('0x2e'))){_0xf7eda8[_0x7d2a('0xe')]=qs[_0x7d2a('0xe')](_0x31ea55['query'][_0x7d2a('0xe')]);_0xf7eda8['offset']=qs[_0x7d2a('0xc')](_0x31ea55[_0x7d2a('0x2a')][_0x7d2a('0xc')]);}_0xf7eda8[_0x7d2a('0x2f')]=qs[_0x7d2a('0x30')](_0x31ea55[_0x7d2a('0x2a')][_0x7d2a('0x30')]);_0xf7eda8[_0x7d2a('0x31')]=qs[_0x7d2a('0x32')](_[_0x7d2a('0x33')](_0x31ea55[_0x7d2a('0x2a')],_0x26de4e[_0x7d2a('0x32')]),_0x4a748e);if(_0x31ea55[_0x7d2a('0x2a')][_0x7d2a('0x19')]){_0xf7eda8[_0x7d2a('0x31')]=_['merge'](_0xf7eda8[_0x7d2a('0x31')],{'$or':_[_0x7d2a('0x1b')](_0x4a748e,function(_0x1359a3){if(_0x1359a3[_0x7d2a('0x1e')]!==_0x7d2a('0x34')){var _0x3e6173={};_0x3e6173[_0x1359a3[_0x7d2a('0x1f')]]={'$like':'%'+_0x31ea55[_0x7d2a('0x2a')]['filter']+'%'};return _0x3e6173;}})});}_0xf7eda8=_[_0x7d2a('0x35')]({},_0xf7eda8,_0x31ea55[_0x7d2a('0x36')]);var _0x3fb82c={'where':_0xf7eda8['where']};return db[_0x7d2a('0x25')][_0x7d2a('0xf')](_0x3fb82c)[_0x7d2a('0x12')](function(_0x395f5c){_0x392b81['count']=_0x395f5c;if(_0x31ea55[_0x7d2a('0x2a')][_0x7d2a('0x37')]){_0xf7eda8['include']=[{'all':!![]}];}return db[_0x7d2a('0x25')][_0x7d2a('0x38')](_0xf7eda8);})[_0x7d2a('0x12')](function(_0x476a32){_0x392b81['rows']=_0x476a32;return _0x392b81;})[_0x7d2a('0x12')](respondWithFilteredResult(_0x222212,_0xf7eda8))[_0x7d2a('0x39')](handleError(_0x222212,null));};exports[_0x7d2a('0x3a')]=function(_0x27a934,_0x3f3d29){var _0xbbfd88={'raw':![],'where':{'id':_0x27a934[_0x7d2a('0x3b')]['id']}},_0x1b3c58={};_0x1b3c58[_0x7d2a('0x29')]=_[_0x7d2a('0x3c')](db[_0x7d2a('0x25')]['rawAttributes']);_0x1b3c58[_0x7d2a('0x2a')]=_[_0x7d2a('0x3c')](_0x27a934[_0x7d2a('0x2a')]);_0x1b3c58[_0x7d2a('0x32')]=_[_0x7d2a('0x2b')](_0x1b3c58[_0x7d2a('0x29')],_0x1b3c58['query']);_0xbbfd88['attributes']=_[_0x7d2a('0x2b')](_0x1b3c58[_0x7d2a('0x29')],qs[_0x7d2a('0x3d')](_0x27a934[_0x7d2a('0x2a')][_0x7d2a('0x3d')]));_0xbbfd88[_0x7d2a('0x2c')]=_0xbbfd88[_0x7d2a('0x2c')][_0x7d2a('0x2d')]?_0xbbfd88[_0x7d2a('0x2c')]:_0x1b3c58[_0x7d2a('0x29')];if(_0x27a934[_0x7d2a('0x2a')][_0x7d2a('0x37')]){_0xbbfd88[_0x7d2a('0x3e')]=[{'all':!![]}];}_0xbbfd88=_[_0x7d2a('0x35')]({},_0xbbfd88,_0x27a934[_0x7d2a('0x36')]);return db[_0x7d2a('0x25')]['find'](_0xbbfd88)[_0x7d2a('0x12')](handleEntityNotFound(_0x3f3d29,null))[_0x7d2a('0x12')](respondWithResult(_0x3f3d29,null))[_0x7d2a('0x39')](handleError(_0x3f3d29,null));};exports[_0x7d2a('0x21')]=function(_0x2ece02,_0x632740){return db[_0x7d2a('0x25')][_0x7d2a('0x3f')]({'where':{'id':_0x2ece02[_0x7d2a('0x3b')]['id']}})[_0x7d2a('0x12')](handleEntityNotFound(_0x632740,null))[_0x7d2a('0x12')](removeEntity(_0x632740,null))[_0x7d2a('0x39')](handleError(_0x632740,null));};exports[_0x7d2a('0x40')]=function(_0x3656f5,_0x13e329){if(_0x3656f5[_0x7d2a('0x41')][_0x7d2a('0x1e')]===_0x7d2a('0x16')&&!_[_0x7d2a('0x42')](_0x3656f5[_0x7d2a('0x41')][_0x7d2a('0x43')],'_')){_0x3656f5[_0x7d2a('0x41')][_0x7d2a('0x43')]='_'[_0x7d2a('0x44')](_0x3656f5[_0x7d2a('0x41')][_0x7d2a('0x43')]);}return db[_0x7d2a('0x25')][_0x7d2a('0x40')](_0x3656f5[_0x7d2a('0x41')],{'raw':![]})[_0x7d2a('0x12')](function(_0x2a2b7f){var _0xe4d73e=_0x3656f5[_0x7d2a('0x45')][_0x7d2a('0x46')]({'plain':!![]});if(!_0xe4d73e)throw new Error(_0x7d2a('0x47'));if(_0xe4d73e[_0x7d2a('0x48')]===_0x7d2a('0x45')){var _0x4d2f79=_0x2a2b7f['get']({'plain':!![]});var _0xf096c=[{'name':_0x7d2a('0x13'),'value':'inbound'},{'name':_0x7d2a('0x15'),'value':'outbound'},{'name':_0x7d2a('0x17'),'value':_0x7d2a('0x18')}];var _0x2a24b3=_['find'](_0xf096c,[_0x7d2a('0x1c'),_0x4d2f79[_0x7d2a('0x1e')]])[_0x7d2a('0x1f')];return db['UserProfileSection'][_0x7d2a('0x3f')]({'where':{'name':_0x2a24b3,'userProfileId':_0xe4d73e[_0x7d2a('0x49')]},'raw':!![]})['then'](function(_0x4f43c2){if(_0x4f43c2&&_0x4f43c2['autoAssociation']===0x0){return db[_0x7d2a('0x20')]['create']({'name':_0x4d2f79[_0x7d2a('0x1f')],'resourceId':_0x4d2f79['id'],'type':_0x4f43c2[_0x7d2a('0x1f')],'sectionId':_0x4f43c2['id']},{})[_0x7d2a('0x12')](function(){return _0x2a2b7f;});}else{return _0x2a2b7f;}})[_0x7d2a('0x39')](function(_0x95266a){logger[_0x7d2a('0x22')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x95266a);throw _0x95266a;});}return _0x2a2b7f;})['then'](respondWithResult(_0x13e329,0xc9))[_0x7d2a('0x39')](handleError(_0x13e329,null));};exports[_0x7d2a('0x4a')]=function(_0x252174,_0x4c7604){if(_0x252174[_0x7d2a('0x41')]['id']){delete _0x252174[_0x7d2a('0x41')]['id'];}return db[_0x7d2a('0x25')][_0x7d2a('0x3f')]({'where':{'id':_0x252174[_0x7d2a('0x3b')]['id']}})[_0x7d2a('0x12')](handleEntityNotFound(_0x4c7604,null))[_0x7d2a('0x12')](function(_0xef8fcd){if(_0xef8fcd){return db['VoiceExtension'][_0x7d2a('0x4a')](_[_0x7d2a('0x33')](_0x252174[_0x7d2a('0x41')],[_0x7d2a('0x43'),_0x7d2a('0x4b'),_0x7d2a('0x4c'),'recordingFormat',_0x7d2a('0x4d'),_0x7d2a('0x4e'),_0x7d2a('0x4f')]),{'where':{'context':_0xef8fcd[_0x7d2a('0x4b')],'exten':_0xef8fcd[_0x7d2a('0x43')]},'individualHooks':!![]})['then'](function(_0x1f3340){return _0x1f3340;});}return null;})[_0x7d2a('0x12')](respondWithStatusCode(_0x4c7604,null))[_0x7d2a('0x39')](handleError(_0x4c7604,null));};exports[_0x7d2a('0x50')]=function(_0x53d0b3,_0x333964){var _0x528dfc=_0x53d0b3['params']['id'];var _0xab0972=_0x53d0b3[_0x7d2a('0x41')];var _0x1cbd12=0xc8;var _0x24320a=null;return db[_0x7d2a('0x51')][_0x7d2a('0x52')]({'isolationLevel':db[_0x7d2a('0x51')][_0x7d2a('0x53')][_0x7d2a('0x54')][_0x7d2a('0x55')]},function(_0x2a3a9d){return db[_0x7d2a('0x25')][_0x7d2a('0x56')]({'where':{'id':_0x528dfc},'transaction':_0x2a3a9d})[_0x7d2a('0x12')](function(_0x4424b0){if(_0x4424b0){return db[_0x7d2a('0x25')][_0x7d2a('0x21')]({'where':{'VoiceExtensionId':_0x528dfc},'transaction':_0x2a3a9d})[_0x7d2a('0x12')](function(){var _0x473166=_[_0x7d2a('0x1b')](_0xab0972,function(_0x41b5a3){_0x41b5a3['VoiceExtensionId']=_0x528dfc;_0x41b5a3[_0x7d2a('0x57')]=!![];return _0x41b5a3;});return _0x4424b0['createRouting'](_0x473166);})[_0x7d2a('0x12')](function(_0x4b91ce){return db[_0x7d2a('0x25')][_0x7d2a('0x58')](_0x4b91ce,{'transaction':_0x2a3a9d});});}else{_0x1cbd12=0x194;_0x24320a=[];}});})[_0x7d2a('0x12')](function(){if(_0x1cbd12!==0x194){return db[_0x7d2a('0x25')][_0x7d2a('0x59')]({'where':{'isApp':!![],'VoiceExtensionId':_0x528dfc},'order':'cast(priority\x20as\x20unsigned)'})[_0x7d2a('0x12')](function(_0x538f7f){_0x24320a=_0x538f7f;});}})[_0x7d2a('0x39')](function(_0x403804){_0x1cbd12=0x1f4;logger['error'](_0x403804['stack']);if(_0x403804[_0x7d2a('0x1f')]){delete _0x403804[_0x7d2a('0x1f')];}_0x24320a=_0x403804;})['finally'](function(){if(_0x24320a===null){_0x333964[_0x7d2a('0x8')](_0x1cbd12);}else{if(_0x1cbd12===0x1f4){_0x333964[_0x7d2a('0x9')](_0x1cbd12)[_0x7d2a('0x24')](_0x24320a);}else{_0x333964['status'](_0x1cbd12)['json'](_0x24320a);}}});};