b3799f9c0e856a905f5371fd6bd496dea32c56e0
[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 _0x9b70=['zip-dir','fast-json-patch','request-promise','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./voiceExtension.socket','register','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','save','update','then','get','inbound','OutboundRoutes','outbound','internal','filter','ignore','map','value','includes','find','type','UserProfileResource','destroy','error','stack','name','send','index','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','includeAll','include','VoiceExtension','rows','show','params','catch','body','exten','concat','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','InternalRoutes','userProfileId','autoAssociation','create','description','recordingFormat','cutdigits','mandatoryDisposition','context','addApplications','findOne','sequelize','bulkCreate','html-pdf','eml-format','rimraf'];(function(_0x26b2a9,_0x34bf0d){var _0x54479b=function(_0x5195f5){while(--_0x5195f5){_0x26b2a9['push'](_0x26b2a9['shift']());}};_0x54479b(++_0x34bf0d);}(_0x9b70,0x13e));var _0x09b7=function(_0x1730dd,_0x3cacb2){_0x1730dd=_0x1730dd-0x0;var _0x15a53c=_0x9b70[_0x1730dd];return _0x15a53c;};'use strict';var pdf=require(_0x09b7('0x0'));var emlformat=require(_0x09b7('0x1'));var rimraf=require(_0x09b7('0x2'));var zipdir=require(_0x09b7('0x3'));var jsonpatch=require(_0x09b7('0x4'));var rp=require(_0x09b7('0x5'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x09b7('0x6'));var util=require(_0x09b7('0x7'));var path=require(_0x09b7('0x8'));var sox=require('sox');var csv=require(_0x09b7('0x9'));var ejs=require(_0x09b7('0xa'));var fs=require('fs');var _=require('lodash');var squel=require(_0x09b7('0xb'));var crypto=require(_0x09b7('0xc'));var jsforce=require(_0x09b7('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x09b7('0x9'));var querystring=require('querystring');var Papa=require(_0x09b7('0xe'));var Redis=require(_0x09b7('0xf'));var authService=require(_0x09b7('0x10'));var qs=require(_0x09b7('0x11'));var as=require(_0x09b7('0x12'));var hardwareService=require(_0x09b7('0x13'));var logger=require('../../config/logger')(_0x09b7('0x14'));var utils=require(_0x09b7('0x15'));var config=require(_0x09b7('0x16'));var licenseUtil=require(_0x09b7('0x17'));var db=require(_0x09b7('0x18'))['db'];config[_0x09b7('0x19')]=_[_0x09b7('0x1a')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x09b7('0x1b'))(new Redis(config[_0x09b7('0x19')]));require(_0x09b7('0x1c'))[_0x09b7('0x1d')](socket);function respondWithStatusCode(_0x3b6b52,_0x5bfa1c){_0x5bfa1c=_0x5bfa1c||0xcc;return function(_0x55e303){if(_0x55e303){return _0x3b6b52[_0x09b7('0x1e')](_0x5bfa1c);}return _0x3b6b52[_0x09b7('0x1f')](_0x5bfa1c)[_0x09b7('0x20')]();};}function respondWithResult(_0x4f1ec1,_0x249aa9){_0x249aa9=_0x249aa9||0xc8;return function(_0x5cd784){if(_0x5cd784){return _0x4f1ec1[_0x09b7('0x1f')](_0x249aa9)[_0x09b7('0x21')](_0x5cd784);}};}function respondWithFilteredResult(_0x2147ee,_0x2bacfe){return function(_0x36e7bd){if(_0x36e7bd){var _0x36af01=_0x36e7bd[_0x09b7('0x22')],_0x5145bd=_0x2bacfe[_0x09b7('0x23')],_0x455665=_0x2bacfe['offset']+_0x2bacfe[_0x09b7('0x24')],_0x1052ba;if(_0x455665>=_0x36af01){_0x455665=_0x36af01;_0x1052ba=0xc8;}else{_0x1052ba=0xce;}_0x2147ee[_0x09b7('0x1f')](_0x1052ba);return _0x2147ee[_0x09b7('0x25')](_0x09b7('0x26'),_0x5145bd+'-'+_0x455665+'/'+_0x36af01)[_0x09b7('0x21')](_0x36e7bd);}return null;};}function patchUpdates(_0x447c5f){return function(_0x37826d){try{jsonpatch[_0x09b7('0x27')](_0x37826d,_0x447c5f,!![]);}catch(_0xbad1a4){return BPromise[_0x09b7('0x28')](_0xbad1a4);}return _0x37826d[_0x09b7('0x29')]();};}function saveUpdates(_0x3ce0c1,_0x46296e){return function(_0x643913){if(_0x643913){return _0x643913[_0x09b7('0x2a')](_0x3ce0c1)[_0x09b7('0x2b')](function(_0x5a620e){return _0x5a620e;});}return null;};}function removeEntity(_0x4398fd,_0x1ea5ff){return function(_0x597697){if(_0x597697){return _0x597697['destroy']()['then'](function(){var _0x537f9e=_0x597697[_0x09b7('0x2c')]({'plain':!![]});var _0x2276ca=[{'name':'InboundRoutes','value':_0x09b7('0x2d'),'ignore':![]},{'name':_0x09b7('0x2e'),'value':_0x09b7('0x2f'),'ignore':![]},{'name':'InternalRoutes','value':_0x09b7('0x30'),'ignore':![]}];var _0x408551=_(_0x2276ca)[_0x09b7('0x31')](_0x09b7('0x32'))[_0x09b7('0x33')](_0x09b7('0x34'))[_0x09b7('0x34')]();if(_[_0x09b7('0x35')](_0x408551,_0x537f9e['type'])){return;}var _0x526553=_[_0x09b7('0x36')](_0x2276ca,[_0x09b7('0x34'),_0x537f9e[_0x09b7('0x37')]])['name'];return db[_0x09b7('0x38')][_0x09b7('0x39')]({'where':{'type':_0x526553,'resourceId':_0x537f9e['id']}})[_0x09b7('0x2b')](function(){return _0x597697;});})[_0x09b7('0x2b')](function(){_0x4398fd[_0x09b7('0x1f')](0xcc)[_0x09b7('0x20')]();});}};}function handleEntityNotFound(_0x1cbc03,_0x2a5760){return function(_0x45abab){if(!_0x45abab){_0x1cbc03['sendStatus'](0x194);}return _0x45abab;};}function handleError(_0x129eab,_0x780c4b){_0x780c4b=_0x780c4b||0x1f4;return function(_0x342f84){logger[_0x09b7('0x3a')](_0x342f84[_0x09b7('0x3b')]);if(_0x342f84[_0x09b7('0x3c')]){delete _0x342f84[_0x09b7('0x3c')];}_0x129eab[_0x09b7('0x1f')](_0x780c4b)[_0x09b7('0x3d')](_0x342f84);};}exports[_0x09b7('0x3e')]=function(_0x3d9811,_0x146b1c){var _0x2a015d={},_0x4963ec={},_0x489fb8={'count':0x0,'rows':[]};var _0x14474c=_[_0x09b7('0x33')](db['VoiceExtension'][_0x09b7('0x3f')],function(_0x218bcc){return{'name':_0x218bcc[_0x09b7('0x40')],'type':_0x218bcc['type'][_0x09b7('0x41')]};});_0x4963ec[_0x09b7('0x42')]=_[_0x09b7('0x33')](_0x14474c,'name');_0x4963ec[_0x09b7('0x43')]=_[_0x09b7('0x44')](_0x3d9811['query']);_0x4963ec[_0x09b7('0x45')]=_['intersection'](_0x4963ec[_0x09b7('0x42')],_0x4963ec[_0x09b7('0x43')]);_0x2a015d[_0x09b7('0x46')]=_[_0x09b7('0x47')](_0x4963ec[_0x09b7('0x42')],qs['fields'](_0x3d9811[_0x09b7('0x43')][_0x09b7('0x48')]));_0x2a015d['attributes']=_0x2a015d['attributes'][_0x09b7('0x49')]?_0x2a015d[_0x09b7('0x46')]:_0x4963ec[_0x09b7('0x42')];if(!_0x3d9811[_0x09b7('0x43')][_0x09b7('0x4a')](_0x09b7('0x4b'))){_0x2a015d['limit']=qs[_0x09b7('0x24')](_0x3d9811['query'][_0x09b7('0x24')]);_0x2a015d[_0x09b7('0x23')]=qs[_0x09b7('0x23')](_0x3d9811[_0x09b7('0x43')][_0x09b7('0x23')]);}_0x2a015d[_0x09b7('0x4c')]=qs[_0x09b7('0x4d')](_0x3d9811[_0x09b7('0x43')][_0x09b7('0x4d')]);_0x2a015d[_0x09b7('0x4e')]=qs[_0x09b7('0x45')](_[_0x09b7('0x4f')](_0x3d9811[_0x09b7('0x43')],_0x4963ec['filters']),_0x14474c);if(_0x3d9811[_0x09b7('0x43')][_0x09b7('0x31')]){_0x2a015d[_0x09b7('0x4e')]=_[_0x09b7('0x50')](_0x2a015d[_0x09b7('0x4e')],{'$or':_['map'](_0x14474c,function(_0x4e82a4){if(_0x4e82a4[_0x09b7('0x37')]!==_0x09b7('0x51')){var _0x15dc57={};_0x15dc57[_0x4e82a4[_0x09b7('0x3c')]]={'$like':'%'+_0x3d9811[_0x09b7('0x43')][_0x09b7('0x31')]+'%'};return _0x15dc57;}})});}_0x2a015d=_[_0x09b7('0x50')]({},_0x2a015d,_0x3d9811['options']);var _0x307572={'where':_0x2a015d['where']};return db['VoiceExtension'][_0x09b7('0x22')](_0x307572)[_0x09b7('0x2b')](function(_0x5d5f0e){_0x489fb8[_0x09b7('0x22')]=_0x5d5f0e;if(_0x3d9811['query'][_0x09b7('0x52')]){_0x2a015d[_0x09b7('0x53')]=[{'all':!![]}];}return db[_0x09b7('0x54')]['findAll'](_0x2a015d);})[_0x09b7('0x2b')](function(_0x423962){_0x489fb8[_0x09b7('0x55')]=_0x423962;return _0x489fb8;})[_0x09b7('0x2b')](respondWithFilteredResult(_0x146b1c,_0x2a015d))['catch'](handleError(_0x146b1c,null));};exports[_0x09b7('0x56')]=function(_0x340460,_0x28e060){var _0x5853af={'raw':![],'where':{'id':_0x340460[_0x09b7('0x57')]['id']}},_0x625e54={};_0x625e54['model']=_['keys'](db[_0x09b7('0x54')]['rawAttributes']);_0x625e54[_0x09b7('0x43')]=_['keys'](_0x340460[_0x09b7('0x43')]);_0x625e54[_0x09b7('0x45')]=_['intersection'](_0x625e54[_0x09b7('0x42')],_0x625e54['query']);_0x5853af[_0x09b7('0x46')]=_['intersection'](_0x625e54[_0x09b7('0x42')],qs[_0x09b7('0x48')](_0x340460[_0x09b7('0x43')][_0x09b7('0x48')]));_0x5853af[_0x09b7('0x46')]=_0x5853af['attributes'][_0x09b7('0x49')]?_0x5853af[_0x09b7('0x46')]:_0x625e54['model'];if(_0x340460[_0x09b7('0x43')][_0x09b7('0x52')]){_0x5853af[_0x09b7('0x53')]=[{'all':!![]}];}_0x5853af=_[_0x09b7('0x50')]({},_0x5853af,_0x340460['options']);return db[_0x09b7('0x54')][_0x09b7('0x36')](_0x5853af)[_0x09b7('0x2b')](handleEntityNotFound(_0x28e060,null))[_0x09b7('0x2b')](respondWithResult(_0x28e060,null))[_0x09b7('0x58')](handleError(_0x28e060,null));};exports['destroy']=function(_0x17468f,_0x35ae1e){return db['VoiceExtension'][_0x09b7('0x36')]({'where':{'id':_0x17468f[_0x09b7('0x57')]['id']}})['then'](handleEntityNotFound(_0x35ae1e,null))[_0x09b7('0x2b')](removeEntity(_0x35ae1e,null))[_0x09b7('0x58')](handleError(_0x35ae1e,null));};exports['create']=function(_0x458356,_0x3e74b0){if(_0x458356[_0x09b7('0x59')][_0x09b7('0x37')]==='outbound'&&!_['startsWith'](_0x458356[_0x09b7('0x59')][_0x09b7('0x5a')],'_')){_0x458356[_0x09b7('0x59')]['exten']='_'[_0x09b7('0x5b')](_0x458356[_0x09b7('0x59')][_0x09b7('0x5a')]);}return db['VoiceExtension']['create'](_0x458356[_0x09b7('0x59')],{'raw':![]})[_0x09b7('0x2b')](function(_0x10b136){var _0x27ac09=_0x458356[_0x09b7('0x5c')][_0x09b7('0x2c')]({'plain':!![]});if(!_0x27ac09)throw new Error(_0x09b7('0x5d'));if(_0x27ac09['role']==='user'){var _0x7603ba=_0x10b136[_0x09b7('0x2c')]({'plain':!![]});var _0x1d895a=[{'name':'InboundRoutes','value':_0x09b7('0x2d')},{'name':'OutboundRoutes','value':_0x09b7('0x2f')},{'name':_0x09b7('0x5e'),'value':_0x09b7('0x30')}];var _0x4ed8cb=_[_0x09b7('0x36')](_0x1d895a,[_0x09b7('0x34'),_0x7603ba['type']])[_0x09b7('0x3c')];return db['UserProfileSection'][_0x09b7('0x36')]({'where':{'name':_0x4ed8cb,'userProfileId':_0x27ac09[_0x09b7('0x5f')]},'raw':!![]})[_0x09b7('0x2b')](function(_0x4f9bec){if(_0x4f9bec&&_0x4f9bec[_0x09b7('0x60')]===0x0){return db[_0x09b7('0x38')][_0x09b7('0x61')]({'name':_0x7603ba[_0x09b7('0x3c')],'resourceId':_0x7603ba['id'],'type':_0x4f9bec[_0x09b7('0x3c')],'sectionId':_0x4f9bec['id']},{})[_0x09b7('0x2b')](function(){return _0x10b136;});}else{return _0x10b136;}})[_0x09b7('0x58')](function(_0x4ace05){logger[_0x09b7('0x3a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4ace05);throw _0x4ace05;});}return _0x10b136;})[_0x09b7('0x2b')](respondWithResult(_0x3e74b0,0xc9))[_0x09b7('0x58')](handleError(_0x3e74b0,null));};exports['update']=function(_0x1a23c4,_0x3c90f1){if(_0x1a23c4['body']['id']){delete _0x1a23c4[_0x09b7('0x59')]['id'];}return db[_0x09b7('0x54')][_0x09b7('0x36')]({'where':{'id':_0x1a23c4[_0x09b7('0x57')]['id']}})['then'](handleEntityNotFound(_0x3c90f1,null))[_0x09b7('0x2b')](function(_0x3c8d6f){if(_0x3c8d6f){return db[_0x09b7('0x54')]['update'](_['pick'](_0x1a23c4[_0x09b7('0x59')],[_0x09b7('0x5a'),'context',_0x09b7('0x62'),_0x09b7('0x63'),_0x09b7('0x64'),_0x09b7('0x65')]),{'where':{'context':_0x3c8d6f[_0x09b7('0x66')],'exten':_0x3c8d6f[_0x09b7('0x5a')]},'individualHooks':!![]})[_0x09b7('0x2b')](function(_0x2c5694){return _0x2c5694;});}return null;})['then'](respondWithStatusCode(_0x3c90f1,null))[_0x09b7('0x58')](handleError(_0x3c90f1,null));};exports[_0x09b7('0x67')]=function(_0x205e55,_0x2746ea,_0x1e5819){return db[_0x09b7('0x54')][_0x09b7('0x68')]({'where':{'id':_0x205e55['params']['id']}})[_0x09b7('0x2b')](handleEntityNotFound(_0x2746ea,null))[_0x09b7('0x2b')](function(_0x28b8d5){if(_0x28b8d5){return db[_0x09b7('0x69')]['transaction'](function(_0x33902c){return db[_0x09b7('0x54')][_0x09b7('0x39')]({'where':{'VoiceExtensionId':_0x205e55['params']['id']},'transaction':_0x33902c})['then'](function(_0x1e387e){var _0x284253=_[_0x09b7('0x33')](_0x205e55['body'],function(_0x14cfd6){_0x14cfd6['VoiceExtensionId']=_0x205e55[_0x09b7('0x57')]['id'];return _0x14cfd6;});return db['VoiceExtension'][_0x09b7('0x6a')](_0x284253,{'transaction':_0x33902c});});})['then'](function(){return db[_0x09b7('0x54')]['findAndCountAll']({'where':{'isApp':!![],'VoiceExtensionId':_0x205e55[_0x09b7('0x57')]['id']},'order':'cast(priority\x20as\x20unsigned)'});});}})[_0x09b7('0x2b')](respondWithResult(_0x2746ea,null))[_0x09b7('0x58')](handleError(_0x2746ea,null));};