414800acb9f5d95841d4d4c35bc36e83a1eec12d
[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 _0x06dc=['error','stack','send','index','VoiceExtension','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','rows','catch','show','params','keys','rawAttributes','include','create','startsWith','exten','body','concat','user','get','inbound','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','context','description','recordingFormat','mandatoryDisposition','addApplications','findOne','VoiceExtensionId','findAndCountAll','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','redis','socket.io-emitter','./voiceExtension.socket','status','offset','set','apply','reject','save','then','InboundRoutes','OutboundRoutes','outbound','internal','ignore','map','value','includes','type','find','name','UserProfileResource','destroy','end','sendStatus'];(function(_0x1db481,_0x1627b2){var _0x3db95b=function(_0x2d54e4){while(--_0x2d54e4){_0x1db481['push'](_0x1db481['shift']());}};_0x3db95b(++_0x1627b2);}(_0x06dc,0x1da));var _0xc06d=function(_0x40b3f2,_0x2c4f5f){_0x40b3f2=_0x40b3f2-0x0;var _0x4ce90c=_0x06dc[_0x40b3f2];return _0x4ce90c;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0xc06d('0x0'));var rimraf=require(_0xc06d('0x1'));var zipdir=require(_0xc06d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc06d('0x3'));var moment=require(_0xc06d('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xc06d('0x5'));var util=require(_0xc06d('0x6'));var path=require(_0xc06d('0x7'));var sox=require(_0xc06d('0x8'));var csv=require(_0xc06d('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xc06d('0xa'));var squel=require(_0xc06d('0xb'));var crypto=require(_0xc06d('0xc'));var jsforce=require(_0xc06d('0xd'));var deskjs=require(_0xc06d('0xe'));var toCsv=require(_0xc06d('0x9'));var querystring=require(_0xc06d('0xf'));var Papa=require(_0xc06d('0x10'));var Redis=require(_0xc06d('0x11'));var authService=require(_0xc06d('0x12'));var qs=require(_0xc06d('0x13'));var as=require(_0xc06d('0x14'));var hardwareService=require(_0xc06d('0x15'));var logger=require(_0xc06d('0x16'))(_0xc06d('0x17'));var utils=require('../../config/utils');var config=require(_0xc06d('0x18'));var licenseUtil=require(_0xc06d('0x19'));var db=require('../../mysqldb')['db'];config[_0xc06d('0x1a')]=_['defaults'](config[_0xc06d('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0xc06d('0x1b'))(new Redis(config[_0xc06d('0x1a')]));require(_0xc06d('0x1c'))['register'](socket);function respondWithStatusCode(_0x22ac6f,_0x57de53){_0x57de53=_0x57de53||0xcc;return function(_0x32f97a){if(_0x32f97a){return _0x22ac6f['sendStatus'](_0x57de53);}return _0x22ac6f[_0xc06d('0x1d')](_0x57de53)['end']();};}function respondWithResult(_0x44818d,_0x18e62f){_0x18e62f=_0x18e62f||0xc8;return function(_0x49dbbf){if(_0x49dbbf){return _0x44818d[_0xc06d('0x1d')](_0x18e62f)['json'](_0x49dbbf);}};}function respondWithFilteredResult(_0x27ba58,_0x4d160c){return function(_0x5b4a18){if(_0x5b4a18){var _0x4060d4=_0x5b4a18['count'],_0x418ec1=_0x4d160c[_0xc06d('0x1e')],_0x3f8e09=_0x4d160c[_0xc06d('0x1e')]+_0x4d160c['limit'],_0x1ca3a6;if(_0x3f8e09>=_0x4060d4){_0x3f8e09=_0x4060d4;_0x1ca3a6=0xc8;}else{_0x1ca3a6=0xce;}_0x27ba58['status'](_0x1ca3a6);return _0x27ba58[_0xc06d('0x1f')]('Content-Range',_0x418ec1+'-'+_0x3f8e09+'/'+_0x4060d4)['json'](_0x5b4a18);}return null;};}function patchUpdates(_0x233fc8){return function(_0x2fd8cc){try{jsonpatch[_0xc06d('0x20')](_0x2fd8cc,_0x233fc8,!![]);}catch(_0x520aae){return BPromise[_0xc06d('0x21')](_0x520aae);}return _0x2fd8cc[_0xc06d('0x22')]();};}function saveUpdates(_0x593560,_0x441a43){return function(_0x2eda6b){if(_0x2eda6b){return _0x2eda6b['update'](_0x593560)[_0xc06d('0x23')](function(_0x5a8e8f){return _0x5a8e8f;});}return null;};}function removeEntity(_0xfb37af,_0x15329a){return function(_0xcf8ebe){if(_0xcf8ebe){return _0xcf8ebe['destroy']()['then'](function(){var _0x4358d0=_0xcf8ebe['get']({'plain':!![]});var _0x1a6f78=[{'name':_0xc06d('0x24'),'value':'inbound','ignore':![]},{'name':_0xc06d('0x25'),'value':_0xc06d('0x26'),'ignore':![]},{'name':'InternalRoutes','value':_0xc06d('0x27'),'ignore':![]}];var _0x771a42=_(_0x1a6f78)['filter'](_0xc06d('0x28'))[_0xc06d('0x29')](_0xc06d('0x2a'))[_0xc06d('0x2a')]();if(_[_0xc06d('0x2b')](_0x771a42,_0x4358d0[_0xc06d('0x2c')])){return;}var _0x36c787=_[_0xc06d('0x2d')](_0x1a6f78,[_0xc06d('0x2a'),_0x4358d0[_0xc06d('0x2c')]])[_0xc06d('0x2e')];return db[_0xc06d('0x2f')][_0xc06d('0x30')]({'where':{'type':_0x36c787,'resourceId':_0x4358d0['id']}})[_0xc06d('0x23')](function(){return _0xcf8ebe;});})[_0xc06d('0x23')](function(){_0xfb37af[_0xc06d('0x1d')](0xcc)[_0xc06d('0x31')]();});}};}function handleEntityNotFound(_0x210552,_0x20f667){return function(_0x19d87a){if(!_0x19d87a){_0x210552[_0xc06d('0x32')](0x194);}return _0x19d87a;};}function handleError(_0x5510cd,_0x2426eb){_0x2426eb=_0x2426eb||0x1f4;return function(_0x3d886d){logger[_0xc06d('0x33')](_0x3d886d[_0xc06d('0x34')]);if(_0x3d886d['name']){delete _0x3d886d[_0xc06d('0x2e')];}_0x5510cd['status'](_0x2426eb)[_0xc06d('0x35')](_0x3d886d);};}exports[_0xc06d('0x36')]=function(_0x287e4b,_0xa8f69c){var _0x4818d5={},_0x418ea7={},_0x3ffa5f={'count':0x0,'rows':[]};var _0x2bc403=_[_0xc06d('0x29')](db[_0xc06d('0x37')]['rawAttributes'],function(_0x115eb4){return{'name':_0x115eb4[_0xc06d('0x38')],'type':_0x115eb4[_0xc06d('0x2c')][_0xc06d('0x39')]};});_0x418ea7[_0xc06d('0x3a')]=_[_0xc06d('0x29')](_0x2bc403,_0xc06d('0x2e'));_0x418ea7[_0xc06d('0x3b')]=_['keys'](_0x287e4b[_0xc06d('0x3b')]);_0x418ea7[_0xc06d('0x3c')]=_[_0xc06d('0x3d')](_0x418ea7[_0xc06d('0x3a')],_0x418ea7['query']);_0x4818d5[_0xc06d('0x3e')]=_[_0xc06d('0x3d')](_0x418ea7[_0xc06d('0x3a')],qs[_0xc06d('0x3f')](_0x287e4b[_0xc06d('0x3b')][_0xc06d('0x3f')]));_0x4818d5[_0xc06d('0x3e')]=_0x4818d5['attributes'][_0xc06d('0x40')]?_0x4818d5[_0xc06d('0x3e')]:_0x418ea7[_0xc06d('0x3a')];if(!_0x287e4b['query'][_0xc06d('0x41')](_0xc06d('0x42'))){_0x4818d5['limit']=qs[_0xc06d('0x43')](_0x287e4b[_0xc06d('0x3b')]['limit']);_0x4818d5[_0xc06d('0x1e')]=qs[_0xc06d('0x1e')](_0x287e4b[_0xc06d('0x3b')][_0xc06d('0x1e')]);}_0x4818d5[_0xc06d('0x44')]=qs[_0xc06d('0x45')](_0x287e4b['query'][_0xc06d('0x45')]);_0x4818d5[_0xc06d('0x46')]=qs['filters'](_[_0xc06d('0x47')](_0x287e4b['query'],_0x418ea7[_0xc06d('0x3c')]),_0x2bc403);if(_0x287e4b[_0xc06d('0x3b')][_0xc06d('0x48')]){_0x4818d5[_0xc06d('0x46')]=_[_0xc06d('0x49')](_0x4818d5[_0xc06d('0x46')],{'$or':_[_0xc06d('0x29')](_0x2bc403,function(_0x20fe3e){if(_0x20fe3e[_0xc06d('0x2c')]!==_0xc06d('0x4a')){var _0x24cb5d={};_0x24cb5d[_0x20fe3e[_0xc06d('0x2e')]]={'$like':'%'+_0x287e4b[_0xc06d('0x3b')][_0xc06d('0x48')]+'%'};return _0x24cb5d;}})});}_0x4818d5=_['merge']({},_0x4818d5,_0x287e4b[_0xc06d('0x4b')]);var _0x377320={'where':_0x4818d5[_0xc06d('0x46')]};return db[_0xc06d('0x37')]['count'](_0x377320)[_0xc06d('0x23')](function(_0x125e0e){_0x3ffa5f[_0xc06d('0x4c')]=_0x125e0e;if(_0x287e4b[_0xc06d('0x3b')][_0xc06d('0x4d')]){_0x4818d5['include']=[{'all':!![]}];}return db[_0xc06d('0x37')]['findAll'](_0x4818d5);})[_0xc06d('0x23')](function(_0x399594){_0x3ffa5f[_0xc06d('0x4e')]=_0x399594;return _0x3ffa5f;})[_0xc06d('0x23')](respondWithFilteredResult(_0xa8f69c,_0x4818d5))[_0xc06d('0x4f')](handleError(_0xa8f69c,null));};exports[_0xc06d('0x50')]=function(_0x8cff1c,_0x566541){var _0x4ec1b0={'raw':![],'where':{'id':_0x8cff1c[_0xc06d('0x51')]['id']}},_0x410d22={};_0x410d22[_0xc06d('0x3a')]=_[_0xc06d('0x52')](db[_0xc06d('0x37')][_0xc06d('0x53')]);_0x410d22[_0xc06d('0x3b')]=_[_0xc06d('0x52')](_0x8cff1c[_0xc06d('0x3b')]);_0x410d22[_0xc06d('0x3c')]=_['intersection'](_0x410d22['model'],_0x410d22[_0xc06d('0x3b')]);_0x4ec1b0[_0xc06d('0x3e')]=_[_0xc06d('0x3d')](_0x410d22[_0xc06d('0x3a')],qs[_0xc06d('0x3f')](_0x8cff1c[_0xc06d('0x3b')]['fields']));_0x4ec1b0[_0xc06d('0x3e')]=_0x4ec1b0['attributes']['length']?_0x4ec1b0[_0xc06d('0x3e')]:_0x410d22[_0xc06d('0x3a')];if(_0x8cff1c[_0xc06d('0x3b')]['includeAll']){_0x4ec1b0[_0xc06d('0x54')]=[{'all':!![]}];}_0x4ec1b0=_[_0xc06d('0x49')]({},_0x4ec1b0,_0x8cff1c[_0xc06d('0x4b')]);return db[_0xc06d('0x37')][_0xc06d('0x2d')](_0x4ec1b0)[_0xc06d('0x23')](handleEntityNotFound(_0x566541,null))['then'](respondWithResult(_0x566541,null))[_0xc06d('0x4f')](handleError(_0x566541,null));};exports[_0xc06d('0x30')]=function(_0x510198,_0x57ab64){return db[_0xc06d('0x37')][_0xc06d('0x2d')]({'where':{'id':_0x510198[_0xc06d('0x51')]['id']}})['then'](handleEntityNotFound(_0x57ab64,null))['then'](removeEntity(_0x57ab64,null))[_0xc06d('0x4f')](handleError(_0x57ab64,null));};exports[_0xc06d('0x55')]=function(_0x21eccd,_0x3ecb2a){if(_0x21eccd['body'][_0xc06d('0x2c')]===_0xc06d('0x26')&&!_[_0xc06d('0x56')](_0x21eccd['body'][_0xc06d('0x57')],'_')){_0x21eccd[_0xc06d('0x58')][_0xc06d('0x57')]='_'[_0xc06d('0x59')](_0x21eccd[_0xc06d('0x58')][_0xc06d('0x57')]);}return db['VoiceExtension'][_0xc06d('0x55')](_0x21eccd[_0xc06d('0x58')],{'raw':![]})[_0xc06d('0x23')](function(_0xdd4d69){var _0xa184f2=_0x21eccd[_0xc06d('0x5a')]['get']({'plain':!![]});if(!_0xa184f2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xa184f2['role']==='user'){var _0x31cb76=_0xdd4d69[_0xc06d('0x5b')]({'plain':!![]});var _0x32e94b=[{'name':_0xc06d('0x24'),'value':_0xc06d('0x5c')},{'name':'OutboundRoutes','value':_0xc06d('0x26')},{'name':'InternalRoutes','value':'internal'}];var _0x86b2c6=_[_0xc06d('0x2d')](_0x32e94b,[_0xc06d('0x2a'),_0x31cb76[_0xc06d('0x2c')]])[_0xc06d('0x2e')];return db[_0xc06d('0x5d')][_0xc06d('0x2d')]({'where':{'name':_0x86b2c6,'userProfileId':_0xa184f2[_0xc06d('0x5e')]},'raw':!![]})[_0xc06d('0x23')](function(_0x5247ca){if(_0x5247ca&&_0x5247ca['autoAssociation']===0x0){return db['UserProfileResource'][_0xc06d('0x55')]({'name':_0x31cb76[_0xc06d('0x2e')],'resourceId':_0x31cb76['id'],'type':_0x5247ca[_0xc06d('0x2e')],'sectionId':_0x5247ca['id']},{})[_0xc06d('0x23')](function(){return _0xdd4d69;});}else{return _0xdd4d69;}})['catch'](function(_0x344368){logger['error'](_0xc06d('0x5f'),_0x344368);throw _0x344368;});}return _0xdd4d69;})[_0xc06d('0x23')](respondWithResult(_0x3ecb2a,0xc9))[_0xc06d('0x4f')](handleError(_0x3ecb2a,null));};exports[_0xc06d('0x60')]=function(_0x53ad79,_0x383dfe){if(_0x53ad79[_0xc06d('0x58')]['id']){delete _0x53ad79['body']['id'];}return db[_0xc06d('0x37')][_0xc06d('0x2d')]({'where':{'id':_0x53ad79[_0xc06d('0x51')]['id']}})['then'](handleEntityNotFound(_0x383dfe,null))['then'](function(_0x1da2b6){if(_0x1da2b6){return db[_0xc06d('0x37')][_0xc06d('0x60')](_[_0xc06d('0x47')](_0x53ad79['body'],['exten',_0xc06d('0x61'),_0xc06d('0x62'),_0xc06d('0x63'),'cutdigits',_0xc06d('0x64')]),{'where':{'context':_0x1da2b6['context'],'exten':_0x1da2b6[_0xc06d('0x57')]},'individualHooks':!![]})['then'](function(_0x2dcd1b){return _0x2dcd1b;});}return null;})[_0xc06d('0x23')](respondWithStatusCode(_0x383dfe,null))[_0xc06d('0x4f')](handleError(_0x383dfe,null));};exports[_0xc06d('0x65')]=function(_0x57b3be,_0x42d2ce,_0x418ca6){return db[_0xc06d('0x37')][_0xc06d('0x66')]({'where':{'id':_0x57b3be[_0xc06d('0x51')]['id']}})['then'](handleEntityNotFound(_0x42d2ce,null))[_0xc06d('0x23')](function(_0x29a233){if(_0x29a233){return db['sequelize']['transaction'](function(_0x516d80){return db[_0xc06d('0x37')][_0xc06d('0x30')]({'where':{'VoiceExtensionId':_0x57b3be[_0xc06d('0x51')]['id']},'transaction':_0x516d80})['then'](function(_0x2caebd){var _0x3d972d=_[_0xc06d('0x29')](_0x57b3be['body'],function(_0x416f39){_0x416f39[_0xc06d('0x67')]=_0x57b3be[_0xc06d('0x51')]['id'];return _0x416f39;});return db['VoiceExtension']['bulkCreate'](_0x3d972d,{'transaction':_0x516d80});});})['then'](function(){return db['VoiceExtension'][_0xc06d('0x68')]({'where':{'isApp':!![],'VoiceExtensionId':_0x57b3be[_0xc06d('0x51')]['id']},'order':'cast(priority\x20as\x20unsigned)'});});}})[_0xc06d('0x23')](respondWithResult(_0x42d2ce,null))[_0xc06d('0x4f')](handleError(_0x42d2ce,null));};