c55bc5e65bdbc91cc92a1b6196c5dc89662db0f5
[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 _0x8ed8=['model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','merge','VIRTUAL','options','VoiceExtension','includeAll','include','rows','catch','params','rawAttributes','create','outbound','startsWith','body','exten','user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','recordingFormat','cutdigits','mandatoryDisposition','alias','context','sequelize','VoiceExtensionId','rewriteDial','true','createRouting','bulkCreate','findAndCountAll','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','sendStatus','end','status','json','offset','limit','undefined','count','set','apply','reject','destroy','InboundRoutes','inbound','OutboundRoutes','InternalRoutes','filter','ignore','map','value','includes','find','type','name','UserProfileResource','then','error','send','index','key'];(function(_0x51fca9,_0x54a13f){var _0xbf5bb=function(_0x52a076){while(--_0x52a076){_0x51fca9['push'](_0x51fca9['shift']());}};_0xbf5bb(++_0x54a13f);}(_0x8ed8,0xf8));var _0x88ed=function(_0x2d847d,_0x29d5b5){_0x2d847d=_0x2d847d-0x0;var _0x37bd7a=_0x8ed8[_0x2d847d];return _0x37bd7a;};'use strict';var emlformat=require(_0x88ed('0x0'));var rimraf=require(_0x88ed('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x88ed('0x2'));var rp=require(_0x88ed('0x3'));var moment=require(_0x88ed('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x88ed('0x5'));var util=require(_0x88ed('0x6'));var path=require(_0x88ed('0x7'));var sox=require('sox');var csv=require(_0x88ed('0x8'));var ejs=require(_0x88ed('0x9'));var fs=require('fs');var fs_extra=require(_0x88ed('0xa'));var _=require(_0x88ed('0xb'));var squel=require(_0x88ed('0xc'));var crypto=require(_0x88ed('0xd'));var jsforce=require(_0x88ed('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x88ed('0x8'));var querystring=require(_0x88ed('0xf'));var Papa=require(_0x88ed('0x10'));var Redis=require(_0x88ed('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x88ed('0x12'));var as=require(_0x88ed('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x88ed('0x14'));var utils=require('../../config/utils');var config=require(_0x88ed('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x88ed('0x16'))['db'];config[_0x88ed('0x17')]=_[_0x88ed('0x18')](config['redis'],{'host':_0x88ed('0x19'),'port':0x18eb});var socket=require(_0x88ed('0x1a'))(new Redis(config[_0x88ed('0x17')]));require(_0x88ed('0x1b'))['register'](socket);function respondWithStatusCode(_0x1ab481,_0x5e0e02){_0x5e0e02=_0x5e0e02||0xcc;return function(_0x182b55){if(_0x182b55){return _0x1ab481[_0x88ed('0x1c')](_0x5e0e02);}return _0x1ab481['status'](_0x5e0e02)[_0x88ed('0x1d')]();};}function respondWithResult(_0x50f0cd,_0x574eb1){_0x574eb1=_0x574eb1||0xc8;return function(_0x1a7ffe){if(_0x1a7ffe){return _0x50f0cd[_0x88ed('0x1e')](_0x574eb1)[_0x88ed('0x1f')](_0x1a7ffe);}};}function respondWithFilteredResult(_0x301070,_0x327c49){return function(_0x56dde0){if(_0x56dde0){var _0x224105=typeof _0x327c49[_0x88ed('0x20')]==='undefined'&&typeof _0x327c49[_0x88ed('0x21')]===_0x88ed('0x22');var _0x429e66=_0x56dde0['count'];var _0x4167c9=_0x224105?0x0:_0x327c49[_0x88ed('0x20')];var _0x1f83de=_0x224105?_0x56dde0[_0x88ed('0x23')]:_0x327c49['offset']+_0x327c49[_0x88ed('0x21')];var _0x3a5984;if(_0x1f83de>=_0x429e66){_0x1f83de=_0x429e66;_0x3a5984=0xc8;}else{_0x3a5984=0xce;}_0x301070[_0x88ed('0x1e')](_0x3a5984);return _0x301070[_0x88ed('0x24')]('Content-Range',_0x4167c9+'-'+_0x1f83de+'/'+_0x429e66)[_0x88ed('0x1f')](_0x56dde0);}return null;};}function patchUpdates(_0x35e108){return function(_0x72df1d){try{jsonpatch[_0x88ed('0x25')](_0x72df1d,_0x35e108,!![]);}catch(_0x3c91ed){return BPromise[_0x88ed('0x26')](_0x3c91ed);}return _0x72df1d['save']();};}function saveUpdates(_0x48b995,_0xa23640){return function(_0x6e34d7){if(_0x6e34d7){return _0x6e34d7['update'](_0x48b995)['then'](function(_0x5a45c7){return _0x5a45c7;});}return null;};}function removeEntity(_0x255304,_0x93bba5){return function(_0x19966b){if(_0x19966b){return _0x19966b[_0x88ed('0x27')]()['then'](function(){var _0x21b5c0=_0x19966b['get']({'plain':!![]});var _0x1e6ad1=[{'name':_0x88ed('0x28'),'value':_0x88ed('0x29'),'ignore':![]},{'name':_0x88ed('0x2a'),'value':'outbound','ignore':![]},{'name':_0x88ed('0x2b'),'value':'internal','ignore':![]}];var _0x2e81f8=_(_0x1e6ad1)[_0x88ed('0x2c')](_0x88ed('0x2d'))[_0x88ed('0x2e')](_0x88ed('0x2f'))[_0x88ed('0x2f')]();if(_[_0x88ed('0x30')](_0x2e81f8,_0x21b5c0['type'])){return;}var _0x364705=_[_0x88ed('0x31')](_0x1e6ad1,[_0x88ed('0x2f'),_0x21b5c0[_0x88ed('0x32')]])[_0x88ed('0x33')];return db[_0x88ed('0x34')][_0x88ed('0x27')]({'where':{'type':_0x364705,'resourceId':_0x21b5c0['id']}})[_0x88ed('0x35')](function(){return _0x19966b;});})[_0x88ed('0x35')](function(){_0x255304[_0x88ed('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x327733,_0x3e47ef){return function(_0x3a7edc){if(!_0x3a7edc){_0x327733[_0x88ed('0x1c')](0x194);}return _0x3a7edc;};}function handleError(_0x36113d,_0x363e15){_0x363e15=_0x363e15||0x1f4;return function(_0x3f314d){logger[_0x88ed('0x36')](_0x3f314d['stack']);if(_0x3f314d[_0x88ed('0x33')]){delete _0x3f314d[_0x88ed('0x33')];}_0x36113d[_0x88ed('0x1e')](_0x363e15)[_0x88ed('0x37')](_0x3f314d);};}exports[_0x88ed('0x38')]=function(_0x409c21,_0x459caf){var _0x44689e={},_0xf8866c={},_0x5f47c8={'count':0x0,'rows':[]};var _0x308366=_[_0x88ed('0x2e')](db['VoiceExtension']['rawAttributes'],function(_0x1e5b4e){return{'name':_0x1e5b4e['fieldName'],'type':_0x1e5b4e['type'][_0x88ed('0x39')]};});_0xf8866c[_0x88ed('0x3a')]=_[_0x88ed('0x2e')](_0x308366,_0x88ed('0x33'));_0xf8866c[_0x88ed('0x3b')]=_[_0x88ed('0x3c')](_0x409c21[_0x88ed('0x3b')]);_0xf8866c[_0x88ed('0x3d')]=_[_0x88ed('0x3e')](_0xf8866c[_0x88ed('0x3a')],_0xf8866c[_0x88ed('0x3b')]);_0x44689e[_0x88ed('0x3f')]=_[_0x88ed('0x3e')](_0xf8866c[_0x88ed('0x3a')],qs[_0x88ed('0x40')](_0x409c21[_0x88ed('0x3b')][_0x88ed('0x40')]));_0x44689e[_0x88ed('0x3f')]=_0x44689e['attributes'][_0x88ed('0x41')]?_0x44689e[_0x88ed('0x3f')]:_0xf8866c[_0x88ed('0x3a')];if(!_0x409c21[_0x88ed('0x3b')][_0x88ed('0x42')](_0x88ed('0x43'))){_0x44689e['limit']=qs[_0x88ed('0x21')](_0x409c21[_0x88ed('0x3b')][_0x88ed('0x21')]);_0x44689e[_0x88ed('0x20')]=qs[_0x88ed('0x20')](_0x409c21[_0x88ed('0x3b')][_0x88ed('0x20')]);}_0x44689e['order']=qs[_0x88ed('0x44')](_0x409c21[_0x88ed('0x3b')]['sort']);_0x44689e['where']=qs['filters'](_['pick'](_0x409c21[_0x88ed('0x3b')],_0xf8866c[_0x88ed('0x3d')]),_0x308366);if(_0x409c21[_0x88ed('0x3b')][_0x88ed('0x2c')]){_0x44689e[_0x88ed('0x45')]=_[_0x88ed('0x46')](_0x44689e['where'],{'$or':_[_0x88ed('0x2e')](_0x308366,function(_0x4d9c5a){if(_0x4d9c5a[_0x88ed('0x32')]!==_0x88ed('0x47')){var _0xfeac55={};_0xfeac55[_0x4d9c5a[_0x88ed('0x33')]]={'$like':'%'+_0x409c21[_0x88ed('0x3b')]['filter']+'%'};return _0xfeac55;}})});}_0x44689e=_[_0x88ed('0x46')]({},_0x44689e,_0x409c21[_0x88ed('0x48')]);var _0x2e7371={'where':_0x44689e['where']};return db[_0x88ed('0x49')][_0x88ed('0x23')](_0x2e7371)[_0x88ed('0x35')](function(_0x231e94){_0x5f47c8[_0x88ed('0x23')]=_0x231e94;if(_0x409c21[_0x88ed('0x3b')][_0x88ed('0x4a')]){_0x44689e[_0x88ed('0x4b')]=[{'all':!![]}];}return db['VoiceExtension']['findAll'](_0x44689e);})[_0x88ed('0x35')](function(_0x3e7ad2){_0x5f47c8[_0x88ed('0x4c')]=_0x3e7ad2;return _0x5f47c8;})['then'](respondWithFilteredResult(_0x459caf,_0x44689e))[_0x88ed('0x4d')](handleError(_0x459caf,null));};exports['show']=function(_0x2644bd,_0x4410b4){var _0x2963b9={'raw':![],'where':{'id':_0x2644bd[_0x88ed('0x4e')]['id']}},_0x434d4a={};_0x434d4a[_0x88ed('0x3a')]=_[_0x88ed('0x3c')](db[_0x88ed('0x49')][_0x88ed('0x4f')]);_0x434d4a['query']=_['keys'](_0x2644bd[_0x88ed('0x3b')]);_0x434d4a['filters']=_['intersection'](_0x434d4a[_0x88ed('0x3a')],_0x434d4a['query']);_0x2963b9[_0x88ed('0x3f')]=_[_0x88ed('0x3e')](_0x434d4a[_0x88ed('0x3a')],qs[_0x88ed('0x40')](_0x2644bd[_0x88ed('0x3b')][_0x88ed('0x40')]));_0x2963b9[_0x88ed('0x3f')]=_0x2963b9[_0x88ed('0x3f')]['length']?_0x2963b9['attributes']:_0x434d4a['model'];if(_0x2644bd[_0x88ed('0x3b')][_0x88ed('0x4a')]){_0x2963b9['include']=[{'all':!![]}];}_0x2963b9=_['merge']({},_0x2963b9,_0x2644bd['options']);return db['VoiceExtension'][_0x88ed('0x31')](_0x2963b9)[_0x88ed('0x35')](handleEntityNotFound(_0x4410b4,null))['then'](respondWithResult(_0x4410b4,null))['catch'](handleError(_0x4410b4,null));};exports[_0x88ed('0x27')]=function(_0x3bba28,_0x63fc84){return db[_0x88ed('0x49')][_0x88ed('0x31')]({'where':{'id':_0x3bba28[_0x88ed('0x4e')]['id']}})[_0x88ed('0x35')](handleEntityNotFound(_0x63fc84,null))[_0x88ed('0x35')](removeEntity(_0x63fc84,null))[_0x88ed('0x4d')](handleError(_0x63fc84,null));};exports[_0x88ed('0x50')]=function(_0x17d6c5,_0x29aeae){if(_0x17d6c5['body'][_0x88ed('0x32')]===_0x88ed('0x51')&&!_[_0x88ed('0x52')](_0x17d6c5[_0x88ed('0x53')][_0x88ed('0x54')],'_')){_0x17d6c5[_0x88ed('0x53')]['exten']='_'['concat'](_0x17d6c5[_0x88ed('0x53')]['exten']);}return db[_0x88ed('0x49')][_0x88ed('0x50')](_0x17d6c5[_0x88ed('0x53')],{'raw':![]})[_0x88ed('0x35')](function(_0x1a9153){var _0x2c00d9=_0x17d6c5[_0x88ed('0x55')]['get']({'plain':!![]});if(!_0x2c00d9)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2c00d9['role']===_0x88ed('0x55')){var _0x3fc315=_0x1a9153['get']({'plain':!![]});var _0x21860e=[{'name':_0x88ed('0x28'),'value':'inbound'},{'name':_0x88ed('0x2a'),'value':_0x88ed('0x51')},{'name':_0x88ed('0x2b'),'value':'internal'}];var _0x4ccff1=_[_0x88ed('0x31')](_0x21860e,[_0x88ed('0x2f'),_0x3fc315[_0x88ed('0x32')]])[_0x88ed('0x33')];return db['UserProfileSection'][_0x88ed('0x31')]({'where':{'name':_0x4ccff1,'userProfileId':_0x2c00d9[_0x88ed('0x56')]},'raw':!![]})[_0x88ed('0x35')](function(_0x1d2922){if(_0x1d2922&&_0x1d2922[_0x88ed('0x57')]===0x0){return db[_0x88ed('0x34')][_0x88ed('0x50')]({'name':_0x3fc315[_0x88ed('0x33')],'resourceId':_0x3fc315['id'],'type':_0x1d2922[_0x88ed('0x33')],'sectionId':_0x1d2922['id']},{})[_0x88ed('0x35')](function(){return _0x1a9153;});}else{return _0x1a9153;}})[_0x88ed('0x4d')](function(_0x1814af){logger[_0x88ed('0x36')](_0x88ed('0x58'),_0x1814af);throw _0x1814af;});}return _0x1a9153;})[_0x88ed('0x35')](respondWithResult(_0x29aeae,0xc9))['catch'](handleError(_0x29aeae,null));};exports[_0x88ed('0x59')]=function(_0x45441b,_0x3b9a8b){if(_0x45441b[_0x88ed('0x53')]['id']){delete _0x45441b[_0x88ed('0x53')]['id'];}return db['VoiceExtension'][_0x88ed('0x31')]({'where':{'id':_0x45441b[_0x88ed('0x4e')]['id']}})[_0x88ed('0x35')](handleEntityNotFound(_0x3b9a8b,null))[_0x88ed('0x35')](function(_0x452dbc){if(_0x452dbc){return db[_0x88ed('0x49')]['update'](_['pick'](_0x45441b['body'],[_0x88ed('0x54'),'context','description',_0x88ed('0x5a'),_0x88ed('0x5b'),_0x88ed('0x5c'),_0x88ed('0x5d')]),{'where':{'context':_0x452dbc[_0x88ed('0x5e')],'exten':_0x452dbc[_0x88ed('0x54')]},'individualHooks':!![]})[_0x88ed('0x35')](function(_0x2ff280){return _0x2ff280;});}return null;})[_0x88ed('0x35')](respondWithStatusCode(_0x3b9a8b,null))[_0x88ed('0x4d')](handleError(_0x3b9a8b,null));};exports['addApplications']=function(_0xf5061,_0x5a01a3){return db[_0x88ed('0x49')]['findOne']({'where':{'id':_0xf5061[_0x88ed('0x4e')]['id']}})['then'](function(_0x31192d){if(_0x31192d){return db[_0x88ed('0x5f')]['transaction'](function(_0x39cceb){return db[_0x88ed('0x49')]['destroy']({'where':{'VoiceExtensionId':_0xf5061[_0x88ed('0x4e')]['id']},'transaction':_0x39cceb})[_0x88ed('0x35')](function(){var _0x1ae067=_[_0x88ed('0x2e')](_0xf5061[_0x88ed('0x53')],function(_0x562ca9){_0x562ca9[_0x88ed('0x60')]=_0xf5061[_0x88ed('0x4e')]['id'];_0x562ca9['isApp']=!![];return _0x562ca9;});var _0x567ace=_0xf5061[_0x88ed('0x3b')][_0x88ed('0x61')]&&_0xf5061['query']['rewriteDial']['toLowerCase']()===_0x88ed('0x62')?!![]:![];return _0x31192d[_0x88ed('0x63')](_0x1ae067,_0x567ace);})['then'](function(_0x429b22){return db[_0x88ed('0x49')][_0x88ed('0x64')](_0x429b22,{'transaction':_0x39cceb});});})[_0x88ed('0x35')](function(){return db[_0x88ed('0x49')][_0x88ed('0x65')]({'where':{'isApp':!![],'VoiceExtensionId':_0xf5061[_0x88ed('0x4e')]['id']},'order':'cast(priority\x20as\x20unsigned)'});});}})[_0x88ed('0x35')](respondWithResult(_0x5a01a3,null))[_0x88ed('0x4d')](handleError(_0x5a01a3,null));};