af0199bfc37c57fb2abcd272dfaef3cfb4c579b5
[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 _0x44d0=['params','rawAttributes','include','create','body','outbound','startsWith','exten','concat','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','get','OutboundRoutes','UserProfileSection','userProfileId','autoAssociation','pick','context','cutdigits','addApplications','findOne','transaction','VoiceExtensionId','bulkCreate','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./voiceExtension.socket','register','sendStatus','end','status','json','count','offset','limit','Content-Range','save','update','destroy','then','InboundRoutes','inbound','InternalRoutes','internal','filter','map','value','includes','type','find','name','UserProfileResource','send','index','VoiceExtension','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','VIRTUAL','merge','options','findAll','rows','catch','show'];(function(_0x2e130e,_0x3b416e){var _0xb77937=function(_0x1be8b4){while(--_0x1be8b4){_0x2e130e['push'](_0x2e130e['shift']());}};_0xb77937(++_0x3b416e);}(_0x44d0,0x1b0));var _0x044d=function(_0x2209b6,_0x5b5e5b){_0x2209b6=_0x2209b6-0x0;var _0x58b712=_0x44d0[_0x2209b6];return _0x58b712;};'use strict';var pdf=require('html-pdf');var emlformat=require('eml-format');var rimraf=require(_0x044d('0x0'));var zipdir=require(_0x044d('0x1'));var jsonpatch=require(_0x044d('0x2'));var rp=require(_0x044d('0x3'));var moment=require(_0x044d('0x4'));var BPromise=require(_0x044d('0x5'));var Mustache=require(_0x044d('0x6'));var util=require('util');var path=require(_0x044d('0x7'));var sox=require(_0x044d('0x8'));var csv=require(_0x044d('0x9'));var ejs=require(_0x044d('0xa'));var fs=require('fs');var _=require('lodash');var squel=require('squel');var crypto=require(_0x044d('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x044d('0xc'));var toCsv=require(_0x044d('0x9'));var querystring=require(_0x044d('0xd'));var Papa=require(_0x044d('0xe'));var Redis=require(_0x044d('0xf'));var authService=require(_0x044d('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x044d('0x11'));var hardwareService=require(_0x044d('0x12'));var logger=require(_0x044d('0x13'))('api');var utils=require(_0x044d('0x14'));var config=require(_0x044d('0x15'));var licenseUtil=require(_0x044d('0x16'));var db=require(_0x044d('0x17'))['db'];config[_0x044d('0x18')]=_['defaults'](config[_0x044d('0x18')],{'host':_0x044d('0x19'),'port':0x18eb});var socket=require(_0x044d('0x1a'))(new Redis(config['redis']));require(_0x044d('0x1b'))[_0x044d('0x1c')](socket);function respondWithStatusCode(_0x38feb9,_0x29a5e3){_0x29a5e3=_0x29a5e3||0xcc;return function(_0x49a623){if(_0x49a623){return _0x38feb9[_0x044d('0x1d')](_0x29a5e3);}return _0x38feb9['status'](_0x29a5e3)[_0x044d('0x1e')]();};}function respondWithResult(_0x52170a,_0x5595b3){_0x5595b3=_0x5595b3||0xc8;return function(_0x15bb74){if(_0x15bb74){return _0x52170a[_0x044d('0x1f')](_0x5595b3)[_0x044d('0x20')](_0x15bb74);}};}function respondWithFilteredResult(_0x7650ca,_0x51816b){return function(_0x23d152){if(_0x23d152){var _0x496ff2=_0x23d152[_0x044d('0x21')],_0xeeb6ef=_0x51816b[_0x044d('0x22')],_0x3ba54d=_0x51816b[_0x044d('0x22')]+_0x51816b[_0x044d('0x23')],_0x2b164d;if(_0x3ba54d>=_0x496ff2){_0x3ba54d=_0x496ff2;_0x2b164d=0xc8;}else{_0x2b164d=0xce;}_0x7650ca['status'](_0x2b164d);return _0x7650ca['set'](_0x044d('0x24'),_0xeeb6ef+'-'+_0x3ba54d+'/'+_0x496ff2)[_0x044d('0x20')](_0x23d152);}return null;};}function patchUpdates(_0x3ed684){return function(_0xe292de){try{jsonpatch['apply'](_0xe292de,_0x3ed684,!![]);}catch(_0x5cb86a){return BPromise['reject'](_0x5cb86a);}return _0xe292de[_0x044d('0x25')]();};}function saveUpdates(_0x2391ab,_0x6a8eb8){return function(_0x735328){if(_0x735328){return _0x735328[_0x044d('0x26')](_0x2391ab)['then'](function(_0x3df8eb){return _0x3df8eb;});}return null;};}function removeEntity(_0x31cfc4,_0x4724e2){return function(_0x1324e5){if(_0x1324e5){return _0x1324e5[_0x044d('0x27')]()[_0x044d('0x28')](function(){var _0x329e61=_0x1324e5['get']({'plain':!![]});var _0x2d51b3=[{'name':_0x044d('0x29'),'value':_0x044d('0x2a'),'ignore':![]},{'name':'OutboundRoutes','value':'outbound','ignore':![]},{'name':_0x044d('0x2b'),'value':_0x044d('0x2c'),'ignore':![]}];var _0x6b7c54=_(_0x2d51b3)[_0x044d('0x2d')]('ignore')[_0x044d('0x2e')](_0x044d('0x2f'))[_0x044d('0x2f')]();if(_[_0x044d('0x30')](_0x6b7c54,_0x329e61[_0x044d('0x31')])){return;}var _0x65dfdb=_[_0x044d('0x32')](_0x2d51b3,[_0x044d('0x2f'),_0x329e61[_0x044d('0x31')]])[_0x044d('0x33')];return db[_0x044d('0x34')][_0x044d('0x27')]({'where':{'type':_0x65dfdb,'resourceId':_0x329e61['id']}})[_0x044d('0x28')](function(){return _0x1324e5;});})[_0x044d('0x28')](function(){_0x31cfc4[_0x044d('0x1f')](0xcc)[_0x044d('0x1e')]();});}};}function handleEntityNotFound(_0x3b5d26,_0x47c518){return function(_0x169ced){if(!_0x169ced){_0x3b5d26[_0x044d('0x1d')](0x194);}return _0x169ced;};}function handleError(_0x779ecf,_0x2c5749){_0x2c5749=_0x2c5749||0x1f4;return function(_0x4790af){logger['error'](_0x4790af['stack']);if(_0x4790af[_0x044d('0x33')]){delete _0x4790af['name'];}_0x779ecf[_0x044d('0x1f')](_0x2c5749)[_0x044d('0x35')](_0x4790af);};}exports[_0x044d('0x36')]=function(_0x28fc7c,_0x4479e5){var _0x29cab0={},_0x57f32d={},_0x27dc67={'count':0x0,'rows':[]};var _0x2734e3=_[_0x044d('0x2e')](db[_0x044d('0x37')]['rawAttributes'],function(_0x21db2){return{'name':_0x21db2[_0x044d('0x38')],'type':_0x21db2[_0x044d('0x31')][_0x044d('0x39')]};});_0x57f32d[_0x044d('0x3a')]=_[_0x044d('0x2e')](_0x2734e3,_0x044d('0x33'));_0x57f32d[_0x044d('0x3b')]=_[_0x044d('0x3c')](_0x28fc7c[_0x044d('0x3b')]);_0x57f32d[_0x044d('0x3d')]=_[_0x044d('0x3e')](_0x57f32d['model'],_0x57f32d[_0x044d('0x3b')]);_0x29cab0[_0x044d('0x3f')]=_[_0x044d('0x3e')](_0x57f32d['model'],qs[_0x044d('0x40')](_0x28fc7c[_0x044d('0x3b')][_0x044d('0x40')]));_0x29cab0[_0x044d('0x3f')]=_0x29cab0['attributes'][_0x044d('0x41')]?_0x29cab0[_0x044d('0x3f')]:_0x57f32d[_0x044d('0x3a')];if(!_0x28fc7c[_0x044d('0x3b')][_0x044d('0x42')](_0x044d('0x43'))){_0x29cab0['limit']=qs[_0x044d('0x23')](_0x28fc7c[_0x044d('0x3b')][_0x044d('0x23')]);_0x29cab0[_0x044d('0x22')]=qs[_0x044d('0x22')](_0x28fc7c[_0x044d('0x3b')][_0x044d('0x22')]);}_0x29cab0[_0x044d('0x44')]=qs[_0x044d('0x45')](_0x28fc7c[_0x044d('0x3b')][_0x044d('0x45')]);_0x29cab0[_0x044d('0x46')]=qs[_0x044d('0x3d')](_['pick'](_0x28fc7c['query'],_0x57f32d[_0x044d('0x3d')]),_0x2734e3);if(_0x28fc7c['query'][_0x044d('0x2d')]){_0x29cab0[_0x044d('0x46')]=_['merge'](_0x29cab0[_0x044d('0x46')],{'$or':_[_0x044d('0x2e')](_0x2734e3,function(_0x5e80c0){if(_0x5e80c0[_0x044d('0x31')]!==_0x044d('0x47')){var _0x256214={};_0x256214[_0x5e80c0[_0x044d('0x33')]]={'$like':'%'+_0x28fc7c[_0x044d('0x3b')][_0x044d('0x2d')]+'%'};return _0x256214;}})});}_0x29cab0=_[_0x044d('0x48')]({},_0x29cab0,_0x28fc7c[_0x044d('0x49')]);var _0xec5704={'where':_0x29cab0[_0x044d('0x46')]};return db[_0x044d('0x37')][_0x044d('0x21')](_0xec5704)[_0x044d('0x28')](function(_0x1b1190){_0x27dc67[_0x044d('0x21')]=_0x1b1190;if(_0x28fc7c['query']['includeAll']){_0x29cab0['include']=[{'all':!![]}];}return db[_0x044d('0x37')][_0x044d('0x4a')](_0x29cab0);})['then'](function(_0x16df3f){_0x27dc67[_0x044d('0x4b')]=_0x16df3f;return _0x27dc67;})[_0x044d('0x28')](respondWithFilteredResult(_0x4479e5,_0x29cab0))[_0x044d('0x4c')](handleError(_0x4479e5,null));};exports[_0x044d('0x4d')]=function(_0x58c627,_0xe3b37e){var _0x1e6471={'raw':![],'where':{'id':_0x58c627[_0x044d('0x4e')]['id']}},_0x3f19e7={};_0x3f19e7[_0x044d('0x3a')]=_[_0x044d('0x3c')](db[_0x044d('0x37')][_0x044d('0x4f')]);_0x3f19e7['query']=_['keys'](_0x58c627['query']);_0x3f19e7[_0x044d('0x3d')]=_[_0x044d('0x3e')](_0x3f19e7['model'],_0x3f19e7['query']);_0x1e6471[_0x044d('0x3f')]=_[_0x044d('0x3e')](_0x3f19e7[_0x044d('0x3a')],qs[_0x044d('0x40')](_0x58c627[_0x044d('0x3b')][_0x044d('0x40')]));_0x1e6471[_0x044d('0x3f')]=_0x1e6471['attributes'][_0x044d('0x41')]?_0x1e6471[_0x044d('0x3f')]:_0x3f19e7['model'];if(_0x58c627[_0x044d('0x3b')]['includeAll']){_0x1e6471[_0x044d('0x50')]=[{'all':!![]}];}_0x1e6471=_[_0x044d('0x48')]({},_0x1e6471,_0x58c627['options']);return db['VoiceExtension']['find'](_0x1e6471)[_0x044d('0x28')](handleEntityNotFound(_0xe3b37e,null))['then'](respondWithResult(_0xe3b37e,null))[_0x044d('0x4c')](handleError(_0xe3b37e,null));};exports[_0x044d('0x27')]=function(_0x54bba2,_0x172950){return db[_0x044d('0x37')][_0x044d('0x32')]({'where':{'id':_0x54bba2[_0x044d('0x4e')]['id']}})['then'](handleEntityNotFound(_0x172950,null))[_0x044d('0x28')](removeEntity(_0x172950,null))[_0x044d('0x4c')](handleError(_0x172950,null));};exports[_0x044d('0x51')]=function(_0x3e372c,_0x4c85af){if(_0x3e372c[_0x044d('0x52')][_0x044d('0x31')]===_0x044d('0x53')&&!_[_0x044d('0x54')](_0x3e372c[_0x044d('0x52')]['exten'],'_')){_0x3e372c[_0x044d('0x52')][_0x044d('0x55')]='_'[_0x044d('0x56')](_0x3e372c[_0x044d('0x52')][_0x044d('0x55')]);}return db[_0x044d('0x37')][_0x044d('0x51')](_0x3e372c[_0x044d('0x52')],{'raw':![]})[_0x044d('0x28')](function(_0x2d2c6c){var _0xbfc84d=_0x3e372c[_0x044d('0x57')]['get']({'plain':!![]});if(!_0xbfc84d)throw new Error(_0x044d('0x58'));if(_0xbfc84d['role']===_0x044d('0x57')){var _0x16ae81=_0x2d2c6c[_0x044d('0x59')]({'plain':!![]});var _0x247c27=[{'name':_0x044d('0x29'),'value':_0x044d('0x2a')},{'name':_0x044d('0x5a'),'value':_0x044d('0x53')},{'name':_0x044d('0x2b'),'value':_0x044d('0x2c')}];var _0x297019=_['find'](_0x247c27,[_0x044d('0x2f'),_0x16ae81[_0x044d('0x31')]])[_0x044d('0x33')];return db[_0x044d('0x5b')][_0x044d('0x32')]({'where':{'name':_0x297019,'userProfileId':_0xbfc84d[_0x044d('0x5c')]},'raw':!![]})[_0x044d('0x28')](function(_0x4a2cf3){if(_0x4a2cf3&&_0x4a2cf3[_0x044d('0x5d')]===0x0){return db[_0x044d('0x34')]['create']({'name':_0x16ae81[_0x044d('0x33')],'resourceId':_0x16ae81['id'],'type':_0x4a2cf3[_0x044d('0x33')],'sectionId':_0x4a2cf3['id']},{})[_0x044d('0x28')](function(){return _0x2d2c6c;});}else{return _0x2d2c6c;}})[_0x044d('0x4c')](function(_0x5dfd69){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5dfd69);throw _0x5dfd69;});}return _0x2d2c6c;})[_0x044d('0x28')](respondWithResult(_0x4c85af,0xc9))[_0x044d('0x4c')](handleError(_0x4c85af,null));};exports[_0x044d('0x26')]=function(_0x3ecc60,_0x4e6e7e){if(_0x3ecc60[_0x044d('0x52')]['id']){delete _0x3ecc60['body']['id'];}return db[_0x044d('0x37')][_0x044d('0x32')]({'where':{'id':_0x3ecc60[_0x044d('0x4e')]['id']}})[_0x044d('0x28')](handleEntityNotFound(_0x4e6e7e,null))[_0x044d('0x28')](function(_0x42d7ef){if(_0x42d7ef){return db[_0x044d('0x37')][_0x044d('0x26')](_[_0x044d('0x5e')](_0x3ecc60[_0x044d('0x52')],[_0x044d('0x55'),_0x044d('0x5f'),'description','recordingFormat',_0x044d('0x60'),'mandatoryDisposition']),{'where':{'context':_0x42d7ef[_0x044d('0x5f')],'exten':_0x42d7ef[_0x044d('0x55')]},'individualHooks':!![]})[_0x044d('0x28')](function(_0x353a5e){return _0x353a5e;});}return null;})[_0x044d('0x28')](respondWithStatusCode(_0x4e6e7e,null))['catch'](handleError(_0x4e6e7e,null));};exports[_0x044d('0x61')]=function(_0x3e9d87,_0x21aa84,_0x24bdf3){return db['VoiceExtension'][_0x044d('0x62')]({'where':{'id':_0x3e9d87[_0x044d('0x4e')]['id']}})[_0x044d('0x28')](handleEntityNotFound(_0x21aa84,null))[_0x044d('0x28')](function(_0x185a62){if(_0x185a62){return db['sequelize'][_0x044d('0x63')](function(_0x3675d9){return db[_0x044d('0x37')][_0x044d('0x27')]({'where':{'VoiceExtensionId':_0x3e9d87[_0x044d('0x4e')]['id']},'transaction':_0x3675d9})[_0x044d('0x28')](function(_0x18c052){var _0x479470=_[_0x044d('0x2e')](_0x3e9d87[_0x044d('0x52')],function(_0x1fc3d7){_0x1fc3d7[_0x044d('0x64')]=_0x3e9d87[_0x044d('0x4e')]['id'];return _0x1fc3d7;});return db[_0x044d('0x37')][_0x044d('0x65')](_0x479470,{'transaction':_0x3675d9});});})[_0x044d('0x28')](function(){return db[_0x044d('0x37')]['findAndCountAll']({'where':{'isApp':!![],'VoiceExtensionId':_0x3e9d87[_0x044d('0x4e')]['id']},'order':'cast(priority\x20as\x20unsigned)'});});}})['then'](respondWithResult(_0x21aa84,null))[_0x044d('0x4c')](handleError(_0x21aa84,null));};