2729532bbfa41c8e7a59841a3e06df42b93bd950
[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 _0x8593=['original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_sampleCount','converted_channelCount','converted_bitRate','converted_sampleRate','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','get','UserProfileSection','Sounds','update','description','delete','%s.%s','original_format','eml-format','rimraf','fast-json-patch','request-promise','moment','util','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','set','json','apply','reject','save','then','destroy','error','stack','name','send','map','Sound','rawAttributes','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','include','catch','show','params','download','find','save_name','converted_format','join','root','server/files/sounds/converted','Sequelize','ValidationError','format','create','basename','originalname','filename','file','extname','substring','wav','server/files/sounds/original','Sound\x20upload\x20filepath:\x20%s','info','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','transcode','unlinkSync','src','original_duration','duration','sampleCount','original_channelCount','channelCount'];(function(_0x2edbaa,_0x925b9f){var _0x82d037=function(_0x4a0e4c){while(--_0x4a0e4c){_0x2edbaa['push'](_0x2edbaa['shift']());}};_0x82d037(++_0x925b9f);}(_0x8593,0x8b));var _0x3859=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0x8593[_0x5bd426];return _0x23a7eb;};'use strict';var emlformat=require(_0x3859('0x0'));var rimraf=require(_0x3859('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3859('0x2'));var rp=require(_0x3859('0x3'));var moment=require(_0x3859('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x3859('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x3859('0x6'));var ejs=require(_0x3859('0x7'));var fs=require('fs');var fs_extra=require(_0x3859('0x8'));var _=require(_0x3859('0x9'));var squel=require('squel');var crypto=require(_0x3859('0xa'));var jsforce=require(_0x3859('0xb'));var deskjs=require(_0x3859('0xc'));var toCsv=require('to-csv');var querystring=require(_0x3859('0xd'));var Papa=require(_0x3859('0xe'));var Redis=require(_0x3859('0xf'));var authService=require(_0x3859('0x10'));var qs=require(_0x3859('0x11'));var as=require(_0x3859('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x3859('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x3859('0x14'))['db'];function respondWithStatusCode(_0xb3f217,_0x3dadf9){_0x3dadf9=_0x3dadf9||0xcc;return function(_0x189755){if(_0x189755){return _0xb3f217[_0x3859('0x15')](_0x3dadf9);}return _0xb3f217[_0x3859('0x16')](_0x3dadf9)[_0x3859('0x17')]();};}function respondWithResult(_0x2bda1e,_0x3ce288){_0x3ce288=_0x3ce288||0xc8;return function(_0x416392){if(_0x416392){return _0x2bda1e[_0x3859('0x16')](_0x3ce288)['json'](_0x416392);}};}function respondWithFilteredResult(_0x27896a,_0x3bcf9f){return function(_0x30cd16){if(_0x30cd16){var _0x5a1e5a=typeof _0x3bcf9f['offset']===_0x3859('0x18')&&typeof _0x3bcf9f['limit']===_0x3859('0x18');var _0x521265=_0x30cd16[_0x3859('0x19')];var _0x1b7c67=_0x5a1e5a?0x0:_0x3bcf9f[_0x3859('0x1a')];var _0x52ef15=_0x5a1e5a?_0x30cd16[_0x3859('0x19')]:_0x3bcf9f[_0x3859('0x1a')]+_0x3bcf9f[_0x3859('0x1b')];var _0x570dec;if(_0x52ef15>=_0x521265){_0x52ef15=_0x521265;_0x570dec=0xc8;}else{_0x570dec=0xce;}_0x27896a[_0x3859('0x16')](_0x570dec);return _0x27896a[_0x3859('0x1c')]('Content-Range',_0x1b7c67+'-'+_0x52ef15+'/'+_0x521265)[_0x3859('0x1d')](_0x30cd16);}return null;};}function patchUpdates(_0x5ee76e){return function(_0x36d0f1){try{jsonpatch[_0x3859('0x1e')](_0x36d0f1,_0x5ee76e,!![]);}catch(_0x1d1d33){return BPromise[_0x3859('0x1f')](_0x1d1d33);}return _0x36d0f1[_0x3859('0x20')]();};}function saveUpdates(_0x1f9f60,_0x5a6293){return function(_0x4ff9f8){if(_0x4ff9f8){return _0x4ff9f8['update'](_0x1f9f60)[_0x3859('0x21')](function(_0x2ac14f){return _0x2ac14f;});}return null;};}function removeEntity(_0x1f93d8,_0x182b91){return function(_0x2e9341){if(_0x2e9341){return _0x2e9341[_0x3859('0x22')]()[_0x3859('0x21')](function(){var _0x144585=_0x2e9341['get']({'plain':!![]});var _0x2f9ddb='Sounds';return db['UserProfileResource'][_0x3859('0x22')]({'where':{'type':_0x2f9ddb,'resourceId':_0x144585['id']}})[_0x3859('0x21')](function(){return _0x2e9341;});})[_0x3859('0x21')](function(){_0x1f93d8[_0x3859('0x16')](0xcc)[_0x3859('0x17')]();});}};}function handleEntityNotFound(_0x15944b,_0x203fa9){return function(_0xb71ce8){if(!_0xb71ce8){_0x15944b[_0x3859('0x15')](0x194);}return _0xb71ce8;};}function handleError(_0x1cc767,_0x17998b){_0x17998b=_0x17998b||0x1f4;return function(_0x34947e){logger[_0x3859('0x23')](_0x34947e[_0x3859('0x24')]);if(_0x34947e[_0x3859('0x25')]){delete _0x34947e[_0x3859('0x25')];}_0x1cc767[_0x3859('0x16')](_0x17998b)[_0x3859('0x26')](_0x34947e);};}exports['index']=function(_0x182a9b,_0x37d7a5){var _0x3b5b6d={},_0x14628b={},_0x528f9b={'count':0x0,'rows':[]};var _0x36f03c=_[_0x3859('0x27')](db[_0x3859('0x28')][_0x3859('0x29')],function(_0x5beb64){return{'name':_0x5beb64['fieldName'],'type':_0x5beb64['type']['key']};});_0x14628b[_0x3859('0x2a')]=_[_0x3859('0x27')](_0x36f03c,_0x3859('0x25'));_0x14628b[_0x3859('0x2b')]=_[_0x3859('0x2c')](_0x182a9b[_0x3859('0x2b')]);_0x14628b[_0x3859('0x2d')]=_[_0x3859('0x2e')](_0x14628b[_0x3859('0x2a')],_0x14628b[_0x3859('0x2b')]);_0x3b5b6d['attributes']=_[_0x3859('0x2e')](_0x14628b[_0x3859('0x2a')],qs[_0x3859('0x2f')](_0x182a9b[_0x3859('0x2b')][_0x3859('0x2f')]));_0x3b5b6d[_0x3859('0x30')]=_0x3b5b6d['attributes'][_0x3859('0x31')]?_0x3b5b6d[_0x3859('0x30')]:_0x14628b[_0x3859('0x2a')];if(!_0x182a9b['query'][_0x3859('0x32')]('nolimit')){_0x3b5b6d[_0x3859('0x1b')]=qs['limit'](_0x182a9b[_0x3859('0x2b')]['limit']);_0x3b5b6d[_0x3859('0x1a')]=qs[_0x3859('0x1a')](_0x182a9b[_0x3859('0x2b')]['offset']);}_0x3b5b6d[_0x3859('0x33')]=qs[_0x3859('0x34')](_0x182a9b[_0x3859('0x2b')]['sort']);_0x3b5b6d[_0x3859('0x35')]=qs[_0x3859('0x2d')](_[_0x3859('0x36')](_0x182a9b['query'],_0x14628b[_0x3859('0x2d')]),_0x36f03c);if(_0x182a9b[_0x3859('0x2b')]['filter']){_0x3b5b6d[_0x3859('0x35')]=_[_0x3859('0x37')](_0x3b5b6d[_0x3859('0x35')],{'$or':_[_0x3859('0x27')](_0x36f03c,function(_0x551996){if(_0x551996[_0x3859('0x38')]!==_0x3859('0x39')){var _0x2b4707={};_0x2b4707[_0x551996[_0x3859('0x25')]]={'$like':'%'+_0x182a9b['query'][_0x3859('0x3a')]+'%'};return _0x2b4707;}})});}_0x3b5b6d=_[_0x3859('0x37')]({},_0x3b5b6d,_0x182a9b[_0x3859('0x3b')]);var _0x319062={'where':_0x3b5b6d[_0x3859('0x35')]};return db[_0x3859('0x28')]['count'](_0x319062)['then'](function(_0x468f07){_0x528f9b[_0x3859('0x19')]=_0x468f07;if(_0x182a9b[_0x3859('0x2b')][_0x3859('0x3c')]){_0x3b5b6d[_0x3859('0x3d')]=[{'all':!![]}];}return db['Sound']['findAll'](_0x3b5b6d);})[_0x3859('0x21')](function(_0x46acfc){_0x528f9b['rows']=_0x46acfc;return _0x528f9b;})['then'](respondWithFilteredResult(_0x37d7a5,_0x3b5b6d))[_0x3859('0x3e')](handleError(_0x37d7a5,null));};exports[_0x3859('0x3f')]=function(_0x15c0b2,_0x4e8dd4){var _0x1aeded={'raw':!![],'where':{'id':_0x15c0b2[_0x3859('0x40')]['id']}},_0x5a1ab3={};_0x5a1ab3['model']=_[_0x3859('0x2c')](db['Sound'][_0x3859('0x29')]);_0x5a1ab3[_0x3859('0x2b')]=_[_0x3859('0x2c')](_0x15c0b2[_0x3859('0x2b')]);_0x5a1ab3[_0x3859('0x2d')]=_[_0x3859('0x2e')](_0x5a1ab3[_0x3859('0x2a')],_0x5a1ab3[_0x3859('0x2b')]);_0x1aeded['attributes']=_[_0x3859('0x2e')](_0x5a1ab3['model'],qs[_0x3859('0x2f')](_0x15c0b2[_0x3859('0x2b')][_0x3859('0x2f')]));_0x1aeded[_0x3859('0x30')]=_0x1aeded['attributes'][_0x3859('0x31')]?_0x1aeded[_0x3859('0x30')]:_0x5a1ab3['model'];if(_0x15c0b2[_0x3859('0x2b')][_0x3859('0x3c')]){_0x1aeded[_0x3859('0x3d')]=[{'all':!![]}];}_0x1aeded=_['merge']({},_0x1aeded,_0x15c0b2[_0x3859('0x3b')]);return db[_0x3859('0x28')]['find'](_0x1aeded)[_0x3859('0x21')](handleEntityNotFound(_0x4e8dd4,null))['then'](respondWithResult(_0x4e8dd4,null))[_0x3859('0x3e')](handleError(_0x4e8dd4,null));};exports[_0x3859('0x41')]=function(_0x3e08db,_0x50010d,_0xdeada4){return db[_0x3859('0x28')][_0x3859('0x42')]({'where':{'id':_0x3e08db['params']['id']},'attributes':[_0x3859('0x25'),_0x3859('0x43'),_0x3859('0x44')],'raw':!![]})[_0x3859('0x21')](handleEntityNotFound(_0x50010d,null))[_0x3859('0x21')](function(_0x39cfd8){if(_0x39cfd8){if(!fs['existsSync'](path[_0x3859('0x45')](config[_0x3859('0x46')],_0x3859('0x47'),_0x39cfd8['save_name']+'.'+_0x39cfd8[_0x3859('0x44')]))){throw new db[(_0x3859('0x48'))][(_0x3859('0x49'))]('Sound\x20not\x20found');}return _0x50010d[_0x3859('0x41')](path[_0x3859('0x45')](config[_0x3859('0x46')],_0x3859('0x47'),util[_0x3859('0x4a')]('%s.%s',_0x39cfd8['save_name'],_0x39cfd8['converted_format'])),util[_0x3859('0x4a')]('%s.%s',_0x39cfd8[_0x3859('0x25')],_0x39cfd8[_0x3859('0x44')]));}return null;})[_0x3859('0x3e')](handleError(_0x50010d,null));};exports[_0x3859('0x4b')]=function(_0x216051,_0x2310e3,_0x231e85){var _0x10fb2d={'name':path[_0x3859('0x4c')](_0x216051['file'][_0x3859('0x4d')],path['extname'](_0x216051['file']['originalname'])),'save_name':path[_0x3859('0x4c')](_0x216051['file'][_0x3859('0x4e')],path['extname'](_0x216051[_0x3859('0x4f')][_0x3859('0x4e')])),'original_format':path[_0x3859('0x50')](_0x216051[_0x3859('0x4f')][_0x3859('0x4d')])[_0x3859('0x51')](0x1),'converted_format':_0x3859('0x52')};var _0x639ba1=path[_0x3859('0x45')](config[_0x3859('0x46')],_0x3859('0x53'),_0x216051[_0x3859('0x4f')][_0x3859('0x4e')]);var _0x11a0f3=path[_0x3859('0x45')](config[_0x3859('0x46')],_0x3859('0x47'),util[_0x3859('0x4a')]('%s.%s',path[_0x3859('0x4c')](_0x216051['file']['filename'],path[_0x3859('0x50')](_0x216051[_0x3859('0x4f')][_0x3859('0x4e')])),_0x10fb2d[_0x3859('0x44')]));logger['info'](_0x3859('0x54'),_0x639ba1);logger[_0x3859('0x55')](_0x3859('0x56'),_0x11a0f3);try{fs[_0x3859('0x57')](_0x639ba1,parseInt(_0x3859('0x58'),0x8));var _0x3f0352=sox[_0x3859('0x59')](_0x639ba1,_0x11a0f3,{'sampleRate':0x1f40,'format':_0x3859('0x52'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x3f0352['on'](_0x3859('0x23'),function(_0xbf4428){fs[_0x3859('0x5a')](_0x639ba1);_0x2310e3[_0x3859('0x16')](0x1f4)['send'](_0xbf4428);});_0x3f0352['on'](_0x3859('0x5b'),function(_0x3d0280){_0x10fb2d[_0x3859('0x5c')]=isNaN(_0x3d0280[_0x3859('0x5d')])?null:_0x3d0280[_0x3859('0x5d')]*0x3e8;_0x10fb2d['original_sampleCount']=isNaN(_0x3d0280[_0x3859('0x5e')])?null:_0x3d0280[_0x3859('0x5e')];_0x10fb2d[_0x3859('0x5f')]=isNaN(_0x3d0280['channelCount'])?null:_0x3d0280[_0x3859('0x60')];_0x10fb2d[_0x3859('0x61')]=isNaN(_0x3d0280[_0x3859('0x62')])?null:_0x3d0280[_0x3859('0x62')];_0x10fb2d[_0x3859('0x63')]=isNaN(_0x3d0280[_0x3859('0x64')])?null:_0x3d0280[_0x3859('0x64')];});_0x3f0352['on'](_0x3859('0x65'),function(_0x23ee90){_0x10fb2d['converted_duration']=isNaN(_0x23ee90['duration'])?null:_0x23ee90[_0x3859('0x5d')]*0x3e8;_0x10fb2d[_0x3859('0x66')]=isNaN(_0x23ee90[_0x3859('0x5e')])?null:_0x23ee90[_0x3859('0x5e')];_0x10fb2d[_0x3859('0x67')]=isNaN(_0x23ee90[_0x3859('0x60')])?null:_0x23ee90[_0x3859('0x60')];_0x10fb2d[_0x3859('0x68')]=isNaN(_0x23ee90['bitRate'])?null:_0x23ee90['bitRate'];_0x10fb2d[_0x3859('0x69')]=isNaN(_0x23ee90[_0x3859('0x64')])?null:_0x23ee90[_0x3859('0x64')];});_0x3f0352['on'](_0x3859('0x17'),function(){fs[_0x3859('0x57')](_0x11a0f3,parseInt(_0x3859('0x58'),0x8));return db['Sound'][_0x3859('0x4b')](_0x10fb2d)[_0x3859('0x21')](function(_0x1ca2a5){var _0x3f8138={'role':_0x216051[_0x3859('0x6a')]['role'],'userProfileId':_0x216051[_0x3859('0x6a')][_0x3859('0x6b')]};if(!_0x3f8138)throw new Error(_0x3859('0x6c'));if(_0x3f8138['role']===_0x3859('0x6d')){var _0x1789f9=_0x1ca2a5[_0x3859('0x6e')]({'plain':!![]});return db[_0x3859('0x6f')][_0x3859('0x42')]({'where':{'name':_0x3859('0x70'),'userProfileId':_0x3f8138['userProfileId']},'raw':!![]})['then'](function(_0x7747d6){if(_0x7747d6&&_0x7747d6['autoAssociation']===0x0){return db['UserProfileResource'][_0x3859('0x4b')]({'name':_0x1789f9[_0x3859('0x25')],'resourceId':_0x1789f9['id'],'type':_0x7747d6[_0x3859('0x25')],'sectionId':_0x7747d6['id']},{})[_0x3859('0x21')](function(){return _0x1ca2a5;});}else{return _0x1ca2a5;}})[_0x3859('0x3e')](function(_0x34180f){logger[_0x3859('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x34180f);throw _0x34180f;});}return _0x1ca2a5;})['then'](respondWithResult(_0x2310e3,null))[_0x3859('0x3e')](handleError(_0x2310e3,null));});_0x3f0352['start']();}catch(_0x5a93ab){_0x2310e3[_0x3859('0x16')](0x1f4)[_0x3859('0x26')](_0x5a93ab);}};exports[_0x3859('0x71')]=function(_0x5a1738,_0x261dff,_0x7320a9){return db['Sound'][_0x3859('0x42')]({'where':{'id':_0x5a1738[_0x3859('0x40')]['id']}})[_0x3859('0x21')](handleEntityNotFound(_0x261dff,null))['then'](saveUpdates(_['pick'](_0x5a1738[_0x3859('0x6a')],[_0x3859('0x25'),_0x3859('0x72')]),null))['then'](respondWithResult(_0x261dff,null))[_0x3859('0x3e')](handleError(_0x261dff,null));};exports[_0x3859('0x73')]=function(_0x5279b3,_0x4e626f,_0x6c010e){return db[_0x3859('0x28')][_0x3859('0x42')]({'where':{'id':_0x5279b3['params']['id']}})[_0x3859('0x21')](function(_0x49faf6){if(_0x49faf6){return _0x49faf6[_0x3859('0x22')]();}})[_0x3859('0x21')](function(_0x293f17){var _0x98473d=path['join'](config[_0x3859('0x46')],_0x3859('0x53'),util[_0x3859('0x4a')](_0x3859('0x74'),_0x293f17[_0x3859('0x43')],_0x293f17[_0x3859('0x75')]));var _0x4b6faf=path[_0x3859('0x45')](config[_0x3859('0x46')],_0x3859('0x47'),util['format']('%s.%s',_0x293f17[_0x3859('0x43')],_0x293f17[_0x3859('0x44')]));fs[_0x3859('0x5a')](_0x98473d);fs[_0x3859('0x5a')](_0x4b6faf);return _0x293f17;})['then'](function(_0x5b13f8){if(_0x5b13f8){return _0x4e626f[_0x3859('0x16')](0xcc)[_0x3859('0x17')]();}})[_0x3859('0x21')](handleEntityNotFound(_0x4e626f,null))['catch'](handleError(_0x4e626f,null));};