a8986fc47982e43ce689bf2cd9abf5827e9d080e
[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 _0x436e=['format','%s.%s','create','file','extname','originalname','filename','substring','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','0777','transcode','wav','unlinkSync','original_duration','duration','original_sampleCount','sampleCount','channelCount','original_bitRate','bitRate','original_sampleRate','dest','converted_duration','converted_sampleCount','converted_bitRate','converted_sampleRate','sampleRate','chmodSync','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','Sounds','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','pick','description','original_format','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','get','UserProfileResource','destroy','then','error','stack','name','send','index','Sound','rawAttributes','key','query','keys','filters','attributes','intersection','model','fields','length','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','find','params','save_name','root','server/files/sounds/converted','converted_format','Sequelize','ValidationError','Sound\x20not\x20found','download','join'];(function(_0x100f69,_0x5edd64){var _0x4a7fac=function(_0x53e10b){while(--_0x53e10b){_0x100f69['push'](_0x100f69['shift']());}};_0x4a7fac(++_0x5edd64);}(_0x436e,0xa7));var _0xe436=function(_0x1b0749,_0x1fed72){_0x1b0749=_0x1b0749-0x0;var _0x4167f2=_0x436e[_0x1b0749];return _0x4167f2;};'use strict';var emlformat=require(_0xe436('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe436('0x1'));var jsonpatch=require(_0xe436('0x2'));var rp=require(_0xe436('0x3'));var moment=require(_0xe436('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xe436('0x5'));var util=require('util');var path=require(_0xe436('0x6'));var sox=require(_0xe436('0x7'));var csv=require(_0xe436('0x8'));var ejs=require(_0xe436('0x9'));var fs=require('fs');var fs_extra=require(_0xe436('0xa'));var _=require(_0xe436('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xe436('0xc'));var toCsv=require(_0xe436('0x8'));var querystring=require(_0xe436('0xd'));var Papa=require(_0xe436('0xe'));var Redis=require('ioredis');var authService=require(_0xe436('0xf'));var qs=require(_0xe436('0x10'));var as=require(_0xe436('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe436('0x12'))('api');var utils=require('../../config/utils');var config=require(_0xe436('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xe436('0x14'))['db'];function respondWithStatusCode(_0x56733d,_0xd54f0b){_0xd54f0b=_0xd54f0b||0xcc;return function(_0x42d80c){if(_0x42d80c){return _0x56733d[_0xe436('0x15')](_0xd54f0b);}return _0x56733d['status'](_0xd54f0b)[_0xe436('0x16')]();};}function respondWithResult(_0x589eca,_0x11470b){_0x11470b=_0x11470b||0xc8;return function(_0x22d10b){if(_0x22d10b){return _0x589eca[_0xe436('0x17')](_0x11470b)[_0xe436('0x18')](_0x22d10b);}};}function respondWithFilteredResult(_0x321a84,_0x158f91){return function(_0x4fb75d){if(_0x4fb75d){var _0x31a211=typeof _0x158f91[_0xe436('0x19')]===_0xe436('0x1a')&&typeof _0x158f91['limit']==='undefined';var _0x558a7b=_0x4fb75d[_0xe436('0x1b')];var _0x43d26e=_0x31a211?0x0:_0x158f91[_0xe436('0x19')];var _0x452e5a=_0x31a211?_0x4fb75d[_0xe436('0x1b')]:_0x158f91[_0xe436('0x19')]+_0x158f91[_0xe436('0x1c')];var _0x38c15d;if(_0x452e5a>=_0x558a7b){_0x452e5a=_0x558a7b;_0x38c15d=0xc8;}else{_0x38c15d=0xce;}_0x321a84[_0xe436('0x17')](_0x38c15d);return _0x321a84[_0xe436('0x1d')](_0xe436('0x1e'),_0x43d26e+'-'+_0x452e5a+'/'+_0x558a7b)[_0xe436('0x18')](_0x4fb75d);}return null;};}function patchUpdates(_0x559cce){return function(_0x4f85a1){try{jsonpatch[_0xe436('0x1f')](_0x4f85a1,_0x559cce,!![]);}catch(_0x44bd3c){return BPromise['reject'](_0x44bd3c);}return _0x4f85a1[_0xe436('0x20')]();};}function saveUpdates(_0x2888a9,_0x546896){return function(_0xae862d){if(_0xae862d){return _0xae862d[_0xe436('0x21')](_0x2888a9)['then'](function(_0x2b108){return _0x2b108;});}return null;};}function removeEntity(_0x38bdd3,_0xd2b701){return function(_0x39bf49){if(_0x39bf49){return _0x39bf49['destroy']()['then'](function(){var _0x29cac9=_0x39bf49[_0xe436('0x22')]({'plain':!![]});var _0x5e228a='Sounds';return db[_0xe436('0x23')][_0xe436('0x24')]({'where':{'type':_0x5e228a,'resourceId':_0x29cac9['id']}})[_0xe436('0x25')](function(){return _0x39bf49;});})[_0xe436('0x25')](function(){_0x38bdd3[_0xe436('0x17')](0xcc)[_0xe436('0x16')]();});}};}function handleEntityNotFound(_0x40dedd,_0x3557e5){return function(_0x47006e){if(!_0x47006e){_0x40dedd['sendStatus'](0x194);}return _0x47006e;};}function handleError(_0x137d2a,_0x10d5f2){_0x10d5f2=_0x10d5f2||0x1f4;return function(_0x25f89e){logger[_0xe436('0x26')](_0x25f89e[_0xe436('0x27')]);if(_0x25f89e['name']){delete _0x25f89e[_0xe436('0x28')];}_0x137d2a[_0xe436('0x17')](_0x10d5f2)[_0xe436('0x29')](_0x25f89e);};}exports[_0xe436('0x2a')]=function(_0x421d97,_0x980081){var _0x22554e={},_0x2157af={},_0x4698fa={'count':0x0,'rows':[]};var _0x5f149b=_['map'](db[_0xe436('0x2b')][_0xe436('0x2c')],function(_0x42cc57){return{'name':_0x42cc57['fieldName'],'type':_0x42cc57['type'][_0xe436('0x2d')]};});_0x2157af['model']=_['map'](_0x5f149b,_0xe436('0x28'));_0x2157af[_0xe436('0x2e')]=_[_0xe436('0x2f')](_0x421d97[_0xe436('0x2e')]);_0x2157af[_0xe436('0x30')]=_['intersection'](_0x2157af['model'],_0x2157af[_0xe436('0x2e')]);_0x22554e[_0xe436('0x31')]=_[_0xe436('0x32')](_0x2157af[_0xe436('0x33')],qs[_0xe436('0x34')](_0x421d97[_0xe436('0x2e')][_0xe436('0x34')]));_0x22554e[_0xe436('0x31')]=_0x22554e['attributes'][_0xe436('0x35')]?_0x22554e['attributes']:_0x2157af[_0xe436('0x33')];if(!_0x421d97[_0xe436('0x2e')][_0xe436('0x36')]('nolimit')){_0x22554e['limit']=qs[_0xe436('0x1c')](_0x421d97[_0xe436('0x2e')]['limit']);_0x22554e['offset']=qs[_0xe436('0x19')](_0x421d97[_0xe436('0x2e')][_0xe436('0x19')]);}_0x22554e[_0xe436('0x37')]=qs[_0xe436('0x38')](_0x421d97[_0xe436('0x2e')][_0xe436('0x38')]);_0x22554e[_0xe436('0x39')]=qs[_0xe436('0x30')](_['pick'](_0x421d97[_0xe436('0x2e')],_0x2157af[_0xe436('0x30')]),_0x5f149b);if(_0x421d97[_0xe436('0x2e')]['filter']){_0x22554e['where']=_[_0xe436('0x3a')](_0x22554e['where'],{'$or':_['map'](_0x5f149b,function(_0x216fcc){if(_0x216fcc['type']!==_0xe436('0x3b')){var _0x2dc591={};_0x2dc591[_0x216fcc[_0xe436('0x28')]]={'$like':'%'+_0x421d97['query'][_0xe436('0x3c')]+'%'};return _0x2dc591;}})});}_0x22554e=_[_0xe436('0x3a')]({},_0x22554e,_0x421d97[_0xe436('0x3d')]);var _0x6f8427={'where':_0x22554e['where']};return db['Sound']['count'](_0x6f8427)[_0xe436('0x25')](function(_0x42af93){_0x4698fa[_0xe436('0x1b')]=_0x42af93;if(_0x421d97[_0xe436('0x2e')][_0xe436('0x3e')]){_0x22554e[_0xe436('0x3f')]=[{'all':!![]}];}return db[_0xe436('0x2b')][_0xe436('0x40')](_0x22554e);})['then'](function(_0x25c97c){_0x4698fa[_0xe436('0x41')]=_0x25c97c;return _0x4698fa;})[_0xe436('0x25')](respondWithFilteredResult(_0x980081,_0x22554e))[_0xe436('0x42')](handleError(_0x980081,null));};exports[_0xe436('0x43')]=function(_0x21811c,_0x5a126f){var _0x5b72bc={'raw':!![],'where':{'id':_0x21811c['params']['id']}},_0x4762e6={};_0x4762e6[_0xe436('0x33')]=_[_0xe436('0x2f')](db[_0xe436('0x2b')][_0xe436('0x2c')]);_0x4762e6[_0xe436('0x2e')]=_['keys'](_0x21811c[_0xe436('0x2e')]);_0x4762e6[_0xe436('0x30')]=_[_0xe436('0x32')](_0x4762e6['model'],_0x4762e6['query']);_0x5b72bc[_0xe436('0x31')]=_[_0xe436('0x32')](_0x4762e6[_0xe436('0x33')],qs[_0xe436('0x34')](_0x21811c[_0xe436('0x2e')][_0xe436('0x34')]));_0x5b72bc['attributes']=_0x5b72bc['attributes'][_0xe436('0x35')]?_0x5b72bc[_0xe436('0x31')]:_0x4762e6[_0xe436('0x33')];if(_0x21811c['query'][_0xe436('0x3e')]){_0x5b72bc[_0xe436('0x3f')]=[{'all':!![]}];}_0x5b72bc=_[_0xe436('0x3a')]({},_0x5b72bc,_0x21811c[_0xe436('0x3d')]);return db[_0xe436('0x2b')][_0xe436('0x44')](_0x5b72bc)[_0xe436('0x25')](handleEntityNotFound(_0x5a126f,null))[_0xe436('0x25')](respondWithResult(_0x5a126f,null))[_0xe436('0x42')](handleError(_0x5a126f,null));};exports['download']=function(_0x2d266e,_0x30f8b0,_0x307731){return db[_0xe436('0x2b')][_0xe436('0x44')]({'where':{'id':_0x2d266e[_0xe436('0x45')]['id']},'attributes':[_0xe436('0x28'),_0xe436('0x46'),'converted_format'],'raw':!![]})[_0xe436('0x25')](handleEntityNotFound(_0x30f8b0,null))[_0xe436('0x25')](function(_0x45eddf){if(_0x45eddf){if(!fs['existsSync'](path['join'](config[_0xe436('0x47')],_0xe436('0x48'),_0x45eddf[_0xe436('0x46')]+'.'+_0x45eddf[_0xe436('0x49')]))){throw new db[(_0xe436('0x4a'))][(_0xe436('0x4b'))](_0xe436('0x4c'));}return _0x30f8b0[_0xe436('0x4d')](path[_0xe436('0x4e')](config[_0xe436('0x47')],_0xe436('0x48'),util[_0xe436('0x4f')]('%s.%s',_0x45eddf[_0xe436('0x46')],_0x45eddf[_0xe436('0x49')])),util[_0xe436('0x4f')](_0xe436('0x50'),_0x45eddf[_0xe436('0x28')],_0x45eddf['converted_format']));}return null;})[_0xe436('0x42')](handleError(_0x30f8b0,null));};exports[_0xe436('0x51')]=function(_0x1f5366,_0xf546b5,_0x5a70ba){var _0x25a8f4={'name':path['basename'](_0x1f5366[_0xe436('0x52')]['originalname'],path[_0xe436('0x53')](_0x1f5366[_0xe436('0x52')][_0xe436('0x54')])),'save_name':path['basename'](_0x1f5366[_0xe436('0x52')][_0xe436('0x55')],path[_0xe436('0x53')](_0x1f5366[_0xe436('0x52')][_0xe436('0x55')])),'original_format':path['extname'](_0x1f5366['file'][_0xe436('0x54')])[_0xe436('0x56')](0x1),'converted_format':'wav'};var _0x546271=path[_0xe436('0x4e')](config[_0xe436('0x47')],_0xe436('0x57'),_0x1f5366[_0xe436('0x52')][_0xe436('0x55')]);var _0x33f60e=path[_0xe436('0x4e')](config[_0xe436('0x47')],_0xe436('0x48'),util[_0xe436('0x4f')](_0xe436('0x50'),path['basename'](_0x1f5366[_0xe436('0x52')][_0xe436('0x55')],path['extname'](_0x1f5366['file'][_0xe436('0x55')])),_0x25a8f4['converted_format']));logger[_0xe436('0x58')](_0xe436('0x59'),_0x546271);logger['info'](_0xe436('0x5a'),_0x33f60e);try{fs['chmodSync'](_0x546271,parseInt(_0xe436('0x5b'),0x8));var _0x121a95=sox[_0xe436('0x5c')](_0x546271,_0x33f60e,{'sampleRate':0x1f40,'format':_0xe436('0x5d'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x121a95['on'](_0xe436('0x26'),function(_0x1a8675){fs[_0xe436('0x5e')](_0x546271);_0xf546b5[_0xe436('0x17')](0x1f4)[_0xe436('0x29')](_0x1a8675);});_0x121a95['on']('src',function(_0x4a8140){_0x25a8f4[_0xe436('0x5f')]=isNaN(_0x4a8140[_0xe436('0x60')])?null:_0x4a8140['duration']*0x3e8;_0x25a8f4[_0xe436('0x61')]=isNaN(_0x4a8140[_0xe436('0x62')])?null:_0x4a8140[_0xe436('0x62')];_0x25a8f4['original_channelCount']=isNaN(_0x4a8140[_0xe436('0x63')])?null:_0x4a8140[_0xe436('0x63')];_0x25a8f4[_0xe436('0x64')]=isNaN(_0x4a8140[_0xe436('0x65')])?null:_0x4a8140[_0xe436('0x65')];_0x25a8f4[_0xe436('0x66')]=isNaN(_0x4a8140['sampleRate'])?null:_0x4a8140['sampleRate'];});_0x121a95['on'](_0xe436('0x67'),function(_0x518f5e){_0x25a8f4[_0xe436('0x68')]=isNaN(_0x518f5e[_0xe436('0x60')])?null:_0x518f5e[_0xe436('0x60')]*0x3e8;_0x25a8f4[_0xe436('0x69')]=isNaN(_0x518f5e[_0xe436('0x62')])?null:_0x518f5e[_0xe436('0x62')];_0x25a8f4['converted_channelCount']=isNaN(_0x518f5e[_0xe436('0x63')])?null:_0x518f5e[_0xe436('0x63')];_0x25a8f4[_0xe436('0x6a')]=isNaN(_0x518f5e[_0xe436('0x65')])?null:_0x518f5e['bitRate'];_0x25a8f4[_0xe436('0x6b')]=isNaN(_0x518f5e['sampleRate'])?null:_0x518f5e[_0xe436('0x6c')];});_0x121a95['on']('end',function(){fs[_0xe436('0x6d')](_0x33f60e,parseInt('0777',0x8));return db[_0xe436('0x2b')]['create'](_0x25a8f4)[_0xe436('0x25')](function(_0x192ac6){var _0x5e7a67={'role':_0x1f5366[_0xe436('0x6e')][_0xe436('0x6f')],'userProfileId':_0x1f5366[_0xe436('0x6e')][_0xe436('0x70')]};if(!_0x5e7a67)throw new Error(_0xe436('0x71'));if(_0x5e7a67[_0xe436('0x6f')]===_0xe436('0x72')){var _0x4c66f7=_0x192ac6['get']({'plain':!![]});return db[_0xe436('0x73')][_0xe436('0x44')]({'where':{'name':_0xe436('0x74'),'userProfileId':_0x5e7a67[_0xe436('0x70')]},'raw':!![]})[_0xe436('0x25')](function(_0x3c8ddf){if(_0x3c8ddf&&_0x3c8ddf[_0xe436('0x75')]===0x0){return db['UserProfileResource']['create']({'name':_0x4c66f7[_0xe436('0x28')],'resourceId':_0x4c66f7['id'],'type':_0x3c8ddf[_0xe436('0x28')],'sectionId':_0x3c8ddf['id']},{})['then'](function(){return _0x192ac6;});}else{return _0x192ac6;}})[_0xe436('0x42')](function(_0xfb1c87){logger[_0xe436('0x26')](_0xe436('0x76'),_0xfb1c87);throw _0xfb1c87;});}return _0x192ac6;})[_0xe436('0x25')](respondWithResult(_0xf546b5,null))['catch'](handleError(_0xf546b5,null));});_0x121a95[_0xe436('0x77')]();}catch(_0x16dda5){_0xf546b5['status'](0x1f4)[_0xe436('0x29')](_0x16dda5);}};exports[_0xe436('0x21')]=function(_0x13ac15,_0x471c30,_0xb79561){return db['Sound']['find']({'where':{'id':_0x13ac15[_0xe436('0x45')]['id']}})[_0xe436('0x25')](handleEntityNotFound(_0x471c30,null))[_0xe436('0x25')](saveUpdates(_[_0xe436('0x78')](_0x13ac15['body'],[_0xe436('0x28'),_0xe436('0x79')]),null))[_0xe436('0x25')](respondWithResult(_0x471c30,null))[_0xe436('0x42')](handleError(_0x471c30,null));};exports['delete']=function(_0x263779,_0x5844d8,_0x250c29){return db[_0xe436('0x2b')]['find']({'where':{'id':_0x263779[_0xe436('0x45')]['id']}})[_0xe436('0x25')](function(_0x32514d){if(_0x32514d){return _0x32514d['destroy']();}})['then'](function(_0x15064a){var _0x482d7b=path['join'](config[_0xe436('0x47')],_0xe436('0x57'),util[_0xe436('0x4f')](_0xe436('0x50'),_0x15064a[_0xe436('0x46')],_0x15064a[_0xe436('0x7a')]));var _0x5a6421=path[_0xe436('0x4e')](config[_0xe436('0x47')],_0xe436('0x48'),util[_0xe436('0x4f')](_0xe436('0x50'),_0x15064a[_0xe436('0x46')],_0x15064a[_0xe436('0x49')]));fs['unlinkSync'](_0x482d7b);fs[_0xe436('0x5e')](_0x5a6421);return _0x15064a;})[_0xe436('0x25')](function(_0x1cb282){if(_0x1cb282){return _0x5844d8[_0xe436('0x17')](0xcc)['end']();}})['then'](handleEntityNotFound(_0x5844d8,null))[_0xe436('0x42')](handleError(_0x5844d8,null));};