ba031b5cae8371b4c2cd7ec5e33cc7dba4faecc3
[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 _0x6ba7=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','destroy','get','end','sendStatus','error','stack','name','send','map','Sound','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','include','findAll','show','params','includeAll','options','find','save_name','converted_format','existsSync','root','server/files/sounds/converted','ValidationError','Sound\x20not\x20found','download','format','%s.%s','catch','create','originalname','extname','file','basename','filename','substring','wav','join','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','transcode','unlinkSync','src','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_sampleCount','converted_bitRate','0777','body','role','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','Sounds','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','update','original_format','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','desk.js','papaparse'];(function(_0x21549c,_0x6d64d1){var _0x426cbd=function(_0x323f5b){while(--_0x323f5b){_0x21549c['push'](_0x21549c['shift']());}};_0x426cbd(++_0x6d64d1);}(_0x6ba7,0x16d));var _0x76ba=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6ba7[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x76ba('0x0'));var rimraf=require(_0x76ba('0x1'));var zipdir=require(_0x76ba('0x2'));var jsonpatch=require(_0x76ba('0x3'));var rp=require(_0x76ba('0x4'));var moment=require(_0x76ba('0x5'));var BPromise=require(_0x76ba('0x6'));var Mustache=require(_0x76ba('0x7'));var util=require(_0x76ba('0x8'));var path=require(_0x76ba('0x9'));var sox=require('sox');var csv=require(_0x76ba('0xa'));var ejs=require(_0x76ba('0xb'));var fs=require('fs');var fs_extra=require(_0x76ba('0xc'));var _=require('lodash');var squel=require(_0x76ba('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x76ba('0xe'));var toCsv=require(_0x76ba('0xa'));var querystring=require('querystring');var Papa=require(_0x76ba('0xf'));var Redis=require('ioredis');var authService=require(_0x76ba('0x10'));var qs=require(_0x76ba('0x11'));var as=require(_0x76ba('0x12'));var hardwareService=require(_0x76ba('0x13'));var logger=require(_0x76ba('0x14'))(_0x76ba('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x76ba('0x16'));var db=require(_0x76ba('0x17'))['db'];function respondWithStatusCode(_0x467742,_0x173788){_0x173788=_0x173788||0xcc;return function(_0x6a103e){if(_0x6a103e){return _0x467742['sendStatus'](_0x173788);}return _0x467742[_0x76ba('0x18')](_0x173788)['end']();};}function respondWithResult(_0x241a1f,_0x2df2e3){_0x2df2e3=_0x2df2e3||0xc8;return function(_0xf477c0){if(_0xf477c0){return _0x241a1f[_0x76ba('0x18')](_0x2df2e3)[_0x76ba('0x19')](_0xf477c0);}};}function respondWithFilteredResult(_0x48611e,_0x38cd6a){return function(_0x37ffc3){if(_0x37ffc3){var _0xb7cbad=typeof _0x38cd6a[_0x76ba('0x1a')]===_0x76ba('0x1b')&&typeof _0x38cd6a[_0x76ba('0x1c')]===_0x76ba('0x1b');var _0x21e564=_0x37ffc3['count'];var _0x16c3f2=_0xb7cbad?0x0:_0x38cd6a[_0x76ba('0x1a')];var _0x337386=_0xb7cbad?_0x37ffc3[_0x76ba('0x1d')]:_0x38cd6a[_0x76ba('0x1a')]+_0x38cd6a[_0x76ba('0x1c')];var _0x347dc8;if(_0x337386>=_0x21e564){_0x337386=_0x21e564;_0x347dc8=0xc8;}else{_0x347dc8=0xce;}_0x48611e[_0x76ba('0x18')](_0x347dc8);return _0x48611e[_0x76ba('0x1e')](_0x76ba('0x1f'),_0x16c3f2+'-'+_0x337386+'/'+_0x21e564)[_0x76ba('0x19')](_0x37ffc3);}return null;};}function patchUpdates(_0x51f947){return function(_0x7b8d40){try{jsonpatch[_0x76ba('0x20')](_0x7b8d40,_0x51f947,!![]);}catch(_0xecc9a5){return BPromise[_0x76ba('0x21')](_0xecc9a5);}return _0x7b8d40['save']();};}function saveUpdates(_0x3a43de,_0x4ee27d){return function(_0x525ea0){if(_0x525ea0){return _0x525ea0['update'](_0x3a43de)[_0x76ba('0x22')](function(_0x5f1861){return _0x5f1861;});}return null;};}function removeEntity(_0x581215,_0x32e5b0){return function(_0x119865){if(_0x119865){return _0x119865[_0x76ba('0x23')]()[_0x76ba('0x22')](function(){var _0x24bafd=_0x119865[_0x76ba('0x24')]({'plain':!![]});var _0x4feecf='Sounds';return db['UserProfileResource'][_0x76ba('0x23')]({'where':{'type':_0x4feecf,'resourceId':_0x24bafd['id']}})[_0x76ba('0x22')](function(){return _0x119865;});})['then'](function(){_0x581215['status'](0xcc)[_0x76ba('0x25')]();});}};}function handleEntityNotFound(_0x31879b,_0x343e51){return function(_0xbc39b8){if(!_0xbc39b8){_0x31879b[_0x76ba('0x26')](0x194);}return _0xbc39b8;};}function handleError(_0x2b3ca3,_0x4a3b7f){_0x4a3b7f=_0x4a3b7f||0x1f4;return function(_0x1a0e77){logger[_0x76ba('0x27')](_0x1a0e77[_0x76ba('0x28')]);if(_0x1a0e77['name']){delete _0x1a0e77[_0x76ba('0x29')];}_0x2b3ca3['status'](_0x4a3b7f)[_0x76ba('0x2a')](_0x1a0e77);};}exports['index']=function(_0x1471c1,_0x1d30f8){var _0x4bdb73={},_0x4645f6={},_0x1f3fac={'count':0x0,'rows':[]};var _0x3994f1=_[_0x76ba('0x2b')](db[_0x76ba('0x2c')][_0x76ba('0x2d')],function(_0x46b15d){return{'name':_0x46b15d[_0x76ba('0x2e')],'type':_0x46b15d[_0x76ba('0x2f')][_0x76ba('0x30')]};});_0x4645f6[_0x76ba('0x31')]=_[_0x76ba('0x2b')](_0x3994f1,_0x76ba('0x29'));_0x4645f6[_0x76ba('0x32')]=_[_0x76ba('0x33')](_0x1471c1[_0x76ba('0x32')]);_0x4645f6[_0x76ba('0x34')]=_[_0x76ba('0x35')](_0x4645f6[_0x76ba('0x31')],_0x4645f6[_0x76ba('0x32')]);_0x4bdb73[_0x76ba('0x36')]=_[_0x76ba('0x35')](_0x4645f6['model'],qs[_0x76ba('0x37')](_0x1471c1[_0x76ba('0x32')][_0x76ba('0x37')]));_0x4bdb73[_0x76ba('0x36')]=_0x4bdb73[_0x76ba('0x36')][_0x76ba('0x38')]?_0x4bdb73[_0x76ba('0x36')]:_0x4645f6[_0x76ba('0x31')];if(!_0x1471c1['query'][_0x76ba('0x39')](_0x76ba('0x3a'))){_0x4bdb73['limit']=qs['limit'](_0x1471c1['query'][_0x76ba('0x1c')]);_0x4bdb73[_0x76ba('0x1a')]=qs[_0x76ba('0x1a')](_0x1471c1['query'][_0x76ba('0x1a')]);}_0x4bdb73[_0x76ba('0x3b')]=qs[_0x76ba('0x3c')](_0x1471c1['query'][_0x76ba('0x3c')]);_0x4bdb73[_0x76ba('0x3d')]=qs[_0x76ba('0x34')](_[_0x76ba('0x3e')](_0x1471c1[_0x76ba('0x32')],_0x4645f6[_0x76ba('0x34')]),_0x3994f1);if(_0x1471c1[_0x76ba('0x32')]['filter']){_0x4bdb73[_0x76ba('0x3d')]=_[_0x76ba('0x3f')](_0x4bdb73['where'],{'$or':_[_0x76ba('0x2b')](_0x3994f1,function(_0x25db2f){if(_0x25db2f[_0x76ba('0x2f')]!==_0x76ba('0x40')){var _0x39e873={};_0x39e873[_0x25db2f[_0x76ba('0x29')]]={'$like':'%'+_0x1471c1[_0x76ba('0x32')][_0x76ba('0x41')]+'%'};return _0x39e873;}})});}_0x4bdb73=_[_0x76ba('0x3f')]({},_0x4bdb73,_0x1471c1['options']);var _0x4e3536={'where':_0x4bdb73[_0x76ba('0x3d')]};return db[_0x76ba('0x2c')]['count'](_0x4e3536)[_0x76ba('0x22')](function(_0x5c6abb){_0x1f3fac[_0x76ba('0x1d')]=_0x5c6abb;if(_0x1471c1[_0x76ba('0x32')]['includeAll']){_0x4bdb73[_0x76ba('0x42')]=[{'all':!![]}];}return db[_0x76ba('0x2c')][_0x76ba('0x43')](_0x4bdb73);})[_0x76ba('0x22')](function(_0x3fdb7c){_0x1f3fac['rows']=_0x3fdb7c;return _0x1f3fac;})['then'](respondWithFilteredResult(_0x1d30f8,_0x4bdb73))['catch'](handleError(_0x1d30f8,null));};exports[_0x76ba('0x44')]=function(_0xae0971,_0x187a4c){var _0x525954={'raw':!![],'where':{'id':_0xae0971[_0x76ba('0x45')]['id']}},_0x2dfe1b={};_0x2dfe1b[_0x76ba('0x31')]=_[_0x76ba('0x33')](db[_0x76ba('0x2c')][_0x76ba('0x2d')]);_0x2dfe1b[_0x76ba('0x32')]=_[_0x76ba('0x33')](_0xae0971[_0x76ba('0x32')]);_0x2dfe1b[_0x76ba('0x34')]=_[_0x76ba('0x35')](_0x2dfe1b[_0x76ba('0x31')],_0x2dfe1b[_0x76ba('0x32')]);_0x525954[_0x76ba('0x36')]=_[_0x76ba('0x35')](_0x2dfe1b[_0x76ba('0x31')],qs[_0x76ba('0x37')](_0xae0971[_0x76ba('0x32')][_0x76ba('0x37')]));_0x525954[_0x76ba('0x36')]=_0x525954['attributes'][_0x76ba('0x38')]?_0x525954[_0x76ba('0x36')]:_0x2dfe1b[_0x76ba('0x31')];if(_0xae0971[_0x76ba('0x32')][_0x76ba('0x46')]){_0x525954[_0x76ba('0x42')]=[{'all':!![]}];}_0x525954=_[_0x76ba('0x3f')]({},_0x525954,_0xae0971[_0x76ba('0x47')]);return db[_0x76ba('0x2c')]['find'](_0x525954)[_0x76ba('0x22')](handleEntityNotFound(_0x187a4c,null))['then'](respondWithResult(_0x187a4c,null))['catch'](handleError(_0x187a4c,null));};exports['download']=function(_0xf6d3a7,_0x1904b0,_0x429c04){return db[_0x76ba('0x2c')][_0x76ba('0x48')]({'where':{'id':_0xf6d3a7[_0x76ba('0x45')]['id']},'attributes':[_0x76ba('0x29'),_0x76ba('0x49'),_0x76ba('0x4a')],'raw':!![]})[_0x76ba('0x22')](handleEntityNotFound(_0x1904b0,null))[_0x76ba('0x22')](function(_0x1c54a4){if(_0x1c54a4){if(!fs[_0x76ba('0x4b')](path['join'](config[_0x76ba('0x4c')],_0x76ba('0x4d'),_0x1c54a4[_0x76ba('0x49')]+'.'+_0x1c54a4[_0x76ba('0x4a')]))){throw new db['Sequelize'][(_0x76ba('0x4e'))](_0x76ba('0x4f'));}return _0x1904b0[_0x76ba('0x50')](path['join'](config[_0x76ba('0x4c')],_0x76ba('0x4d'),util[_0x76ba('0x51')](_0x76ba('0x52'),_0x1c54a4[_0x76ba('0x49')],_0x1c54a4['converted_format'])),util['format'](_0x76ba('0x52'),_0x1c54a4[_0x76ba('0x29')],_0x1c54a4[_0x76ba('0x4a')]));}return null;})[_0x76ba('0x53')](handleError(_0x1904b0,null));};exports[_0x76ba('0x54')]=function(_0x21e7bc,_0x57e26b,_0x3590e4){var _0x5b4f7b={'name':path['basename'](_0x21e7bc['file'][_0x76ba('0x55')],path[_0x76ba('0x56')](_0x21e7bc[_0x76ba('0x57')][_0x76ba('0x55')])),'save_name':path[_0x76ba('0x58')](_0x21e7bc[_0x76ba('0x57')][_0x76ba('0x59')],path[_0x76ba('0x56')](_0x21e7bc[_0x76ba('0x57')][_0x76ba('0x59')])),'original_format':path[_0x76ba('0x56')](_0x21e7bc['file'][_0x76ba('0x55')])[_0x76ba('0x5a')](0x1),'converted_format':_0x76ba('0x5b')};var _0x3e3c9b=path[_0x76ba('0x5c')](config[_0x76ba('0x4c')],_0x76ba('0x5d'),_0x21e7bc['file'][_0x76ba('0x59')]);var _0x2581e0=path['join'](config['root'],'server/files/sounds/converted',util[_0x76ba('0x51')]('%s.%s',path[_0x76ba('0x58')](_0x21e7bc['file'][_0x76ba('0x59')],path[_0x76ba('0x56')](_0x21e7bc[_0x76ba('0x57')]['filename'])),_0x5b4f7b[_0x76ba('0x4a')]));logger[_0x76ba('0x5e')](_0x76ba('0x5f'),_0x3e3c9b);logger[_0x76ba('0x5e')](_0x76ba('0x60'),_0x2581e0);try{fs['chmodSync'](_0x3e3c9b,parseInt('0777',0x8));var _0x2a527f=sox[_0x76ba('0x61')](_0x3e3c9b,_0x2581e0,{'sampleRate':0x1f40,'format':_0x76ba('0x5b'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x2a527f['on'](_0x76ba('0x27'),function(_0x260605){fs[_0x76ba('0x62')](_0x3e3c9b);_0x57e26b[_0x76ba('0x18')](0x1f4)[_0x76ba('0x2a')](_0x260605);});_0x2a527f['on'](_0x76ba('0x63'),function(_0x260054){_0x5b4f7b['original_duration']=isNaN(_0x260054['duration'])?null:_0x260054[_0x76ba('0x64')]*0x3e8;_0x5b4f7b[_0x76ba('0x65')]=isNaN(_0x260054[_0x76ba('0x66')])?null:_0x260054[_0x76ba('0x66')];_0x5b4f7b[_0x76ba('0x67')]=isNaN(_0x260054[_0x76ba('0x68')])?null:_0x260054[_0x76ba('0x68')];_0x5b4f7b[_0x76ba('0x69')]=isNaN(_0x260054[_0x76ba('0x6a')])?null:_0x260054[_0x76ba('0x6a')];_0x5b4f7b[_0x76ba('0x6b')]=isNaN(_0x260054['sampleRate'])?null:_0x260054[_0x76ba('0x6c')];});_0x2a527f['on'](_0x76ba('0x6d'),function(_0x312564){_0x5b4f7b[_0x76ba('0x6e')]=isNaN(_0x312564['duration'])?null:_0x312564[_0x76ba('0x64')]*0x3e8;_0x5b4f7b[_0x76ba('0x6f')]=isNaN(_0x312564['sampleCount'])?null:_0x312564['sampleCount'];_0x5b4f7b['converted_channelCount']=isNaN(_0x312564['channelCount'])?null:_0x312564[_0x76ba('0x68')];_0x5b4f7b[_0x76ba('0x70')]=isNaN(_0x312564[_0x76ba('0x6a')])?null:_0x312564[_0x76ba('0x6a')];_0x5b4f7b['converted_sampleRate']=isNaN(_0x312564[_0x76ba('0x6c')])?null:_0x312564[_0x76ba('0x6c')];});_0x2a527f['on'](_0x76ba('0x25'),function(){fs['chmodSync'](_0x2581e0,parseInt(_0x76ba('0x71'),0x8));return db[_0x76ba('0x2c')][_0x76ba('0x54')](_0x5b4f7b)['then'](function(_0x322b88){var _0x54bcf4={'role':_0x21e7bc[_0x76ba('0x72')][_0x76ba('0x73')],'userProfileId':_0x21e7bc[_0x76ba('0x72')]['userProfileId']};if(!_0x54bcf4)throw new Error(_0x76ba('0x74'));if(_0x54bcf4[_0x76ba('0x73')]===_0x76ba('0x75')){var _0x5483f9=_0x322b88[_0x76ba('0x24')]({'plain':!![]});return db[_0x76ba('0x76')][_0x76ba('0x48')]({'where':{'name':_0x76ba('0x77'),'userProfileId':_0x54bcf4[_0x76ba('0x78')]},'raw':!![]})[_0x76ba('0x22')](function(_0x17cc8c){if(_0x17cc8c&&_0x17cc8c[_0x76ba('0x79')]===0x0){return db[_0x76ba('0x7a')]['create']({'name':_0x5483f9[_0x76ba('0x29')],'resourceId':_0x5483f9['id'],'type':_0x17cc8c['name'],'sectionId':_0x17cc8c['id']},{})[_0x76ba('0x22')](function(){return _0x322b88;});}else{return _0x322b88;}})[_0x76ba('0x53')](function(_0x41e4e7){logger['error'](_0x76ba('0x7b'),_0x41e4e7);throw _0x41e4e7;});}return _0x322b88;})[_0x76ba('0x22')](respondWithResult(_0x57e26b,null))[_0x76ba('0x53')](handleError(_0x57e26b,null));});_0x2a527f[_0x76ba('0x7c')]();}catch(_0x1d0160){_0x57e26b[_0x76ba('0x18')](0x1f4)['send'](_0x1d0160);}};exports[_0x76ba('0x7d')]=function(_0x56115d,_0x3c78da,_0x5bcd82){return db[_0x76ba('0x2c')][_0x76ba('0x48')]({'where':{'id':_0x56115d[_0x76ba('0x45')]['id']}})[_0x76ba('0x22')](handleEntityNotFound(_0x3c78da,null))[_0x76ba('0x22')](saveUpdates(_[_0x76ba('0x3e')](_0x56115d['body'],[_0x76ba('0x29'),'description']),null))[_0x76ba('0x22')](respondWithResult(_0x3c78da,null))[_0x76ba('0x53')](handleError(_0x3c78da,null));};exports['delete']=function(_0x2cde0d,_0x10443c,_0x58347a){return db[_0x76ba('0x2c')]['find']({'where':{'id':_0x2cde0d[_0x76ba('0x45')]['id']}})[_0x76ba('0x22')](function(_0x156d1e){if(_0x156d1e){return _0x156d1e['destroy']();}})['then'](function(_0x184c83){var _0x3564a7=path['join'](config['root'],_0x76ba('0x5d'),util[_0x76ba('0x51')](_0x76ba('0x52'),_0x184c83['save_name'],_0x184c83[_0x76ba('0x7e')]));var _0x3d894d=path['join'](config[_0x76ba('0x4c')],_0x76ba('0x4d'),util[_0x76ba('0x51')](_0x76ba('0x52'),_0x184c83[_0x76ba('0x49')],_0x184c83[_0x76ba('0x4a')]));fs[_0x76ba('0x62')](_0x3564a7);fs[_0x76ba('0x62')](_0x3d894d);return _0x184c83;})[_0x76ba('0x22')](function(_0x119b1a){if(_0x119b1a){return _0x10443c[_0x76ba('0x18')](0xcc)['end']();}})[_0x76ba('0x22')](handleEntityNotFound(_0x10443c,null))[_0x76ba('0x53')](handleError(_0x10443c,null));};