c4defd13f0d91d1d072780e360fba474e1b7c1bc
[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 _0xcf25=['ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','set','Content-Range','apply','reject','save','then','destroy','get','Sounds','UserProfileResource','error','stack','name','send','index','Sound','rawAttributes','fieldName','type','key','model','map','keys','query','intersection','fields','length','attributes','hasOwnProperty','limit','order','sort','where','pick','filters','filter','merge','VIRTUAL','include','findAll','rows','catch','show','params','includeAll','download','save_name','converted_format','existsSync','join','root','Sequelize','ValidationError','Sound\x20not\x20found','server/files/sounds/converted','format','%s.%s','create','basename','extname','file','filename','wav','server/files/sounds/original','info','Sound\x20upload\x20destination:\x20%s','0777','transcode','unlinkSync','src','original_duration','duration','sampleCount','original_channelCount','channelCount','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_sampleCount','converted_channelCount','chmodSync','body','role','userProfileId','user','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','description','delete','original_format','eml-format','zip-dir','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','papaparse'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xcf25,0x6e));var _0x5cf2=function(_0xb2652a,_0x31610a){_0xb2652a=_0xb2652a-0x0;var _0x290cb1=_0xcf25[_0xb2652a];return _0x290cb1;};'use strict';var emlformat=require(_0x5cf2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5cf2('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5cf2('0x2'));var moment=require(_0x5cf2('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5cf2('0x4'));var util=require(_0x5cf2('0x5'));var path=require('path');var sox=require(_0x5cf2('0x6'));var csv=require(_0x5cf2('0x7'));var ejs=require(_0x5cf2('0x8'));var fs=require('fs');var fs_extra=require(_0x5cf2('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x5cf2('0xa'));var jsforce=require(_0x5cf2('0xb'));var deskjs=require(_0x5cf2('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x5cf2('0xd'));var Redis=require(_0x5cf2('0xe'));var authService=require(_0x5cf2('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x5cf2('0x10'));var hardwareService=require(_0x5cf2('0x11'));var logger=require(_0x5cf2('0x12'))('api');var utils=require(_0x5cf2('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x5cf2('0x14'));var db=require(_0x5cf2('0x15'))['db'];function respondWithStatusCode(_0x4465c6,_0x13df21){_0x13df21=_0x13df21||0xcc;return function(_0x2a8a53){if(_0x2a8a53){return _0x4465c6[_0x5cf2('0x16')](_0x13df21);}return _0x4465c6['status'](_0x13df21)[_0x5cf2('0x17')]();};}function respondWithResult(_0x3e236e,_0x3bc56d){_0x3bc56d=_0x3bc56d||0xc8;return function(_0x22042b){if(_0x22042b){return _0x3e236e[_0x5cf2('0x18')](_0x3bc56d)[_0x5cf2('0x19')](_0x22042b);}};}function respondWithFilteredResult(_0x3beef5,_0x11ef19){return function(_0x2d925f){if(_0x2d925f){var _0x4a6080=typeof _0x11ef19[_0x5cf2('0x1a')]==='undefined'&&typeof _0x11ef19['limit']===_0x5cf2('0x1b');var _0x13bd79=_0x2d925f[_0x5cf2('0x1c')];var _0x56a63f=_0x4a6080?0x0:_0x11ef19[_0x5cf2('0x1a')];var _0xfa14d7=_0x4a6080?_0x2d925f[_0x5cf2('0x1c')]:_0x11ef19['offset']+_0x11ef19['limit'];var _0x9bd1e5;if(_0xfa14d7>=_0x13bd79){_0xfa14d7=_0x13bd79;_0x9bd1e5=0xc8;}else{_0x9bd1e5=0xce;}_0x3beef5[_0x5cf2('0x18')](_0x9bd1e5);return _0x3beef5[_0x5cf2('0x1d')](_0x5cf2('0x1e'),_0x56a63f+'-'+_0xfa14d7+'/'+_0x13bd79)['json'](_0x2d925f);}return null;};}function patchUpdates(_0x3ffff8){return function(_0x1afc7b){try{jsonpatch[_0x5cf2('0x1f')](_0x1afc7b,_0x3ffff8,!![]);}catch(_0x69bcd){return BPromise[_0x5cf2('0x20')](_0x69bcd);}return _0x1afc7b[_0x5cf2('0x21')]();};}function saveUpdates(_0x428e73,_0x1930fb){return function(_0x3ba604){if(_0x3ba604){return _0x3ba604['update'](_0x428e73)[_0x5cf2('0x22')](function(_0x8cf634){return _0x8cf634;});}return null;};}function removeEntity(_0x5a416f,_0x493f63){return function(_0x460fae){if(_0x460fae){return _0x460fae[_0x5cf2('0x23')]()['then'](function(){var _0x4e82e4=_0x460fae[_0x5cf2('0x24')]({'plain':!![]});var _0x296db7=_0x5cf2('0x25');return db[_0x5cf2('0x26')][_0x5cf2('0x23')]({'where':{'type':_0x296db7,'resourceId':_0x4e82e4['id']}})[_0x5cf2('0x22')](function(){return _0x460fae;});})[_0x5cf2('0x22')](function(){_0x5a416f['status'](0xcc)[_0x5cf2('0x17')]();});}};}function handleEntityNotFound(_0x10f8e5,_0x5ce17f){return function(_0x3d336a){if(!_0x3d336a){_0x10f8e5['sendStatus'](0x194);}return _0x3d336a;};}function handleError(_0xc1605,_0x4eef6c){_0x4eef6c=_0x4eef6c||0x1f4;return function(_0x2a0917){logger[_0x5cf2('0x27')](_0x2a0917[_0x5cf2('0x28')]);if(_0x2a0917[_0x5cf2('0x29')]){delete _0x2a0917['name'];}_0xc1605[_0x5cf2('0x18')](_0x4eef6c)[_0x5cf2('0x2a')](_0x2a0917);};}exports[_0x5cf2('0x2b')]=function(_0x425cf8,_0x3af023){var _0x491f5c={},_0x3238ad={},_0x10c416={'count':0x0,'rows':[]};var _0x221588=_['map'](db[_0x5cf2('0x2c')][_0x5cf2('0x2d')],function(_0x21adff){return{'name':_0x21adff[_0x5cf2('0x2e')],'type':_0x21adff[_0x5cf2('0x2f')][_0x5cf2('0x30')]};});_0x3238ad[_0x5cf2('0x31')]=_[_0x5cf2('0x32')](_0x221588,_0x5cf2('0x29'));_0x3238ad['query']=_[_0x5cf2('0x33')](_0x425cf8[_0x5cf2('0x34')]);_0x3238ad['filters']=_[_0x5cf2('0x35')](_0x3238ad['model'],_0x3238ad[_0x5cf2('0x34')]);_0x491f5c['attributes']=_[_0x5cf2('0x35')](_0x3238ad[_0x5cf2('0x31')],qs['fields'](_0x425cf8[_0x5cf2('0x34')][_0x5cf2('0x36')]));_0x491f5c['attributes']=_0x491f5c['attributes'][_0x5cf2('0x37')]?_0x491f5c[_0x5cf2('0x38')]:_0x3238ad[_0x5cf2('0x31')];if(!_0x425cf8[_0x5cf2('0x34')][_0x5cf2('0x39')]('nolimit')){_0x491f5c['limit']=qs[_0x5cf2('0x3a')](_0x425cf8[_0x5cf2('0x34')]['limit']);_0x491f5c['offset']=qs[_0x5cf2('0x1a')](_0x425cf8[_0x5cf2('0x34')][_0x5cf2('0x1a')]);}_0x491f5c[_0x5cf2('0x3b')]=qs[_0x5cf2('0x3c')](_0x425cf8[_0x5cf2('0x34')][_0x5cf2('0x3c')]);_0x491f5c[_0x5cf2('0x3d')]=qs['filters'](_[_0x5cf2('0x3e')](_0x425cf8['query'],_0x3238ad[_0x5cf2('0x3f')]),_0x221588);if(_0x425cf8[_0x5cf2('0x34')][_0x5cf2('0x40')]){_0x491f5c[_0x5cf2('0x3d')]=_[_0x5cf2('0x41')](_0x491f5c[_0x5cf2('0x3d')],{'$or':_[_0x5cf2('0x32')](_0x221588,function(_0x3078c3){if(_0x3078c3[_0x5cf2('0x2f')]!==_0x5cf2('0x42')){var _0x15dc02={};_0x15dc02[_0x3078c3['name']]={'$like':'%'+_0x425cf8[_0x5cf2('0x34')]['filter']+'%'};return _0x15dc02;}})});}_0x491f5c=_[_0x5cf2('0x41')]({},_0x491f5c,_0x425cf8['options']);var _0x1db275={'where':_0x491f5c['where']};return db[_0x5cf2('0x2c')]['count'](_0x1db275)[_0x5cf2('0x22')](function(_0x4aa0ef){_0x10c416[_0x5cf2('0x1c')]=_0x4aa0ef;if(_0x425cf8['query']['includeAll']){_0x491f5c[_0x5cf2('0x43')]=[{'all':!![]}];}return db['Sound'][_0x5cf2('0x44')](_0x491f5c);})[_0x5cf2('0x22')](function(_0x259a5d){_0x10c416[_0x5cf2('0x45')]=_0x259a5d;return _0x10c416;})[_0x5cf2('0x22')](respondWithFilteredResult(_0x3af023,_0x491f5c))[_0x5cf2('0x46')](handleError(_0x3af023,null));};exports[_0x5cf2('0x47')]=function(_0x4aa26a,_0x4f8471){var _0x46ed61={'raw':!![],'where':{'id':_0x4aa26a[_0x5cf2('0x48')]['id']}},_0xcb7f72={};_0xcb7f72['model']=_[_0x5cf2('0x33')](db[_0x5cf2('0x2c')][_0x5cf2('0x2d')]);_0xcb7f72[_0x5cf2('0x34')]=_[_0x5cf2('0x33')](_0x4aa26a['query']);_0xcb7f72[_0x5cf2('0x3f')]=_[_0x5cf2('0x35')](_0xcb7f72['model'],_0xcb7f72['query']);_0x46ed61[_0x5cf2('0x38')]=_[_0x5cf2('0x35')](_0xcb7f72[_0x5cf2('0x31')],qs[_0x5cf2('0x36')](_0x4aa26a[_0x5cf2('0x34')][_0x5cf2('0x36')]));_0x46ed61['attributes']=_0x46ed61[_0x5cf2('0x38')][_0x5cf2('0x37')]?_0x46ed61[_0x5cf2('0x38')]:_0xcb7f72[_0x5cf2('0x31')];if(_0x4aa26a[_0x5cf2('0x34')][_0x5cf2('0x49')]){_0x46ed61[_0x5cf2('0x43')]=[{'all':!![]}];}_0x46ed61=_[_0x5cf2('0x41')]({},_0x46ed61,_0x4aa26a['options']);return db[_0x5cf2('0x2c')]['find'](_0x46ed61)[_0x5cf2('0x22')](handleEntityNotFound(_0x4f8471,null))[_0x5cf2('0x22')](respondWithResult(_0x4f8471,null))[_0x5cf2('0x46')](handleError(_0x4f8471,null));};exports[_0x5cf2('0x4a')]=function(_0x3074f7,_0x4fe72d,_0x1f36b5){return db['Sound']['find']({'where':{'id':_0x3074f7['params']['id']},'attributes':[_0x5cf2('0x29'),_0x5cf2('0x4b'),_0x5cf2('0x4c')],'raw':!![]})[_0x5cf2('0x22')](handleEntityNotFound(_0x4fe72d,null))['then'](function(_0x2d03eb){if(_0x2d03eb){if(!fs[_0x5cf2('0x4d')](path[_0x5cf2('0x4e')](config[_0x5cf2('0x4f')],'server/files/sounds/converted',_0x2d03eb[_0x5cf2('0x4b')]+'.'+_0x2d03eb[_0x5cf2('0x4c')]))){throw new db[(_0x5cf2('0x50'))][(_0x5cf2('0x51'))](_0x5cf2('0x52'));}return _0x4fe72d[_0x5cf2('0x4a')](path[_0x5cf2('0x4e')](config[_0x5cf2('0x4f')],_0x5cf2('0x53'),util[_0x5cf2('0x54')](_0x5cf2('0x55'),_0x2d03eb[_0x5cf2('0x4b')],_0x2d03eb[_0x5cf2('0x4c')])),util[_0x5cf2('0x54')](_0x5cf2('0x55'),_0x2d03eb['name'],_0x2d03eb[_0x5cf2('0x4c')]));}return null;})[_0x5cf2('0x46')](handleError(_0x4fe72d,null));};exports[_0x5cf2('0x56')]=function(_0x1fd00d,_0xa58e8a,_0x594dfa){var _0x27fecf={'name':path[_0x5cf2('0x57')](_0x1fd00d['file']['originalname'],path[_0x5cf2('0x58')](_0x1fd00d[_0x5cf2('0x59')]['originalname'])),'save_name':path['basename'](_0x1fd00d[_0x5cf2('0x59')][_0x5cf2('0x5a')],path['extname'](_0x1fd00d[_0x5cf2('0x59')][_0x5cf2('0x5a')])),'original_format':path[_0x5cf2('0x58')](_0x1fd00d[_0x5cf2('0x59')]['originalname'])['substring'](0x1),'converted_format':_0x5cf2('0x5b')};var _0x5d0bcb=path[_0x5cf2('0x4e')](config['root'],_0x5cf2('0x5c'),_0x1fd00d[_0x5cf2('0x59')][_0x5cf2('0x5a')]);var _0x198764=path[_0x5cf2('0x4e')](config[_0x5cf2('0x4f')],'server/files/sounds/converted',util[_0x5cf2('0x54')](_0x5cf2('0x55'),path[_0x5cf2('0x57')](_0x1fd00d[_0x5cf2('0x59')][_0x5cf2('0x5a')],path['extname'](_0x1fd00d[_0x5cf2('0x59')][_0x5cf2('0x5a')])),_0x27fecf['converted_format']));logger[_0x5cf2('0x5d')]('Sound\x20upload\x20filepath:\x20%s',_0x5d0bcb);logger[_0x5cf2('0x5d')](_0x5cf2('0x5e'),_0x198764);try{fs['chmodSync'](_0x5d0bcb,parseInt(_0x5cf2('0x5f'),0x8));var _0x5ade53=sox[_0x5cf2('0x60')](_0x5d0bcb,_0x198764,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x5ade53['on'](_0x5cf2('0x27'),function(_0x518fb3){fs[_0x5cf2('0x61')](_0x5d0bcb);_0xa58e8a[_0x5cf2('0x18')](0x1f4)[_0x5cf2('0x2a')](_0x518fb3);});_0x5ade53['on'](_0x5cf2('0x62'),function(_0x3f4f8c){_0x27fecf[_0x5cf2('0x63')]=isNaN(_0x3f4f8c['duration'])?null:_0x3f4f8c[_0x5cf2('0x64')]*0x3e8;_0x27fecf['original_sampleCount']=isNaN(_0x3f4f8c[_0x5cf2('0x65')])?null:_0x3f4f8c[_0x5cf2('0x65')];_0x27fecf[_0x5cf2('0x66')]=isNaN(_0x3f4f8c['channelCount'])?null:_0x3f4f8c[_0x5cf2('0x67')];_0x27fecf['original_bitRate']=isNaN(_0x3f4f8c[_0x5cf2('0x68')])?null:_0x3f4f8c['bitRate'];_0x27fecf[_0x5cf2('0x69')]=isNaN(_0x3f4f8c[_0x5cf2('0x6a')])?null:_0x3f4f8c['sampleRate'];});_0x5ade53['on'](_0x5cf2('0x6b'),function(_0x1f565c){_0x27fecf[_0x5cf2('0x6c')]=isNaN(_0x1f565c['duration'])?null:_0x1f565c[_0x5cf2('0x64')]*0x3e8;_0x27fecf[_0x5cf2('0x6d')]=isNaN(_0x1f565c[_0x5cf2('0x65')])?null:_0x1f565c[_0x5cf2('0x65')];_0x27fecf[_0x5cf2('0x6e')]=isNaN(_0x1f565c[_0x5cf2('0x67')])?null:_0x1f565c[_0x5cf2('0x67')];_0x27fecf['converted_bitRate']=isNaN(_0x1f565c[_0x5cf2('0x68')])?null:_0x1f565c[_0x5cf2('0x68')];_0x27fecf['converted_sampleRate']=isNaN(_0x1f565c['sampleRate'])?null:_0x1f565c[_0x5cf2('0x6a')];});_0x5ade53['on']('end',function(){fs[_0x5cf2('0x6f')](_0x198764,parseInt(_0x5cf2('0x5f'),0x8));return db[_0x5cf2('0x2c')][_0x5cf2('0x56')](_0x27fecf)[_0x5cf2('0x22')](function(_0xe3bff){var _0x53d53d={'role':_0x1fd00d[_0x5cf2('0x70')][_0x5cf2('0x71')],'userProfileId':_0x1fd00d[_0x5cf2('0x70')][_0x5cf2('0x72')]};if(!_0x53d53d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x53d53d['role']===_0x5cf2('0x73')){var _0x388186=_0xe3bff[_0x5cf2('0x24')]({'plain':!![]});return db[_0x5cf2('0x74')][_0x5cf2('0x75')]({'where':{'name':_0x5cf2('0x25'),'userProfileId':_0x53d53d['userProfileId']},'raw':!![]})[_0x5cf2('0x22')](function(_0x43e15d){if(_0x43e15d&&_0x43e15d[_0x5cf2('0x76')]===0x0){return db[_0x5cf2('0x26')]['create']({'name':_0x388186[_0x5cf2('0x29')],'resourceId':_0x388186['id'],'type':_0x43e15d[_0x5cf2('0x29')],'sectionId':_0x43e15d['id']},{})[_0x5cf2('0x22')](function(){return _0xe3bff;});}else{return _0xe3bff;}})[_0x5cf2('0x46')](function(_0x28a22d){logger['error'](_0x5cf2('0x77'),_0x28a22d);throw _0x28a22d;});}return _0xe3bff;})[_0x5cf2('0x22')](respondWithResult(_0xa58e8a,null))['catch'](handleError(_0xa58e8a,null));});_0x5ade53[_0x5cf2('0x78')]();}catch(_0x188b07){_0xa58e8a[_0x5cf2('0x18')](0x1f4)[_0x5cf2('0x2a')](_0x188b07);}};exports['update']=function(_0x11ab88,_0x1d9362,_0x72b21b){return db[_0x5cf2('0x2c')][_0x5cf2('0x75')]({'where':{'id':_0x11ab88[_0x5cf2('0x48')]['id']}})[_0x5cf2('0x22')](handleEntityNotFound(_0x1d9362,null))[_0x5cf2('0x22')](saveUpdates(_[_0x5cf2('0x3e')](_0x11ab88[_0x5cf2('0x70')],[_0x5cf2('0x29'),_0x5cf2('0x79')]),null))[_0x5cf2('0x22')](respondWithResult(_0x1d9362,null))['catch'](handleError(_0x1d9362,null));};exports[_0x5cf2('0x7a')]=function(_0x557809,_0x42e3b0,_0x5a3728){return db['Sound'][_0x5cf2('0x75')]({'where':{'id':_0x557809[_0x5cf2('0x48')]['id']}})[_0x5cf2('0x22')](function(_0x30cc65){if(_0x30cc65){return _0x30cc65[_0x5cf2('0x23')]();}})[_0x5cf2('0x22')](function(_0x3e33c2){var _0x174605=path[_0x5cf2('0x4e')](config['root'],'server/files/sounds/original',util[_0x5cf2('0x54')](_0x5cf2('0x55'),_0x3e33c2[_0x5cf2('0x4b')],_0x3e33c2[_0x5cf2('0x7b')]));var _0x4b817b=path['join'](config[_0x5cf2('0x4f')],_0x5cf2('0x53'),util['format'](_0x5cf2('0x55'),_0x3e33c2[_0x5cf2('0x4b')],_0x3e33c2[_0x5cf2('0x4c')]));fs[_0x5cf2('0x61')](_0x174605);fs[_0x5cf2('0x61')](_0x4b817b);return _0x3e33c2;})[_0x5cf2('0x22')](function(_0x2d6e04){if(_0x2d6e04){return _0x42e3b0[_0x5cf2('0x18')](0xcc)['end']();}})[_0x5cf2('0x22')](handleEntityNotFound(_0x42e3b0,null))[_0x5cf2('0x46')](handleError(_0x42e3b0,null));};