96ebe1b8e56fe49c66a123c9807faa6bbf5f2569
[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 _0x9a7f=['bulkCreate','cast(priority\x20as\x20unsigned)','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','register','sendStatus','status','json','count','offset','limit','set','Content-Range','apply','reject','save','update','then','InboundRoutes','inbound','OutboundRoutes','outbound','internal','ignore','map','value','includes','type','find','name','destroy','error','stack','index','VoiceExtension','rawAttributes','fieldName','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','findAll','rows','catch','params','includeAll','include','startsWith','body','exten','concat','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','InternalRoutes','userProfileId','UserProfileResource','description','recordingFormat','mandatoryDisposition','context','addApplications','findOne','transaction','VoiceExtensionId'];(function(_0x3597d8,_0x543bbf){var _0x1f8924=function(_0x5dc7ef){while(--_0x5dc7ef){_0x3597d8['push'](_0x3597d8['shift']());}};_0x1f8924(++_0x543bbf);}(_0x9a7f,0x1a6));var _0xf9a7=function(_0x53ece1,_0x284ef0){_0x53ece1=_0x53ece1-0x0;var _0x22196c=_0x9a7f[_0x53ece1];return _0x22196c;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0xf9a7('0x0'));var rimraf=require(_0xf9a7('0x1'));var zipdir=require(_0xf9a7('0x2'));var jsonpatch=require(_0xf9a7('0x3'));var rp=require('request-promise');var moment=require(_0xf9a7('0x4'));var BPromise=require(_0xf9a7('0x5'));var Mustache=require(_0xf9a7('0x6'));var util=require('util');var path=require(_0xf9a7('0x7'));var sox=require(_0xf9a7('0x8'));var csv=require(_0xf9a7('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xf9a7('0xa'));var squel=require(_0xf9a7('0xb'));var crypto=require(_0xf9a7('0xc'));var jsforce=require(_0xf9a7('0xd'));var deskjs=require(_0xf9a7('0xe'));var toCsv=require(_0xf9a7('0x9'));var querystring=require(_0xf9a7('0xf'));var Papa=require(_0xf9a7('0x10'));var Redis=require(_0xf9a7('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xf9a7('0x12'));var hardwareService=require(_0xf9a7('0x13'));var logger=require(_0xf9a7('0x14'))('api');var utils=require(_0xf9a7('0x15'));var config=require(_0xf9a7('0x16'));var licenseUtil=require(_0xf9a7('0x17'));var db=require(_0xf9a7('0x18'))['db'];config['redis']=_['defaults'](config[_0xf9a7('0x19')],{'host':_0xf9a7('0x1a'),'port':0x18eb});var socket=require(_0xf9a7('0x1b'))(new Redis(config['redis']));require('./voiceExtension.socket')[_0xf9a7('0x1c')](socket);function respondWithStatusCode(_0x1bdfbe,_0x244115){_0x244115=_0x244115||0xcc;return function(_0x5cf264){if(_0x5cf264){return _0x1bdfbe[_0xf9a7('0x1d')](_0x244115);}return _0x1bdfbe['status'](_0x244115)['end']();};}function respondWithResult(_0x432da0,_0x188d9c){_0x188d9c=_0x188d9c||0xc8;return function(_0x463e10){if(_0x463e10){return _0x432da0[_0xf9a7('0x1e')](_0x188d9c)[_0xf9a7('0x1f')](_0x463e10);}};}function respondWithFilteredResult(_0x5d027a,_0x1fd162){return function(_0x5364c8){if(_0x5364c8){var _0x54b1d1=_0x5364c8[_0xf9a7('0x20')],_0x3f9a3f=_0x1fd162[_0xf9a7('0x21')],_0x5e4b57=_0x1fd162[_0xf9a7('0x21')]+_0x1fd162[_0xf9a7('0x22')],_0x4a24f5;if(_0x5e4b57>=_0x54b1d1){_0x5e4b57=_0x54b1d1;_0x4a24f5=0xc8;}else{_0x4a24f5=0xce;}_0x5d027a[_0xf9a7('0x1e')](_0x4a24f5);return _0x5d027a[_0xf9a7('0x23')](_0xf9a7('0x24'),_0x3f9a3f+'-'+_0x5e4b57+'/'+_0x54b1d1)[_0xf9a7('0x1f')](_0x5364c8);}return null;};}function patchUpdates(_0x2da36e){return function(_0x33f24c){try{jsonpatch[_0xf9a7('0x25')](_0x33f24c,_0x2da36e,!![]);}catch(_0x4ffadc){return BPromise[_0xf9a7('0x26')](_0x4ffadc);}return _0x33f24c[_0xf9a7('0x27')]();};}function saveUpdates(_0x20e14d,_0xea8211){return function(_0x215e57){if(_0x215e57){return _0x215e57[_0xf9a7('0x28')](_0x20e14d)[_0xf9a7('0x29')](function(_0x2a5c6a){return _0x2a5c6a;});}return null;};}function removeEntity(_0x4e4cfa,_0x5e2160){return function(_0x19c825){if(_0x19c825){return _0x19c825['destroy']()[_0xf9a7('0x29')](function(){var _0x3b9548=_0x19c825['get']({'plain':!![]});var _0x4ae90b=[{'name':_0xf9a7('0x2a'),'value':_0xf9a7('0x2b'),'ignore':![]},{'name':_0xf9a7('0x2c'),'value':_0xf9a7('0x2d'),'ignore':![]},{'name':'InternalRoutes','value':_0xf9a7('0x2e'),'ignore':![]}];var _0x3a9613=_(_0x4ae90b)['filter'](_0xf9a7('0x2f'))[_0xf9a7('0x30')](_0xf9a7('0x31'))[_0xf9a7('0x31')]();if(_[_0xf9a7('0x32')](_0x3a9613,_0x3b9548[_0xf9a7('0x33')])){return;}var _0x49386c=_[_0xf9a7('0x34')](_0x4ae90b,[_0xf9a7('0x31'),_0x3b9548[_0xf9a7('0x33')]])[_0xf9a7('0x35')];return db['UserProfileResource'][_0xf9a7('0x36')]({'where':{'type':_0x49386c,'resourceId':_0x3b9548['id']}})[_0xf9a7('0x29')](function(){return _0x19c825;});})['then'](function(){_0x4e4cfa[_0xf9a7('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x211d02,_0x39c3d7){return function(_0x497ac0){if(!_0x497ac0){_0x211d02['sendStatus'](0x194);}return _0x497ac0;};}function handleError(_0x5c280e,_0x3f0c02){_0x3f0c02=_0x3f0c02||0x1f4;return function(_0x3aac1f){logger[_0xf9a7('0x37')](_0x3aac1f[_0xf9a7('0x38')]);if(_0x3aac1f[_0xf9a7('0x35')]){delete _0x3aac1f['name'];}_0x5c280e[_0xf9a7('0x1e')](_0x3f0c02)['send'](_0x3aac1f);};}exports[_0xf9a7('0x39')]=function(_0x1ba72a,_0x1ce137){var _0x5f16ef={},_0x22f284={},_0x1b0c0c={'count':0x0,'rows':[]};var _0x58c997=_[_0xf9a7('0x30')](db[_0xf9a7('0x3a')][_0xf9a7('0x3b')],function(_0x1b7d61){return{'name':_0x1b7d61[_0xf9a7('0x3c')],'type':_0x1b7d61['type']['key']};});_0x22f284['model']=_[_0xf9a7('0x30')](_0x58c997,_0xf9a7('0x35'));_0x22f284[_0xf9a7('0x3d')]=_[_0xf9a7('0x3e')](_0x1ba72a[_0xf9a7('0x3d')]);_0x22f284[_0xf9a7('0x3f')]=_[_0xf9a7('0x40')](_0x22f284[_0xf9a7('0x41')],_0x22f284[_0xf9a7('0x3d')]);_0x5f16ef[_0xf9a7('0x42')]=_[_0xf9a7('0x40')](_0x22f284[_0xf9a7('0x41')],qs[_0xf9a7('0x43')](_0x1ba72a[_0xf9a7('0x3d')][_0xf9a7('0x43')]));_0x5f16ef[_0xf9a7('0x42')]=_0x5f16ef[_0xf9a7('0x42')][_0xf9a7('0x44')]?_0x5f16ef['attributes']:_0x22f284['model'];if(!_0x1ba72a[_0xf9a7('0x3d')][_0xf9a7('0x45')](_0xf9a7('0x46'))){_0x5f16ef[_0xf9a7('0x22')]=qs[_0xf9a7('0x22')](_0x1ba72a[_0xf9a7('0x3d')][_0xf9a7('0x22')]);_0x5f16ef[_0xf9a7('0x21')]=qs[_0xf9a7('0x21')](_0x1ba72a[_0xf9a7('0x3d')][_0xf9a7('0x21')]);}_0x5f16ef[_0xf9a7('0x47')]=qs[_0xf9a7('0x48')](_0x1ba72a[_0xf9a7('0x3d')]['sort']);_0x5f16ef[_0xf9a7('0x49')]=qs[_0xf9a7('0x3f')](_[_0xf9a7('0x4a')](_0x1ba72a['query'],_0x22f284[_0xf9a7('0x3f')]),_0x58c997);if(_0x1ba72a['query'][_0xf9a7('0x4b')]){_0x5f16ef[_0xf9a7('0x49')]=_['merge'](_0x5f16ef['where'],{'$or':_['map'](_0x58c997,function(_0x24f453){if(_0x24f453[_0xf9a7('0x33')]!=='VIRTUAL'){var _0x2794d4={};_0x2794d4[_0x24f453[_0xf9a7('0x35')]]={'$like':'%'+_0x1ba72a[_0xf9a7('0x3d')][_0xf9a7('0x4b')]+'%'};return _0x2794d4;}})});}_0x5f16ef=_[_0xf9a7('0x4c')]({},_0x5f16ef,_0x1ba72a[_0xf9a7('0x4d')]);var _0x34bbb8={'where':_0x5f16ef['where']};return db[_0xf9a7('0x3a')][_0xf9a7('0x20')](_0x34bbb8)['then'](function(_0x431b16){_0x1b0c0c[_0xf9a7('0x20')]=_0x431b16;if(_0x1ba72a[_0xf9a7('0x3d')]['includeAll']){_0x5f16ef['include']=[{'all':!![]}];}return db['VoiceExtension'][_0xf9a7('0x4e')](_0x5f16ef);})[_0xf9a7('0x29')](function(_0x34388a){_0x1b0c0c[_0xf9a7('0x4f')]=_0x34388a;return _0x1b0c0c;})[_0xf9a7('0x29')](respondWithFilteredResult(_0x1ce137,_0x5f16ef))[_0xf9a7('0x50')](handleError(_0x1ce137,null));};exports['show']=function(_0x46df45,_0x3b8d8b){var _0x2208c9={'raw':![],'where':{'id':_0x46df45[_0xf9a7('0x51')]['id']}},_0x16d9ba={};_0x16d9ba[_0xf9a7('0x41')]=_[_0xf9a7('0x3e')](db[_0xf9a7('0x3a')]['rawAttributes']);_0x16d9ba['query']=_[_0xf9a7('0x3e')](_0x46df45[_0xf9a7('0x3d')]);_0x16d9ba[_0xf9a7('0x3f')]=_['intersection'](_0x16d9ba['model'],_0x16d9ba['query']);_0x2208c9[_0xf9a7('0x42')]=_[_0xf9a7('0x40')](_0x16d9ba[_0xf9a7('0x41')],qs[_0xf9a7('0x43')](_0x46df45[_0xf9a7('0x3d')][_0xf9a7('0x43')]));_0x2208c9[_0xf9a7('0x42')]=_0x2208c9['attributes'][_0xf9a7('0x44')]?_0x2208c9['attributes']:_0x16d9ba[_0xf9a7('0x41')];if(_0x46df45[_0xf9a7('0x3d')][_0xf9a7('0x52')]){_0x2208c9[_0xf9a7('0x53')]=[{'all':!![]}];}_0x2208c9=_[_0xf9a7('0x4c')]({},_0x2208c9,_0x46df45[_0xf9a7('0x4d')]);return db[_0xf9a7('0x3a')][_0xf9a7('0x34')](_0x2208c9)['then'](handleEntityNotFound(_0x3b8d8b,null))[_0xf9a7('0x29')](respondWithResult(_0x3b8d8b,null))['catch'](handleError(_0x3b8d8b,null));};exports[_0xf9a7('0x36')]=function(_0x11948a,_0xbbdaa6){return db[_0xf9a7('0x3a')][_0xf9a7('0x34')]({'where':{'id':_0x11948a[_0xf9a7('0x51')]['id']}})[_0xf9a7('0x29')](handleEntityNotFound(_0xbbdaa6,null))[_0xf9a7('0x29')](removeEntity(_0xbbdaa6,null))[_0xf9a7('0x50')](handleError(_0xbbdaa6,null));};exports['create']=function(_0x252459,_0x40a21e){if(_0x252459['body'][_0xf9a7('0x33')]===_0xf9a7('0x2d')&&!_[_0xf9a7('0x54')](_0x252459[_0xf9a7('0x55')][_0xf9a7('0x56')],'_')){_0x252459[_0xf9a7('0x55')][_0xf9a7('0x56')]='_'[_0xf9a7('0x57')](_0x252459[_0xf9a7('0x55')]['exten']);}return db['VoiceExtension'][_0xf9a7('0x58')](_0x252459['body'],{'raw':![]})[_0xf9a7('0x29')](function(_0x56852c){var _0x45efea=_0x252459[_0xf9a7('0x59')]['get']({'plain':!![]});if(!_0x45efea)throw new Error(_0xf9a7('0x5a'));if(_0x45efea[_0xf9a7('0x5b')]==='user'){var _0xa55d87=_0x56852c['get']({'plain':!![]});var _0x49fb5e=[{'name':_0xf9a7('0x2a'),'value':_0xf9a7('0x2b')},{'name':'OutboundRoutes','value':'outbound'},{'name':_0xf9a7('0x5c'),'value':_0xf9a7('0x2e')}];var _0x4b6ad6=_[_0xf9a7('0x34')](_0x49fb5e,['value',_0xa55d87[_0xf9a7('0x33')]])[_0xf9a7('0x35')];return db['UserProfileSection']['find']({'where':{'name':_0x4b6ad6,'userProfileId':_0x45efea[_0xf9a7('0x5d')]},'raw':!![]})['then'](function(_0x35b819){if(_0x35b819&&_0x35b819['autoAssociation']===0x0){return db[_0xf9a7('0x5e')][_0xf9a7('0x58')]({'name':_0xa55d87[_0xf9a7('0x35')],'resourceId':_0xa55d87['id'],'type':_0x35b819[_0xf9a7('0x35')],'sectionId':_0x35b819['id']},{})[_0xf9a7('0x29')](function(){return _0x56852c;});}else{return _0x56852c;}})[_0xf9a7('0x50')](function(_0x3e3b30){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3e3b30);throw _0x3e3b30;});}return _0x56852c;})[_0xf9a7('0x29')](respondWithResult(_0x40a21e,0xc9))[_0xf9a7('0x50')](handleError(_0x40a21e,null));};exports[_0xf9a7('0x28')]=function(_0x23964f,_0x40b097){if(_0x23964f[_0xf9a7('0x55')]['id']){delete _0x23964f[_0xf9a7('0x55')]['id'];}return db[_0xf9a7('0x3a')][_0xf9a7('0x34')]({'where':{'id':_0x23964f[_0xf9a7('0x51')]['id']}})[_0xf9a7('0x29')](handleEntityNotFound(_0x40b097,null))[_0xf9a7('0x29')](function(_0x5281ac){if(_0x5281ac){return db[_0xf9a7('0x3a')]['update'](_[_0xf9a7('0x4a')](_0x23964f['body'],[_0xf9a7('0x56'),'context',_0xf9a7('0x5f'),_0xf9a7('0x60'),'cutdigits',_0xf9a7('0x61')]),{'where':{'context':_0x5281ac[_0xf9a7('0x62')],'exten':_0x5281ac[_0xf9a7('0x56')]},'individualHooks':!![]})[_0xf9a7('0x29')](function(_0x74bd2f){return _0x74bd2f;});}return null;})[_0xf9a7('0x29')](respondWithStatusCode(_0x40b097,null))[_0xf9a7('0x50')](handleError(_0x40b097,null));};exports[_0xf9a7('0x63')]=function(_0x1e0db5,_0x18ce10,_0x1dd134){return db['VoiceExtension'][_0xf9a7('0x64')]({'where':{'id':_0x1e0db5[_0xf9a7('0x51')]['id']}})['then'](handleEntityNotFound(_0x18ce10,null))[_0xf9a7('0x29')](function(_0x969fed){if(_0x969fed){return db['sequelize'][_0xf9a7('0x65')](function(_0x547c10){return db[_0xf9a7('0x3a')][_0xf9a7('0x36')]({'where':{'VoiceExtensionId':_0x1e0db5[_0xf9a7('0x51')]['id']},'transaction':_0x547c10})[_0xf9a7('0x29')](function(_0x7a15b2){var _0x2e1ce6=_[_0xf9a7('0x30')](_0x1e0db5[_0xf9a7('0x55')],function(_0x5b79a7){_0x5b79a7[_0xf9a7('0x66')]=_0x1e0db5[_0xf9a7('0x51')]['id'];return _0x5b79a7;});return db[_0xf9a7('0x3a')][_0xf9a7('0x67')](_0x2e1ce6,{'transaction':_0x547c10});});})[_0xf9a7('0x29')](function(){return db[_0xf9a7('0x3a')]['findAndCountAll']({'where':{'isApp':!![],'VoiceExtensionId':_0x1e0db5[_0xf9a7('0x51')]['id']},'order':_0xf9a7('0x68')});});}})[_0xf9a7('0x29')](respondWithResult(_0x18ce10,null))[_0xf9a7('0x50')](handleError(_0x18ce10,null));};