Built motion from commit d5e4af8c.|2.6.23
[motion2.git] / server / api / sound / sound.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 _0x7cf8=['end','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','destroy','get','then','error','stack','name','send','index','map','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','Sound','findAll','rows','catch','show','params','keys','includeAll','include','download','save_name','converted_format','join','server/files/sounds/converted','Sequelize','root','format','%s.%s','create','basename','file','originalname','extname','filename','substring','wav','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','chmodSync','0777','transcode','unlinkSync','src','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','converted_sampleCount','converted_bitRate','converted_sampleRate','sampleRate','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','Sounds','autoAssociation','UserProfileResource','start','update','description','delete','original_format','rimraf','mustache','util','path','sox','fs-extra','lodash','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus'];(function(_0x3c0c1,_0x1f6c00){var _0x2f9d3c=function(_0x4a8f8b){while(--_0x4a8f8b){_0x3c0c1['push'](_0x3c0c1['shift']());}};_0x2f9d3c(++_0x1f6c00);}(_0x7cf8,0xde));var _0x87cf=function(_0x46a8d2,_0x5c151c){_0x46a8d2=_0x46a8d2-0x0;var _0x5447ac=_0x7cf8[_0x46a8d2];return _0x5447ac;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x87cf('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x87cf('0x1'));var util=require(_0x87cf('0x2'));var path=require(_0x87cf('0x3'));var sox=require(_0x87cf('0x4'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x87cf('0x5'));var _=require(_0x87cf('0x6'));var squel=require('squel');var crypto=require(_0x87cf('0x7'));var jsforce=require('jsforce');var deskjs=require(_0x87cf('0x8'));var toCsv=require(_0x87cf('0x9'));var querystring=require(_0x87cf('0xa'));var Papa=require(_0x87cf('0xb'));var Redis=require(_0x87cf('0xc'));var authService=require('../../components/auth/service');var qs=require(_0x87cf('0xd'));var as=require(_0x87cf('0xe'));var hardwareService=require(_0x87cf('0xf'));var logger=require(_0x87cf('0x10'))(_0x87cf('0x11'));var utils=require(_0x87cf('0x12'));var config=require(_0x87cf('0x13'));var licenseUtil=require(_0x87cf('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3e3b72,_0xd60be6){_0xd60be6=_0xd60be6||0xcc;return function(_0x195d95){if(_0x195d95){return _0x3e3b72[_0x87cf('0x15')](_0xd60be6);}return _0x3e3b72['status'](_0xd60be6)[_0x87cf('0x16')]();};}function respondWithResult(_0x544a95,_0x39815d){_0x39815d=_0x39815d||0xc8;return function(_0x8c69c5){if(_0x8c69c5){return _0x544a95[_0x87cf('0x17')](_0x39815d)[_0x87cf('0x18')](_0x8c69c5);}};}function respondWithFilteredResult(_0x4f639b,_0x2fe6a3){return function(_0x1a960e){if(_0x1a960e){var _0x226831=typeof _0x2fe6a3[_0x87cf('0x19')]===_0x87cf('0x1a')&&typeof _0x2fe6a3[_0x87cf('0x1b')]==='undefined';var _0x31e7ef=_0x1a960e[_0x87cf('0x1c')];var _0x172267=_0x226831?0x0:_0x2fe6a3['offset'];var _0x440f1f=_0x226831?_0x1a960e[_0x87cf('0x1c')]:_0x2fe6a3[_0x87cf('0x19')]+_0x2fe6a3['limit'];var _0x12c09a;if(_0x440f1f>=_0x31e7ef){_0x440f1f=_0x31e7ef;_0x12c09a=0xc8;}else{_0x12c09a=0xce;}_0x4f639b[_0x87cf('0x17')](_0x12c09a);return _0x4f639b[_0x87cf('0x1d')](_0x87cf('0x1e'),_0x172267+'-'+_0x440f1f+'/'+_0x31e7ef)[_0x87cf('0x18')](_0x1a960e);}return null;};}function patchUpdates(_0xc324c6){return function(_0x8fecff){try{jsonpatch['apply'](_0x8fecff,_0xc324c6,!![]);}catch(_0x523390){return BPromise[_0x87cf('0x1f')](_0x523390);}return _0x8fecff[_0x87cf('0x20')]();};}function saveUpdates(_0x2ab371,_0x54d44d){return function(_0x4836f5){if(_0x4836f5){return _0x4836f5['update'](_0x2ab371)['then'](function(_0x4aeab4){return _0x4aeab4;});}return null;};}function removeEntity(_0x1d9cf3,_0x120600){return function(_0x1aa290){if(_0x1aa290){return _0x1aa290[_0x87cf('0x21')]()['then'](function(){var _0x14f2f9=_0x1aa290[_0x87cf('0x22')]({'plain':!![]});var _0x41f4f5='Sounds';return db['UserProfileResource']['destroy']({'where':{'type':_0x41f4f5,'resourceId':_0x14f2f9['id']}})[_0x87cf('0x23')](function(){return _0x1aa290;});})['then'](function(){_0x1d9cf3[_0x87cf('0x17')](0xcc)[_0x87cf('0x16')]();});}};}function handleEntityNotFound(_0x109069,_0x225023){return function(_0x10aec2){if(!_0x10aec2){_0x109069[_0x87cf('0x15')](0x194);}return _0x10aec2;};}function handleError(_0x570190,_0x5e5147){_0x5e5147=_0x5e5147||0x1f4;return function(_0x1a75eb){logger[_0x87cf('0x24')](_0x1a75eb[_0x87cf('0x25')]);if(_0x1a75eb[_0x87cf('0x26')]){delete _0x1a75eb['name'];}_0x570190[_0x87cf('0x17')](_0x5e5147)[_0x87cf('0x27')](_0x1a75eb);};}exports[_0x87cf('0x28')]=function(_0x37fa5a,_0x37bbf6){var _0x38abdc={},_0x34dfd5={},_0x3de636={'count':0x0,'rows':[]};var _0x180620=_[_0x87cf('0x29')](db['Sound'][_0x87cf('0x2a')],function(_0x1c2bf7){return{'name':_0x1c2bf7['fieldName'],'type':_0x1c2bf7[_0x87cf('0x2b')][_0x87cf('0x2c')]};});_0x34dfd5[_0x87cf('0x2d')]=_[_0x87cf('0x29')](_0x180620,_0x87cf('0x26'));_0x34dfd5[_0x87cf('0x2e')]=_['keys'](_0x37fa5a['query']);_0x34dfd5[_0x87cf('0x2f')]=_[_0x87cf('0x30')](_0x34dfd5[_0x87cf('0x2d')],_0x34dfd5[_0x87cf('0x2e')]);_0x38abdc[_0x87cf('0x31')]=_['intersection'](_0x34dfd5[_0x87cf('0x2d')],qs[_0x87cf('0x32')](_0x37fa5a[_0x87cf('0x2e')]['fields']));_0x38abdc[_0x87cf('0x31')]=_0x38abdc[_0x87cf('0x31')][_0x87cf('0x33')]?_0x38abdc[_0x87cf('0x31')]:_0x34dfd5[_0x87cf('0x2d')];if(!_0x37fa5a[_0x87cf('0x2e')][_0x87cf('0x34')](_0x87cf('0x35'))){_0x38abdc['limit']=qs[_0x87cf('0x1b')](_0x37fa5a['query'][_0x87cf('0x1b')]);_0x38abdc[_0x87cf('0x19')]=qs[_0x87cf('0x19')](_0x37fa5a[_0x87cf('0x2e')][_0x87cf('0x19')]);}_0x38abdc[_0x87cf('0x36')]=qs[_0x87cf('0x37')](_0x37fa5a['query'][_0x87cf('0x37')]);_0x38abdc[_0x87cf('0x38')]=qs[_0x87cf('0x2f')](_[_0x87cf('0x39')](_0x37fa5a['query'],_0x34dfd5['filters']),_0x180620);if(_0x37fa5a[_0x87cf('0x2e')]['filter']){_0x38abdc[_0x87cf('0x38')]=_[_0x87cf('0x3a')](_0x38abdc['where'],{'$or':_['map'](_0x180620,function(_0x3a5e33){if(_0x3a5e33[_0x87cf('0x2b')]!==_0x87cf('0x3b')){var _0x17b263={};_0x17b263[_0x3a5e33[_0x87cf('0x26')]]={'$like':'%'+_0x37fa5a[_0x87cf('0x2e')]['filter']+'%'};return _0x17b263;}})});}_0x38abdc=_[_0x87cf('0x3a')]({},_0x38abdc,_0x37fa5a[_0x87cf('0x3c')]);var _0x145ec9={'where':_0x38abdc['where']};return db['Sound'][_0x87cf('0x1c')](_0x145ec9)['then'](function(_0x3ed71f){_0x3de636['count']=_0x3ed71f;if(_0x37fa5a[_0x87cf('0x2e')]['includeAll']){_0x38abdc['include']=[{'all':!![]}];}return db[_0x87cf('0x3d')][_0x87cf('0x3e')](_0x38abdc);})[_0x87cf('0x23')](function(_0x3d2c7c){_0x3de636[_0x87cf('0x3f')]=_0x3d2c7c;return _0x3de636;})['then'](respondWithFilteredResult(_0x37bbf6,_0x38abdc))[_0x87cf('0x40')](handleError(_0x37bbf6,null));};exports[_0x87cf('0x41')]=function(_0x3ba239,_0x14aabd){var _0x124c34={'raw':!![],'where':{'id':_0x3ba239[_0x87cf('0x42')]['id']}},_0x48cff9={};_0x48cff9[_0x87cf('0x2d')]=_[_0x87cf('0x43')](db[_0x87cf('0x3d')][_0x87cf('0x2a')]);_0x48cff9[_0x87cf('0x2e')]=_[_0x87cf('0x43')](_0x3ba239[_0x87cf('0x2e')]);_0x48cff9[_0x87cf('0x2f')]=_[_0x87cf('0x30')](_0x48cff9[_0x87cf('0x2d')],_0x48cff9[_0x87cf('0x2e')]);_0x124c34[_0x87cf('0x31')]=_[_0x87cf('0x30')](_0x48cff9[_0x87cf('0x2d')],qs[_0x87cf('0x32')](_0x3ba239[_0x87cf('0x2e')][_0x87cf('0x32')]));_0x124c34['attributes']=_0x124c34[_0x87cf('0x31')][_0x87cf('0x33')]?_0x124c34[_0x87cf('0x31')]:_0x48cff9['model'];if(_0x3ba239['query'][_0x87cf('0x44')]){_0x124c34[_0x87cf('0x45')]=[{'all':!![]}];}_0x124c34=_[_0x87cf('0x3a')]({},_0x124c34,_0x3ba239[_0x87cf('0x3c')]);return db['Sound']['find'](_0x124c34)[_0x87cf('0x23')](handleEntityNotFound(_0x14aabd,null))[_0x87cf('0x23')](respondWithResult(_0x14aabd,null))['catch'](handleError(_0x14aabd,null));};exports[_0x87cf('0x46')]=function(_0x2977cb,_0x29f48b,_0x21407b){return db[_0x87cf('0x3d')]['find']({'where':{'id':_0x2977cb[_0x87cf('0x42')]['id']},'attributes':[_0x87cf('0x26'),_0x87cf('0x47'),_0x87cf('0x48')],'raw':!![]})[_0x87cf('0x23')](handleEntityNotFound(_0x29f48b,null))[_0x87cf('0x23')](function(_0x4f5f32){if(_0x4f5f32){if(!fs['existsSync'](path[_0x87cf('0x49')](config['root'],_0x87cf('0x4a'),_0x4f5f32[_0x87cf('0x47')]+'.'+_0x4f5f32[_0x87cf('0x48')]))){throw new db[(_0x87cf('0x4b'))]['ValidationError']('Sound\x20not\x20found');}return _0x29f48b[_0x87cf('0x46')](path[_0x87cf('0x49')](config[_0x87cf('0x4c')],_0x87cf('0x4a'),util[_0x87cf('0x4d')](_0x87cf('0x4e'),_0x4f5f32[_0x87cf('0x47')],_0x4f5f32['converted_format'])),util[_0x87cf('0x4d')](_0x87cf('0x4e'),_0x4f5f32[_0x87cf('0x26')],_0x4f5f32[_0x87cf('0x48')]));}return null;})['catch'](handleError(_0x29f48b,null));};exports[_0x87cf('0x4f')]=function(_0x1f0a94,_0x56c802,_0x5adb9e){var _0x207122={'name':path[_0x87cf('0x50')](_0x1f0a94[_0x87cf('0x51')][_0x87cf('0x52')],path[_0x87cf('0x53')](_0x1f0a94['file'][_0x87cf('0x52')])),'save_name':path[_0x87cf('0x50')](_0x1f0a94[_0x87cf('0x51')][_0x87cf('0x54')],path[_0x87cf('0x53')](_0x1f0a94['file'][_0x87cf('0x54')])),'original_format':path[_0x87cf('0x53')](_0x1f0a94[_0x87cf('0x51')][_0x87cf('0x52')])[_0x87cf('0x55')](0x1),'converted_format':_0x87cf('0x56')};var _0xd738f9=path[_0x87cf('0x49')](config[_0x87cf('0x4c')],_0x87cf('0x57'),_0x1f0a94[_0x87cf('0x51')]['filename']);var _0x4a5aac=path[_0x87cf('0x49')](config[_0x87cf('0x4c')],'server/files/sounds/converted',util[_0x87cf('0x4d')](_0x87cf('0x4e'),path['basename'](_0x1f0a94[_0x87cf('0x51')][_0x87cf('0x54')],path[_0x87cf('0x53')](_0x1f0a94[_0x87cf('0x51')][_0x87cf('0x54')])),_0x207122[_0x87cf('0x48')]));logger[_0x87cf('0x58')](_0x87cf('0x59'),_0xd738f9);logger[_0x87cf('0x58')]('Sound\x20upload\x20destination:\x20%s',_0x4a5aac);try{fs[_0x87cf('0x5a')](_0xd738f9,parseInt(_0x87cf('0x5b'),0x8));var _0xdb0842=sox[_0x87cf('0x5c')](_0xd738f9,_0x4a5aac,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0xdb0842['on'](_0x87cf('0x24'),function(_0x5ae01e){fs[_0x87cf('0x5d')](_0xd738f9);_0x56c802[_0x87cf('0x17')](0x1f4)[_0x87cf('0x27')](_0x5ae01e);});_0xdb0842['on'](_0x87cf('0x5e'),function(_0x355f1c){_0x207122[_0x87cf('0x5f')]=isNaN(_0x355f1c[_0x87cf('0x60')])?null:_0x355f1c[_0x87cf('0x60')]*0x3e8;_0x207122[_0x87cf('0x61')]=isNaN(_0x355f1c['sampleCount'])?null:_0x355f1c[_0x87cf('0x62')];_0x207122[_0x87cf('0x63')]=isNaN(_0x355f1c['channelCount'])?null:_0x355f1c[_0x87cf('0x64')];_0x207122[_0x87cf('0x65')]=isNaN(_0x355f1c[_0x87cf('0x66')])?null:_0x355f1c[_0x87cf('0x66')];_0x207122[_0x87cf('0x67')]=isNaN(_0x355f1c['sampleRate'])?null:_0x355f1c['sampleRate'];});_0xdb0842['on']('dest',function(_0x4e7756){_0x207122['converted_duration']=isNaN(_0x4e7756[_0x87cf('0x60')])?null:_0x4e7756[_0x87cf('0x60')]*0x3e8;_0x207122[_0x87cf('0x68')]=isNaN(_0x4e7756[_0x87cf('0x62')])?null:_0x4e7756[_0x87cf('0x62')];_0x207122['converted_channelCount']=isNaN(_0x4e7756[_0x87cf('0x64')])?null:_0x4e7756[_0x87cf('0x64')];_0x207122[_0x87cf('0x69')]=isNaN(_0x4e7756[_0x87cf('0x66')])?null:_0x4e7756[_0x87cf('0x66')];_0x207122[_0x87cf('0x6a')]=isNaN(_0x4e7756[_0x87cf('0x6b')])?null:_0x4e7756[_0x87cf('0x6b')];});_0xdb0842['on'](_0x87cf('0x16'),function(){fs['chmodSync'](_0x4a5aac,parseInt('0777',0x8));return db[_0x87cf('0x3d')][_0x87cf('0x4f')](_0x207122)[_0x87cf('0x23')](function(_0x4d1062){var _0x54614f={'role':_0x1f0a94[_0x87cf('0x6c')][_0x87cf('0x6d')],'userProfileId':_0x1f0a94[_0x87cf('0x6c')][_0x87cf('0x6e')]};if(!_0x54614f)throw new Error(_0x87cf('0x6f'));if(_0x54614f[_0x87cf('0x6d')]==='user'){var _0x3690f2=_0x4d1062[_0x87cf('0x22')]({'plain':!![]});return db[_0x87cf('0x70')][_0x87cf('0x71')]({'where':{'name':_0x87cf('0x72'),'userProfileId':_0x54614f[_0x87cf('0x6e')]},'raw':!![]})[_0x87cf('0x23')](function(_0x44f28e){if(_0x44f28e&&_0x44f28e[_0x87cf('0x73')]===0x0){return db[_0x87cf('0x74')][_0x87cf('0x4f')]({'name':_0x3690f2[_0x87cf('0x26')],'resourceId':_0x3690f2['id'],'type':_0x44f28e[_0x87cf('0x26')],'sectionId':_0x44f28e['id']},{})[_0x87cf('0x23')](function(){return _0x4d1062;});}else{return _0x4d1062;}})[_0x87cf('0x40')](function(_0x248d61){logger[_0x87cf('0x24')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x248d61);throw _0x248d61;});}return _0x4d1062;})['then'](respondWithResult(_0x56c802,null))[_0x87cf('0x40')](handleError(_0x56c802,null));});_0xdb0842[_0x87cf('0x75')]();}catch(_0xb858c2){_0x56c802[_0x87cf('0x17')](0x1f4)[_0x87cf('0x27')](_0xb858c2);}};exports[_0x87cf('0x76')]=function(_0x15d15d,_0x598c1c,_0x1af3ff){return db[_0x87cf('0x3d')][_0x87cf('0x71')]({'where':{'id':_0x15d15d[_0x87cf('0x42')]['id']}})[_0x87cf('0x23')](handleEntityNotFound(_0x598c1c,null))['then'](saveUpdates(_[_0x87cf('0x39')](_0x15d15d[_0x87cf('0x6c')],[_0x87cf('0x26'),_0x87cf('0x77')]),null))[_0x87cf('0x23')](respondWithResult(_0x598c1c,null))[_0x87cf('0x40')](handleError(_0x598c1c,null));};exports[_0x87cf('0x78')]=function(_0x5119f7,_0x4dbd4b,_0x4e6d19){return db[_0x87cf('0x3d')]['find']({'where':{'id':_0x5119f7[_0x87cf('0x42')]['id']}})[_0x87cf('0x23')](function(_0x1a3d64){if(_0x1a3d64){return _0x1a3d64[_0x87cf('0x21')]();}})[_0x87cf('0x23')](function(_0x323041){var _0x287655=path[_0x87cf('0x49')](config[_0x87cf('0x4c')],'server/files/sounds/original',util[_0x87cf('0x4d')]('%s.%s',_0x323041['save_name'],_0x323041[_0x87cf('0x79')]));var _0x4b7ef7=path[_0x87cf('0x49')](config[_0x87cf('0x4c')],_0x87cf('0x4a'),util[_0x87cf('0x4d')]('%s.%s',_0x323041['save_name'],_0x323041[_0x87cf('0x48')]));fs['unlinkSync'](_0x287655);fs[_0x87cf('0x5d')](_0x4b7ef7);return _0x323041;})[_0x87cf('0x23')](function(_0x5a61c4){if(_0x5a61c4){return _0x4dbd4b[_0x87cf('0x17')](0xcc)[_0x87cf('0x16')]();}})[_0x87cf('0x23')](handleEntityNotFound(_0x4dbd4b,null))['catch'](handleError(_0x4dbd4b,null));};