4bbb9664b3d2d88fe176155e255e0d24951a57fb
[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 _0x27be=['context','description','cutdigits','mandatoryDisposition','findOne','sequelize','transaction','VoiceExtensionId','bulkCreate','cast(priority\x20as\x20unsigned)','html-pdf','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','sendStatus','end','status','json','count','offset','set','apply','reject','then','destroy','get','InboundRoutes','OutboundRoutes','outbound','internal','map','value','includes','type','find','name','UserProfileResource','error','stack','index','VoiceExtension','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','VIRTUAL','merge','include','findAll','catch','show','params','includeAll','create','body','startsWith','exten','concat','user','inbound','InternalRoutes','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update'];(function(_0x5f483c,_0x436f4d){var _0x23c745=function(_0x15d4fd){while(--_0x15d4fd){_0x5f483c['push'](_0x5f483c['shift']());}};_0x23c745(++_0x436f4d);}(_0x27be,0x74));var _0xe27b=function(_0x231397,_0x45ad7c){_0x231397=_0x231397-0x0;var _0x586b4b=_0x27be[_0x231397];return _0x586b4b;};'use strict';var pdf=require(_0xe27b('0x0'));var emlformat=require('eml-format');var rimraf=require(_0xe27b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe27b('0x2'));var rp=require(_0xe27b('0x3'));var moment=require(_0xe27b('0x4'));var BPromise=require(_0xe27b('0x5'));var Mustache=require(_0xe27b('0x6'));var util=require('util');var path=require(_0xe27b('0x7'));var sox=require(_0xe27b('0x8'));var csv=require('to-csv');var ejs=require(_0xe27b('0x9'));var fs=require('fs');var _=require(_0xe27b('0xa'));var squel=require(_0xe27b('0xb'));var crypto=require(_0xe27b('0xc'));var jsforce=require(_0xe27b('0xd'));var deskjs=require(_0xe27b('0xe'));var toCsv=require(_0xe27b('0xf'));var querystring=require('querystring');var Papa=require(_0xe27b('0x10'));var Redis=require(_0xe27b('0x11'));var authService=require(_0xe27b('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xe27b('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe27b('0x14'))(_0xe27b('0x15'));var utils=require(_0xe27b('0x16'));var config=require(_0xe27b('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xe27b('0x18'))['db'];config[_0xe27b('0x19')]=_[_0xe27b('0x1a')](config[_0xe27b('0x19')],{'host':_0xe27b('0x1b'),'port':0x18eb});var socket=require(_0xe27b('0x1c'))(new Redis(config[_0xe27b('0x19')]));require(_0xe27b('0x1d'))[_0xe27b('0x1e')](socket);function respondWithStatusCode(_0x4515db,_0x98f149){_0x98f149=_0x98f149||0xcc;return function(_0xed550a){if(_0xed550a){return _0x4515db[_0xe27b('0x1f')](_0x98f149);}return _0x4515db['status'](_0x98f149)[_0xe27b('0x20')]();};}function respondWithResult(_0x42e5f0,_0x32e2c0){_0x32e2c0=_0x32e2c0||0xc8;return function(_0x1399fc){if(_0x1399fc){return _0x42e5f0[_0xe27b('0x21')](_0x32e2c0)[_0xe27b('0x22')](_0x1399fc);}};}function respondWithFilteredResult(_0x6a90b3,_0x312575){return function(_0x9cf3a7){if(_0x9cf3a7){var _0x32eaeb=_0x9cf3a7[_0xe27b('0x23')],_0x2ddc3c=_0x312575[_0xe27b('0x24')],_0x54b3f4=_0x312575[_0xe27b('0x24')]+_0x312575['limit'],_0x4e660e;if(_0x54b3f4>=_0x32eaeb){_0x54b3f4=_0x32eaeb;_0x4e660e=0xc8;}else{_0x4e660e=0xce;}_0x6a90b3[_0xe27b('0x21')](_0x4e660e);return _0x6a90b3[_0xe27b('0x25')]('Content-Range',_0x2ddc3c+'-'+_0x54b3f4+'/'+_0x32eaeb)[_0xe27b('0x22')](_0x9cf3a7);}return null;};}function patchUpdates(_0xc6cd25){return function(_0x2e8bd6){try{jsonpatch[_0xe27b('0x26')](_0x2e8bd6,_0xc6cd25,!![]);}catch(_0x235ede){return BPromise[_0xe27b('0x27')](_0x235ede);}return _0x2e8bd6['save']();};}function saveUpdates(_0x27ddb1,_0x37ee3b){return function(_0x5d5fa3){if(_0x5d5fa3){return _0x5d5fa3['update'](_0x27ddb1)[_0xe27b('0x28')](function(_0x5ef12d){return _0x5ef12d;});}return null;};}function removeEntity(_0x57ed6a,_0x47e966){return function(_0x10c940){if(_0x10c940){return _0x10c940[_0xe27b('0x29')]()[_0xe27b('0x28')](function(){var _0x5268a6=_0x10c940[_0xe27b('0x2a')]({'plain':!![]});var _0x1edf73=[{'name':_0xe27b('0x2b'),'value':'inbound','ignore':![]},{'name':_0xe27b('0x2c'),'value':_0xe27b('0x2d'),'ignore':![]},{'name':'InternalRoutes','value':_0xe27b('0x2e'),'ignore':![]}];var _0x142a5c=_(_0x1edf73)['filter']('ignore')[_0xe27b('0x2f')]('value')[_0xe27b('0x30')]();if(_[_0xe27b('0x31')](_0x142a5c,_0x5268a6[_0xe27b('0x32')])){return;}var _0x36ae44=_[_0xe27b('0x33')](_0x1edf73,[_0xe27b('0x30'),_0x5268a6[_0xe27b('0x32')]])[_0xe27b('0x34')];return db[_0xe27b('0x35')][_0xe27b('0x29')]({'where':{'type':_0x36ae44,'resourceId':_0x5268a6['id']}})[_0xe27b('0x28')](function(){return _0x10c940;});})['then'](function(){_0x57ed6a['status'](0xcc)[_0xe27b('0x20')]();});}};}function handleEntityNotFound(_0x136b72,_0x38390c){return function(_0xe3451a){if(!_0xe3451a){_0x136b72[_0xe27b('0x1f')](0x194);}return _0xe3451a;};}function handleError(_0x47742c,_0x5780aa){_0x5780aa=_0x5780aa||0x1f4;return function(_0x2cfa18){logger[_0xe27b('0x36')](_0x2cfa18[_0xe27b('0x37')]);if(_0x2cfa18['name']){delete _0x2cfa18[_0xe27b('0x34')];}_0x47742c[_0xe27b('0x21')](_0x5780aa)['send'](_0x2cfa18);};}exports[_0xe27b('0x38')]=function(_0x2b947b,_0x5f54e4){var _0x3b3806={},_0x908c21={},_0x6b933e={'count':0x0,'rows':[]};var _0x3ceacc=_[_0xe27b('0x2f')](db[_0xe27b('0x39')][_0xe27b('0x3a')],function(_0x2c1f80){return{'name':_0x2c1f80['fieldName'],'type':_0x2c1f80[_0xe27b('0x32')][_0xe27b('0x3b')]};});_0x908c21[_0xe27b('0x3c')]=_[_0xe27b('0x2f')](_0x3ceacc,_0xe27b('0x34'));_0x908c21[_0xe27b('0x3d')]=_[_0xe27b('0x3e')](_0x2b947b[_0xe27b('0x3d')]);_0x908c21[_0xe27b('0x3f')]=_[_0xe27b('0x40')](_0x908c21[_0xe27b('0x3c')],_0x908c21[_0xe27b('0x3d')]);_0x3b3806[_0xe27b('0x41')]=_[_0xe27b('0x40')](_0x908c21[_0xe27b('0x3c')],qs[_0xe27b('0x42')](_0x2b947b['query']['fields']));_0x3b3806[_0xe27b('0x41')]=_0x3b3806[_0xe27b('0x41')][_0xe27b('0x43')]?_0x3b3806[_0xe27b('0x41')]:_0x908c21[_0xe27b('0x3c')];if(!_0x2b947b[_0xe27b('0x3d')][_0xe27b('0x44')](_0xe27b('0x45'))){_0x3b3806[_0xe27b('0x46')]=qs[_0xe27b('0x46')](_0x2b947b[_0xe27b('0x3d')][_0xe27b('0x46')]);_0x3b3806[_0xe27b('0x24')]=qs[_0xe27b('0x24')](_0x2b947b['query']['offset']);}_0x3b3806[_0xe27b('0x47')]=qs[_0xe27b('0x48')](_0x2b947b[_0xe27b('0x3d')]['sort']);_0x3b3806[_0xe27b('0x49')]=qs[_0xe27b('0x3f')](_[_0xe27b('0x4a')](_0x2b947b[_0xe27b('0x3d')],_0x908c21[_0xe27b('0x3f')]),_0x3ceacc);if(_0x2b947b[_0xe27b('0x3d')][_0xe27b('0x4b')]){_0x3b3806[_0xe27b('0x49')]=_['merge'](_0x3b3806[_0xe27b('0x49')],{'$or':_['map'](_0x3ceacc,function(_0x4c1e2d){if(_0x4c1e2d['type']!==_0xe27b('0x4c')){var _0x3faa9d={};_0x3faa9d[_0x4c1e2d[_0xe27b('0x34')]]={'$like':'%'+_0x2b947b[_0xe27b('0x3d')][_0xe27b('0x4b')]+'%'};return _0x3faa9d;}})});}_0x3b3806=_[_0xe27b('0x4d')]({},_0x3b3806,_0x2b947b['options']);var _0x553c85={'where':_0x3b3806[_0xe27b('0x49')]};return db[_0xe27b('0x39')][_0xe27b('0x23')](_0x553c85)[_0xe27b('0x28')](function(_0x5d9f00){_0x6b933e[_0xe27b('0x23')]=_0x5d9f00;if(_0x2b947b['query']['includeAll']){_0x3b3806[_0xe27b('0x4e')]=[{'all':!![]}];}return db[_0xe27b('0x39')][_0xe27b('0x4f')](_0x3b3806);})['then'](function(_0x5d0e81){_0x6b933e['rows']=_0x5d0e81;return _0x6b933e;})[_0xe27b('0x28')](respondWithFilteredResult(_0x5f54e4,_0x3b3806))[_0xe27b('0x50')](handleError(_0x5f54e4,null));};exports[_0xe27b('0x51')]=function(_0x13f056,_0x2b6ebd){var _0xd05050={'raw':![],'where':{'id':_0x13f056[_0xe27b('0x52')]['id']}},_0x429d23={};_0x429d23[_0xe27b('0x3c')]=_['keys'](db[_0xe27b('0x39')]['rawAttributes']);_0x429d23['query']=_['keys'](_0x13f056['query']);_0x429d23['filters']=_['intersection'](_0x429d23['model'],_0x429d23['query']);_0xd05050[_0xe27b('0x41')]=_[_0xe27b('0x40')](_0x429d23[_0xe27b('0x3c')],qs[_0xe27b('0x42')](_0x13f056[_0xe27b('0x3d')]['fields']));_0xd05050[_0xe27b('0x41')]=_0xd05050[_0xe27b('0x41')]['length']?_0xd05050[_0xe27b('0x41')]:_0x429d23['model'];if(_0x13f056[_0xe27b('0x3d')][_0xe27b('0x53')]){_0xd05050[_0xe27b('0x4e')]=[{'all':!![]}];}_0xd05050=_[_0xe27b('0x4d')]({},_0xd05050,_0x13f056['options']);return db['VoiceExtension'][_0xe27b('0x33')](_0xd05050)[_0xe27b('0x28')](handleEntityNotFound(_0x2b6ebd,null))[_0xe27b('0x28')](respondWithResult(_0x2b6ebd,null))[_0xe27b('0x50')](handleError(_0x2b6ebd,null));};exports['destroy']=function(_0x35e24f,_0x28dc36){return db[_0xe27b('0x39')][_0xe27b('0x33')]({'where':{'id':_0x35e24f[_0xe27b('0x52')]['id']}})[_0xe27b('0x28')](handleEntityNotFound(_0x28dc36,null))[_0xe27b('0x28')](removeEntity(_0x28dc36,null))[_0xe27b('0x50')](handleError(_0x28dc36,null));};exports[_0xe27b('0x54')]=function(_0x15aa35,_0x3e048e){if(_0x15aa35[_0xe27b('0x55')][_0xe27b('0x32')]===_0xe27b('0x2d')&&!_[_0xe27b('0x56')](_0x15aa35[_0xe27b('0x55')][_0xe27b('0x57')],'_')){_0x15aa35[_0xe27b('0x55')]['exten']='_'[_0xe27b('0x58')](_0x15aa35[_0xe27b('0x55')][_0xe27b('0x57')]);}return db[_0xe27b('0x39')][_0xe27b('0x54')](_0x15aa35[_0xe27b('0x55')],{'raw':![]})['then'](function(_0x2f7c5c){var _0x4b2ee9=_0x15aa35[_0xe27b('0x59')][_0xe27b('0x2a')]({'plain':!![]});if(!_0x4b2ee9)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4b2ee9['role']==='user'){var _0x2cb6e9=_0x2f7c5c[_0xe27b('0x2a')]({'plain':!![]});var _0x5ba15d=[{'name':_0xe27b('0x2b'),'value':_0xe27b('0x5a')},{'name':_0xe27b('0x2c'),'value':'outbound'},{'name':_0xe27b('0x5b'),'value':_0xe27b('0x2e')}];var _0x30fe28=_['find'](_0x5ba15d,[_0xe27b('0x30'),_0x2cb6e9[_0xe27b('0x32')]])['name'];return db[_0xe27b('0x5c')][_0xe27b('0x33')]({'where':{'name':_0x30fe28,'userProfileId':_0x4b2ee9[_0xe27b('0x5d')]},'raw':!![]})[_0xe27b('0x28')](function(_0x8d0dcb){if(_0x8d0dcb&&_0x8d0dcb['autoAssociation']===0x0){return db[_0xe27b('0x35')]['create']({'name':_0x2cb6e9[_0xe27b('0x34')],'resourceId':_0x2cb6e9['id'],'type':_0x8d0dcb['name'],'sectionId':_0x8d0dcb['id']},{})['then'](function(){return _0x2f7c5c;});}else{return _0x2f7c5c;}})[_0xe27b('0x50')](function(_0x152441){logger['error'](_0xe27b('0x5e'),_0x152441);throw _0x152441;});}return _0x2f7c5c;})['then'](respondWithResult(_0x3e048e,0xc9))['catch'](handleError(_0x3e048e,null));};exports['update']=function(_0x3af835,_0x488cb6){if(_0x3af835['body']['id']){delete _0x3af835[_0xe27b('0x55')]['id'];}return db[_0xe27b('0x39')][_0xe27b('0x33')]({'where':{'id':_0x3af835[_0xe27b('0x52')]['id']}})[_0xe27b('0x28')](handleEntityNotFound(_0x488cb6,null))[_0xe27b('0x28')](function(_0xc8be05){if(_0xc8be05){return db['VoiceExtension'][_0xe27b('0x5f')](_[_0xe27b('0x4a')](_0x3af835[_0xe27b('0x55')],[_0xe27b('0x57'),_0xe27b('0x60'),_0xe27b('0x61'),'recordingFormat',_0xe27b('0x62'),_0xe27b('0x63')]),{'where':{'context':_0xc8be05[_0xe27b('0x60')],'exten':_0xc8be05[_0xe27b('0x57')]},'individualHooks':!![]})[_0xe27b('0x28')](function(_0x3e8bd8){return _0x3e8bd8;});}return null;})[_0xe27b('0x28')](respondWithStatusCode(_0x488cb6,null))[_0xe27b('0x50')](handleError(_0x488cb6,null));};exports['addApplications']=function(_0x41bc6b,_0x4cf4e7,_0x2b4fd4){return db['VoiceExtension'][_0xe27b('0x64')]({'where':{'id':_0x41bc6b[_0xe27b('0x52')]['id']}})[_0xe27b('0x28')](handleEntityNotFound(_0x4cf4e7,null))[_0xe27b('0x28')](function(_0xef495d){if(_0xef495d){return db[_0xe27b('0x65')][_0xe27b('0x66')](function(_0x314b71){return db[_0xe27b('0x39')][_0xe27b('0x29')]({'where':{'VoiceExtensionId':_0x41bc6b[_0xe27b('0x52')]['id']},'transaction':_0x314b71})[_0xe27b('0x28')](function(_0x37ca41){var _0x4b4de8=_['map'](_0x41bc6b[_0xe27b('0x55')],function(_0x3248b0){_0x3248b0[_0xe27b('0x67')]=_0x41bc6b[_0xe27b('0x52')]['id'];return _0x3248b0;});return db[_0xe27b('0x39')][_0xe27b('0x68')](_0x4b4de8,{'transaction':_0x314b71});});})[_0xe27b('0x28')](function(){return db[_0xe27b('0x39')]['findAndCountAll']({'where':{'isApp':!![],'VoiceExtensionId':_0x41bc6b['params']['id']},'order':_0xe27b('0x69')});});}})[_0xe27b('0x28')](respondWithResult(_0x4cf4e7,null))[_0xe27b('0x50')](handleError(_0x4cf4e7,null));};