5e12427776df9ad469da5053f3fbc352167fbd92
[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 _0xf243=['%s.%s','create','basename','file','originalname','extname','filename','substring','wav','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','transcode','unlinkSync','src','original_duration','duration','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_sampleCount','chmodSync','0777','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','userProfileId','autoAssociation','start','params','description','destroy','html-pdf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','end','count','offset','set','Content-Range','apply','reject','save','update','then','get','Sounds','UserProfileResource','sendStatus','error','stack','name','send','index','map','Sound','rawAttributes','fieldName','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','type','options','findAll','show','includeAll','include','find','catch','download','save_name','converted_format','existsSync','root','Sequelize','ValidationError','join','server/files/sounds/converted','format'];(function(_0x23e7c1,_0x35110c){var _0x1add43=function(_0x238918){while(--_0x238918){_0x23e7c1['push'](_0x23e7c1['shift']());}};_0x1add43(++_0x35110c);}(_0xf243,0xa1));var _0x3f24=function(_0x42f3e4,_0x2646fd){_0x42f3e4=_0x42f3e4-0x0;var _0x1d7aa6=_0xf243[_0x42f3e4];return _0x1d7aa6;};'use strict';var pdf=require(_0x3f24('0x0'));var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x3f24('0x1'));var jsonpatch=require(_0x3f24('0x2'));var rp=require(_0x3f24('0x3'));var moment=require(_0x3f24('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x3f24('0x5'));var util=require(_0x3f24('0x6'));var path=require('path');var sox=require(_0x3f24('0x7'));var csv=require(_0x3f24('0x8'));var ejs=require(_0x3f24('0x9'));var fs=require('fs');var _=require('lodash');var squel=require(_0x3f24('0xa'));var crypto=require(_0x3f24('0xb'));var jsforce=require(_0x3f24('0xc'));var deskjs=require(_0x3f24('0xd'));var toCsv=require(_0x3f24('0x8'));var querystring=require(_0x3f24('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x3f24('0xf'));var qs=require(_0x3f24('0x10'));var as=require(_0x3f24('0x11'));var hardwareService=require(_0x3f24('0x12'));var logger=require(_0x3f24('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x3f24('0x14'));var licenseUtil=require(_0x3f24('0x15'));var db=require(_0x3f24('0x16'))['db'];function respondWithStatusCode(_0x16559b,_0xe65f7){_0xe65f7=_0xe65f7||0xcc;return function(_0x3ff9e6){if(_0x3ff9e6){return _0x16559b['sendStatus'](_0xe65f7);}return _0x16559b[_0x3f24('0x17')](_0xe65f7)[_0x3f24('0x18')]();};}function respondWithResult(_0x1d3563,_0x280bce){_0x280bce=_0x280bce||0xc8;return function(_0x3c13c2){if(_0x3c13c2){return _0x1d3563[_0x3f24('0x17')](_0x280bce)['json'](_0x3c13c2);}};}function respondWithFilteredResult(_0x3d0e86,_0x11c5c9){return function(_0xa8e093){if(_0xa8e093){var _0x13c622=_0xa8e093[_0x3f24('0x19')],_0x3eea70=_0x11c5c9['offset'],_0x3a69aa=_0x11c5c9[_0x3f24('0x1a')]+_0x11c5c9['limit'],_0x39b0eb;if(_0x3a69aa>=_0x13c622){_0x3a69aa=_0x13c622;_0x39b0eb=0xc8;}else{_0x39b0eb=0xce;}_0x3d0e86[_0x3f24('0x17')](_0x39b0eb);return _0x3d0e86[_0x3f24('0x1b')](_0x3f24('0x1c'),_0x3eea70+'-'+_0x3a69aa+'/'+_0x13c622)['json'](_0xa8e093);}return null;};}function patchUpdates(_0x2ec9d6){return function(_0x47460b){try{jsonpatch[_0x3f24('0x1d')](_0x47460b,_0x2ec9d6,!![]);}catch(_0x2091d2){return BPromise[_0x3f24('0x1e')](_0x2091d2);}return _0x47460b[_0x3f24('0x1f')]();};}function saveUpdates(_0x422fe0,_0x3d1d0c){return function(_0x24c5a0){if(_0x24c5a0){return _0x24c5a0[_0x3f24('0x20')](_0x422fe0)[_0x3f24('0x21')](function(_0xd040e){return _0xd040e;});}return null;};}function removeEntity(_0x4a77af,_0x385233){return function(_0x1691ea){if(_0x1691ea){return _0x1691ea['destroy']()[_0x3f24('0x21')](function(){var _0x17e01d=_0x1691ea[_0x3f24('0x22')]({'plain':!![]});var _0xcc24c=_0x3f24('0x23');return db[_0x3f24('0x24')]['destroy']({'where':{'type':_0xcc24c,'resourceId':_0x17e01d['id']}})[_0x3f24('0x21')](function(){return _0x1691ea;});})[_0x3f24('0x21')](function(){_0x4a77af[_0x3f24('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x450ce2,_0x1bfde4){return function(_0x2746dc){if(!_0x2746dc){_0x450ce2[_0x3f24('0x25')](0x194);}return _0x2746dc;};}function handleError(_0x1b6d6f,_0xb17661){_0xb17661=_0xb17661||0x1f4;return function(_0x5861c4){logger[_0x3f24('0x26')](_0x5861c4[_0x3f24('0x27')]);if(_0x5861c4[_0x3f24('0x28')]){delete _0x5861c4[_0x3f24('0x28')];}_0x1b6d6f[_0x3f24('0x17')](_0xb17661)[_0x3f24('0x29')](_0x5861c4);};}exports[_0x3f24('0x2a')]=function(_0x5e3589,_0x5bfa6d){var _0x4706c7={},_0x5a5406={},_0x4ab50c={'count':0x0,'rows':[]};var _0x58cd79=_[_0x3f24('0x2b')](db[_0x3f24('0x2c')][_0x3f24('0x2d')],function(_0x21f147){return{'name':_0x21f147[_0x3f24('0x2e')],'type':_0x21f147['type'][_0x3f24('0x2f')]};});_0x5a5406[_0x3f24('0x30')]=_['map'](_0x58cd79,_0x3f24('0x28'));_0x5a5406['query']=_[_0x3f24('0x31')](_0x5e3589[_0x3f24('0x32')]);_0x5a5406[_0x3f24('0x33')]=_[_0x3f24('0x34')](_0x5a5406[_0x3f24('0x30')],_0x5a5406['query']);_0x4706c7['attributes']=_['intersection'](_0x5a5406[_0x3f24('0x30')],qs[_0x3f24('0x35')](_0x5e3589[_0x3f24('0x32')][_0x3f24('0x35')]));_0x4706c7[_0x3f24('0x36')]=_0x4706c7[_0x3f24('0x36')][_0x3f24('0x37')]?_0x4706c7['attributes']:_0x5a5406[_0x3f24('0x30')];if(!_0x5e3589[_0x3f24('0x32')][_0x3f24('0x38')](_0x3f24('0x39'))){_0x4706c7['limit']=qs[_0x3f24('0x3a')](_0x5e3589['query']['limit']);_0x4706c7[_0x3f24('0x1a')]=qs[_0x3f24('0x1a')](_0x5e3589['query'][_0x3f24('0x1a')]);}_0x4706c7[_0x3f24('0x3b')]=qs[_0x3f24('0x3c')](_0x5e3589[_0x3f24('0x32')]['sort']);_0x4706c7[_0x3f24('0x3d')]=qs[_0x3f24('0x33')](_[_0x3f24('0x3e')](_0x5e3589[_0x3f24('0x32')],_0x5a5406[_0x3f24('0x33')]),_0x58cd79);if(_0x5e3589[_0x3f24('0x32')][_0x3f24('0x3f')]){_0x4706c7['where']=_[_0x3f24('0x40')](_0x4706c7[_0x3f24('0x3d')],{'$or':_['map'](_0x58cd79,function(_0x355796){if(_0x355796[_0x3f24('0x41')]!=='VIRTUAL'){var _0x1cb00e={};_0x1cb00e[_0x355796[_0x3f24('0x28')]]={'$like':'%'+_0x5e3589[_0x3f24('0x32')][_0x3f24('0x3f')]+'%'};return _0x1cb00e;}})});}_0x4706c7=_[_0x3f24('0x40')]({},_0x4706c7,_0x5e3589[_0x3f24('0x42')]);var _0x56424d={'where':_0x4706c7[_0x3f24('0x3d')]};return db['Sound'][_0x3f24('0x19')](_0x56424d)['then'](function(_0xd46d81){_0x4ab50c['count']=_0xd46d81;if(_0x5e3589[_0x3f24('0x32')]['includeAll']){_0x4706c7['include']=[{'all':!![]}];}return db[_0x3f24('0x2c')][_0x3f24('0x43')](_0x4706c7);})[_0x3f24('0x21')](function(_0x1ee349){_0x4ab50c['rows']=_0x1ee349;return _0x4ab50c;})[_0x3f24('0x21')](respondWithFilteredResult(_0x5bfa6d,_0x4706c7))['catch'](handleError(_0x5bfa6d,null));};exports[_0x3f24('0x44')]=function(_0xfee61f,_0x3660e7){var _0x167979={'raw':!![],'where':{'id':_0xfee61f['params']['id']}},_0x5970a7={};_0x5970a7[_0x3f24('0x30')]=_[_0x3f24('0x31')](db[_0x3f24('0x2c')][_0x3f24('0x2d')]);_0x5970a7['query']=_[_0x3f24('0x31')](_0xfee61f['query']);_0x5970a7[_0x3f24('0x33')]=_[_0x3f24('0x34')](_0x5970a7[_0x3f24('0x30')],_0x5970a7[_0x3f24('0x32')]);_0x167979[_0x3f24('0x36')]=_['intersection'](_0x5970a7['model'],qs[_0x3f24('0x35')](_0xfee61f[_0x3f24('0x32')][_0x3f24('0x35')]));_0x167979[_0x3f24('0x36')]=_0x167979[_0x3f24('0x36')][_0x3f24('0x37')]?_0x167979['attributes']:_0x5970a7[_0x3f24('0x30')];if(_0xfee61f[_0x3f24('0x32')][_0x3f24('0x45')]){_0x167979[_0x3f24('0x46')]=[{'all':!![]}];}_0x167979=_[_0x3f24('0x40')]({},_0x167979,_0xfee61f['options']);return db[_0x3f24('0x2c')][_0x3f24('0x47')](_0x167979)[_0x3f24('0x21')](handleEntityNotFound(_0x3660e7,null))[_0x3f24('0x21')](respondWithResult(_0x3660e7,null))[_0x3f24('0x48')](handleError(_0x3660e7,null));};exports[_0x3f24('0x49')]=function(_0x310e66,_0x44ffa8,_0x38fd0c){return db[_0x3f24('0x2c')]['find']({'where':{'id':_0x310e66['params']['id']},'attributes':[_0x3f24('0x28'),_0x3f24('0x4a'),_0x3f24('0x4b')],'raw':!![]})['then'](handleEntityNotFound(_0x44ffa8,null))[_0x3f24('0x21')](function(_0x354b0a){if(_0x354b0a){if(!fs[_0x3f24('0x4c')](path['join'](config[_0x3f24('0x4d')],'server/files/sounds/converted',_0x354b0a['save_name']+'.'+_0x354b0a[_0x3f24('0x4b')]))){throw new db[(_0x3f24('0x4e'))][(_0x3f24('0x4f'))]('Sound\x20not\x20found');}return _0x44ffa8[_0x3f24('0x49')](path[_0x3f24('0x50')](config[_0x3f24('0x4d')],_0x3f24('0x51'),util[_0x3f24('0x52')](_0x3f24('0x53'),_0x354b0a[_0x3f24('0x4a')],_0x354b0a[_0x3f24('0x4b')])),util[_0x3f24('0x52')]('%s.%s',_0x354b0a[_0x3f24('0x28')],_0x354b0a['converted_format']));}return null;})[_0x3f24('0x48')](handleError(_0x44ffa8,null));};exports[_0x3f24('0x54')]=function(_0x565f64,_0x478d8b,_0xbcc619){var _0x4047c1={'name':path[_0x3f24('0x55')](_0x565f64[_0x3f24('0x56')][_0x3f24('0x57')],path[_0x3f24('0x58')](_0x565f64[_0x3f24('0x56')][_0x3f24('0x57')])),'save_name':path[_0x3f24('0x55')](_0x565f64[_0x3f24('0x56')]['filename'],path[_0x3f24('0x58')](_0x565f64['file'][_0x3f24('0x59')])),'original_format':path[_0x3f24('0x58')](_0x565f64['file']['originalname'])[_0x3f24('0x5a')](0x1),'converted_format':_0x3f24('0x5b')};var _0x1c9dea=path[_0x3f24('0x50')](config['root'],_0x3f24('0x5c'),_0x565f64[_0x3f24('0x56')][_0x3f24('0x59')]);var _0x4aa182=path[_0x3f24('0x50')](config[_0x3f24('0x4d')],_0x3f24('0x51'),util[_0x3f24('0x52')](_0x3f24('0x53'),path[_0x3f24('0x55')](_0x565f64[_0x3f24('0x56')][_0x3f24('0x59')],path[_0x3f24('0x58')](_0x565f64[_0x3f24('0x56')]['filename'])),_0x4047c1[_0x3f24('0x4b')]));logger[_0x3f24('0x5d')](_0x3f24('0x5e'),_0x1c9dea);logger[_0x3f24('0x5d')](_0x3f24('0x5f'),_0x4aa182);try{fs['chmodSync'](_0x1c9dea,parseInt('0777',0x8));var _0x1e4434=sox[_0x3f24('0x60')](_0x1c9dea,_0x4aa182,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x1e4434['on'](_0x3f24('0x26'),function(_0x58f75c){fs[_0x3f24('0x61')](_0x1c9dea);_0x478d8b['status'](0x1f4)[_0x3f24('0x29')](_0x58f75c);});_0x1e4434['on'](_0x3f24('0x62'),function(_0x4168eb){_0x4047c1[_0x3f24('0x63')]=isNaN(_0x4168eb['duration'])?null:_0x4168eb[_0x3f24('0x64')]*0x3e8;_0x4047c1['original_sampleCount']=isNaN(_0x4168eb[_0x3f24('0x65')])?null:_0x4168eb[_0x3f24('0x65')];_0x4047c1[_0x3f24('0x66')]=isNaN(_0x4168eb[_0x3f24('0x67')])?null:_0x4168eb[_0x3f24('0x67')];_0x4047c1[_0x3f24('0x68')]=isNaN(_0x4168eb['bitRate'])?null:_0x4168eb[_0x3f24('0x69')];_0x4047c1[_0x3f24('0x6a')]=isNaN(_0x4168eb[_0x3f24('0x6b')])?null:_0x4168eb['sampleRate'];});_0x1e4434['on'](_0x3f24('0x6c'),function(_0x2d8c10){_0x4047c1[_0x3f24('0x6d')]=isNaN(_0x2d8c10[_0x3f24('0x64')])?null:_0x2d8c10['duration']*0x3e8;_0x4047c1[_0x3f24('0x6e')]=isNaN(_0x2d8c10['sampleCount'])?null:_0x2d8c10[_0x3f24('0x65')];_0x4047c1['converted_channelCount']=isNaN(_0x2d8c10[_0x3f24('0x67')])?null:_0x2d8c10[_0x3f24('0x67')];_0x4047c1['converted_bitRate']=isNaN(_0x2d8c10['bitRate'])?null:_0x2d8c10[_0x3f24('0x69')];_0x4047c1['converted_sampleRate']=isNaN(_0x2d8c10[_0x3f24('0x6b')])?null:_0x2d8c10[_0x3f24('0x6b')];});_0x1e4434['on'](_0x3f24('0x18'),function(){fs[_0x3f24('0x6f')](_0x4aa182,parseInt(_0x3f24('0x70'),0x8));return db[_0x3f24('0x2c')]['create'](_0x4047c1)['then'](function(_0x1b1f28){var _0x58f541={'role':_0x565f64[_0x3f24('0x71')]['role'],'userProfileId':_0x565f64[_0x3f24('0x71')]['userProfileId']};if(!_0x58f541)throw new Error(_0x3f24('0x72'));if(_0x58f541['role']===_0x3f24('0x73')){var _0x497439=_0x1b1f28['get']({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':'Sounds','userProfileId':_0x58f541[_0x3f24('0x74')]},'raw':!![]})[_0x3f24('0x21')](function(_0x405bdf){if(_0x405bdf&&_0x405bdf[_0x3f24('0x75')]===0x0){return db[_0x3f24('0x24')][_0x3f24('0x54')]({'name':_0x497439['name'],'resourceId':_0x497439['id'],'type':_0x405bdf[_0x3f24('0x28')],'sectionId':_0x405bdf['id']},{})['then'](function(){return _0x1b1f28;});}else{return _0x1b1f28;}})[_0x3f24('0x48')](function(_0x51fbd5){logger[_0x3f24('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x51fbd5);throw _0x51fbd5;});}return _0x1b1f28;})['then'](respondWithResult(_0x478d8b,null))['catch'](handleError(_0x478d8b,null));});_0x1e4434[_0x3f24('0x76')]();}catch(_0x1f884b){_0x478d8b[_0x3f24('0x17')](0x1f4)[_0x3f24('0x29')](_0x1f884b);}};exports['update']=function(_0x425f70,_0x15567b,_0x4d360c){return db['Sound'][_0x3f24('0x47')]({'where':{'id':_0x425f70[_0x3f24('0x77')]['id']}})[_0x3f24('0x21')](handleEntityNotFound(_0x15567b,null))[_0x3f24('0x21')](saveUpdates(_[_0x3f24('0x3e')](_0x425f70[_0x3f24('0x71')],[_0x3f24('0x28'),_0x3f24('0x78')]),null))['then'](respondWithResult(_0x15567b,null))[_0x3f24('0x48')](handleError(_0x15567b,null));};exports['delete']=function(_0x158037,_0x3534aa,_0x271794){return db[_0x3f24('0x2c')]['find']({'where':{'id':_0x158037[_0x3f24('0x77')]['id']}})[_0x3f24('0x21')](function(_0x39b681){if(_0x39b681){return _0x39b681[_0x3f24('0x79')]();}})[_0x3f24('0x21')](function(_0x1c470f){var _0x15f6d2=path[_0x3f24('0x50')](config[_0x3f24('0x4d')],'server/files/sounds/original',util[_0x3f24('0x52')](_0x3f24('0x53'),_0x1c470f['save_name'],_0x1c470f['original_format']));var _0xc231bb=path[_0x3f24('0x50')](config[_0x3f24('0x4d')],_0x3f24('0x51'),util[_0x3f24('0x52')](_0x3f24('0x53'),_0x1c470f[_0x3f24('0x4a')],_0x1c470f[_0x3f24('0x4b')]));fs[_0x3f24('0x61')](_0x15f6d2);fs[_0x3f24('0x61')](_0xc231bb);return _0x1c470f;})[_0x3f24('0x21')](function(_0x5afe10){if(_0x5afe10){return _0x3534aa[_0x3f24('0x17')](0xcc)[_0x3f24('0x18')]();}})[_0x3f24('0x21')](handleEntityNotFound(_0x3534aa,null))[_0x3f24('0x48')](handleError(_0x3534aa,null));};