8ba81c37d94f9a71a9c8748cb6b1b88f8e6378bc
[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 _0x58ae=['eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','Content-Range','apply','update','then','destroy','get','Sounds','UserProfileResource','sendStatus','error','stack','name','send','index','map','rawAttributes','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','Sound','includeAll','rows','catch','show','params','keys','include','find','download','save_name','converted_format','join','root','Sequelize','ValidationError','Sound\x20not\x20found','server/files/sounds/converted','format','%s.%s','create','basename','file','extname','originalname','filename','substring','wav','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','0777','transcode','unlinkSync','src','original_duration','duration','original_sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','sampleRate','dest','converted_duration','sampleCount','converted_channelCount','converted_sampleRate','chmodSync','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','start','pick','description','delete','original_format'];(function(_0x4266b4,_0x4859ad){var _0x1442aa=function(_0x21f8c1){while(--_0x21f8c1){_0x4266b4['push'](_0x4266b4['shift']());}};_0x1442aa(++_0x4859ad);}(_0x58ae,0xfe));var _0xe58a=function(_0xd10d51,_0x37eb56){_0xd10d51=_0xd10d51-0x0;var _0x5e7b61=_0x58ae[_0xd10d51];return _0x5e7b61;};'use strict';var emlformat=require(_0xe58a('0x0'));var rimraf=require(_0xe58a('0x1'));var zipdir=require(_0xe58a('0x2'));var jsonpatch=require(_0xe58a('0x3'));var rp=require(_0xe58a('0x4'));var moment=require(_0xe58a('0x5'));var BPromise=require(_0xe58a('0x6'));var Mustache=require(_0xe58a('0x7'));var util=require(_0xe58a('0x8'));var path=require(_0xe58a('0x9'));var sox=require('sox');var csv=require(_0xe58a('0xa'));var ejs=require(_0xe58a('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe58a('0xc'));var squel=require(_0xe58a('0xd'));var crypto=require(_0xe58a('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xe58a('0xa'));var querystring=require(_0xe58a('0xf'));var Papa=require(_0xe58a('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xe58a('0x11'));var as=require(_0xe58a('0x12'));var hardwareService=require(_0xe58a('0x13'));var logger=require(_0xe58a('0x14'))(_0xe58a('0x15'));var utils=require(_0xe58a('0x16'));var config=require(_0xe58a('0x17'));var licenseUtil=require(_0xe58a('0x18'));var db=require(_0xe58a('0x19'))['db'];function respondWithStatusCode(_0x458cf7,_0x56b7ef){_0x56b7ef=_0x56b7ef||0xcc;return function(_0x3ffb11){if(_0x3ffb11){return _0x458cf7['sendStatus'](_0x56b7ef);}return _0x458cf7[_0xe58a('0x1a')](_0x56b7ef)[_0xe58a('0x1b')]();};}function respondWithResult(_0x345fa6,_0x21e4d6){_0x21e4d6=_0x21e4d6||0xc8;return function(_0x5e5127){if(_0x5e5127){return _0x345fa6['status'](_0x21e4d6)[_0xe58a('0x1c')](_0x5e5127);}};}function respondWithFilteredResult(_0x40a7fd,_0x3c35d2){return function(_0x12580c){if(_0x12580c){var _0x3a173f=typeof _0x3c35d2[_0xe58a('0x1d')]===_0xe58a('0x1e')&&typeof _0x3c35d2['limit']==='undefined';var _0x4bc251=_0x12580c[_0xe58a('0x1f')];var _0x36c5b1=_0x3a173f?0x0:_0x3c35d2['offset'];var _0x444abd=_0x3a173f?_0x12580c[_0xe58a('0x1f')]:_0x3c35d2[_0xe58a('0x1d')]+_0x3c35d2[_0xe58a('0x20')];var _0x542cd2;if(_0x444abd>=_0x4bc251){_0x444abd=_0x4bc251;_0x542cd2=0xc8;}else{_0x542cd2=0xce;}_0x40a7fd['status'](_0x542cd2);return _0x40a7fd['set'](_0xe58a('0x21'),_0x36c5b1+'-'+_0x444abd+'/'+_0x4bc251)[_0xe58a('0x1c')](_0x12580c);}return null;};}function patchUpdates(_0x188d61){return function(_0x491f3f){try{jsonpatch[_0xe58a('0x22')](_0x491f3f,_0x188d61,!![]);}catch(_0x4cb4ba){return BPromise['reject'](_0x4cb4ba);}return _0x491f3f['save']();};}function saveUpdates(_0x305cad,_0x20c30d){return function(_0x2ab0f6){if(_0x2ab0f6){return _0x2ab0f6[_0xe58a('0x23')](_0x305cad)[_0xe58a('0x24')](function(_0x489d41){return _0x489d41;});}return null;};}function removeEntity(_0x203d18,_0x4e8d0f){return function(_0xa8a034){if(_0xa8a034){return _0xa8a034[_0xe58a('0x25')]()[_0xe58a('0x24')](function(){var _0x47d9fb=_0xa8a034[_0xe58a('0x26')]({'plain':!![]});var _0x3d65be=_0xe58a('0x27');return db[_0xe58a('0x28')][_0xe58a('0x25')]({'where':{'type':_0x3d65be,'resourceId':_0x47d9fb['id']}})['then'](function(){return _0xa8a034;});})[_0xe58a('0x24')](function(){_0x203d18['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ac71d,_0x42cf73){return function(_0x526cdd){if(!_0x526cdd){_0x4ac71d[_0xe58a('0x29')](0x194);}return _0x526cdd;};}function handleError(_0x542b24,_0x1181ad){_0x1181ad=_0x1181ad||0x1f4;return function(_0x988e3f){logger[_0xe58a('0x2a')](_0x988e3f[_0xe58a('0x2b')]);if(_0x988e3f[_0xe58a('0x2c')]){delete _0x988e3f[_0xe58a('0x2c')];}_0x542b24['status'](_0x1181ad)[_0xe58a('0x2d')](_0x988e3f);};}exports[_0xe58a('0x2e')]=function(_0x1e66b3,_0x432492){var _0x48e109={},_0xff60dc={},_0xbfb414={'count':0x0,'rows':[]};var _0x19232c=_[_0xe58a('0x2f')](db['Sound'][_0xe58a('0x30')],function(_0x578991){return{'name':_0x578991['fieldName'],'type':_0x578991[_0xe58a('0x31')][_0xe58a('0x32')]};});_0xff60dc['model']=_['map'](_0x19232c,_0xe58a('0x2c'));_0xff60dc[_0xe58a('0x33')]=_['keys'](_0x1e66b3[_0xe58a('0x33')]);_0xff60dc[_0xe58a('0x34')]=_[_0xe58a('0x35')](_0xff60dc[_0xe58a('0x36')],_0xff60dc[_0xe58a('0x33')]);_0x48e109[_0xe58a('0x37')]=_['intersection'](_0xff60dc[_0xe58a('0x36')],qs[_0xe58a('0x38')](_0x1e66b3['query']['fields']));_0x48e109[_0xe58a('0x37')]=_0x48e109[_0xe58a('0x37')][_0xe58a('0x39')]?_0x48e109[_0xe58a('0x37')]:_0xff60dc[_0xe58a('0x36')];if(!_0x1e66b3[_0xe58a('0x33')][_0xe58a('0x3a')](_0xe58a('0x3b'))){_0x48e109[_0xe58a('0x20')]=qs['limit'](_0x1e66b3['query']['limit']);_0x48e109['offset']=qs[_0xe58a('0x1d')](_0x1e66b3['query'][_0xe58a('0x1d')]);}_0x48e109['order']=qs[_0xe58a('0x3c')](_0x1e66b3[_0xe58a('0x33')]['sort']);_0x48e109[_0xe58a('0x3d')]=qs[_0xe58a('0x34')](_['pick'](_0x1e66b3[_0xe58a('0x33')],_0xff60dc[_0xe58a('0x34')]),_0x19232c);if(_0x1e66b3[_0xe58a('0x33')][_0xe58a('0x3e')]){_0x48e109[_0xe58a('0x3d')]=_[_0xe58a('0x3f')](_0x48e109[_0xe58a('0x3d')],{'$or':_['map'](_0x19232c,function(_0x5a881e){if(_0x5a881e['type']!==_0xe58a('0x40')){var _0x41d6d5={};_0x41d6d5[_0x5a881e[_0xe58a('0x2c')]]={'$like':'%'+_0x1e66b3[_0xe58a('0x33')]['filter']+'%'};return _0x41d6d5;}})});}_0x48e109=_[_0xe58a('0x3f')]({},_0x48e109,_0x1e66b3[_0xe58a('0x41')]);var _0x156e19={'where':_0x48e109[_0xe58a('0x3d')]};return db[_0xe58a('0x42')][_0xe58a('0x1f')](_0x156e19)[_0xe58a('0x24')](function(_0x49c5b8){_0xbfb414['count']=_0x49c5b8;if(_0x1e66b3[_0xe58a('0x33')][_0xe58a('0x43')]){_0x48e109['include']=[{'all':!![]}];}return db[_0xe58a('0x42')]['findAll'](_0x48e109);})['then'](function(_0x40876a){_0xbfb414[_0xe58a('0x44')]=_0x40876a;return _0xbfb414;})[_0xe58a('0x24')](respondWithFilteredResult(_0x432492,_0x48e109))[_0xe58a('0x45')](handleError(_0x432492,null));};exports[_0xe58a('0x46')]=function(_0x50149f,_0x127ea9){var _0x3fc483={'raw':!![],'where':{'id':_0x50149f[_0xe58a('0x47')]['id']}},_0xb63d40={};_0xb63d40['model']=_[_0xe58a('0x48')](db[_0xe58a('0x42')][_0xe58a('0x30')]);_0xb63d40[_0xe58a('0x33')]=_[_0xe58a('0x48')](_0x50149f['query']);_0xb63d40[_0xe58a('0x34')]=_[_0xe58a('0x35')](_0xb63d40[_0xe58a('0x36')],_0xb63d40['query']);_0x3fc483['attributes']=_[_0xe58a('0x35')](_0xb63d40['model'],qs[_0xe58a('0x38')](_0x50149f[_0xe58a('0x33')][_0xe58a('0x38')]));_0x3fc483[_0xe58a('0x37')]=_0x3fc483['attributes'][_0xe58a('0x39')]?_0x3fc483[_0xe58a('0x37')]:_0xb63d40['model'];if(_0x50149f['query']['includeAll']){_0x3fc483[_0xe58a('0x49')]=[{'all':!![]}];}_0x3fc483=_[_0xe58a('0x3f')]({},_0x3fc483,_0x50149f[_0xe58a('0x41')]);return db[_0xe58a('0x42')][_0xe58a('0x4a')](_0x3fc483)[_0xe58a('0x24')](handleEntityNotFound(_0x127ea9,null))[_0xe58a('0x24')](respondWithResult(_0x127ea9,null))[_0xe58a('0x45')](handleError(_0x127ea9,null));};exports[_0xe58a('0x4b')]=function(_0x2497b6,_0x4c366d,_0x3860e4){return db[_0xe58a('0x42')]['find']({'where':{'id':_0x2497b6[_0xe58a('0x47')]['id']},'attributes':[_0xe58a('0x2c'),_0xe58a('0x4c'),_0xe58a('0x4d')],'raw':!![]})[_0xe58a('0x24')](handleEntityNotFound(_0x4c366d,null))[_0xe58a('0x24')](function(_0x3482fa){if(_0x3482fa){if(!fs['existsSync'](path[_0xe58a('0x4e')](config[_0xe58a('0x4f')],'server/files/sounds/converted',_0x3482fa[_0xe58a('0x4c')]+'.'+_0x3482fa['converted_format']))){throw new db[(_0xe58a('0x50'))][(_0xe58a('0x51'))](_0xe58a('0x52'));}return _0x4c366d[_0xe58a('0x4b')](path[_0xe58a('0x4e')](config[_0xe58a('0x4f')],_0xe58a('0x53'),util[_0xe58a('0x54')](_0xe58a('0x55'),_0x3482fa['save_name'],_0x3482fa[_0xe58a('0x4d')])),util['format'](_0xe58a('0x55'),_0x3482fa['name'],_0x3482fa[_0xe58a('0x4d')]));}return null;})[_0xe58a('0x45')](handleError(_0x4c366d,null));};exports[_0xe58a('0x56')]=function(_0x2470b9,_0x2e6f3b,_0xa6b461){var _0x4681e7={'name':path[_0xe58a('0x57')](_0x2470b9[_0xe58a('0x58')]['originalname'],path[_0xe58a('0x59')](_0x2470b9[_0xe58a('0x58')][_0xe58a('0x5a')])),'save_name':path[_0xe58a('0x57')](_0x2470b9[_0xe58a('0x58')]['filename'],path[_0xe58a('0x59')](_0x2470b9['file'][_0xe58a('0x5b')])),'original_format':path[_0xe58a('0x59')](_0x2470b9[_0xe58a('0x58')][_0xe58a('0x5a')])[_0xe58a('0x5c')](0x1),'converted_format':_0xe58a('0x5d')};var _0x1aefe4=path['join'](config[_0xe58a('0x4f')],_0xe58a('0x5e'),_0x2470b9['file'][_0xe58a('0x5b')]);var _0x212c2e=path[_0xe58a('0x4e')](config[_0xe58a('0x4f')],_0xe58a('0x53'),util[_0xe58a('0x54')]('%s.%s',path[_0xe58a('0x57')](_0x2470b9['file']['filename'],path['extname'](_0x2470b9['file'][_0xe58a('0x5b')])),_0x4681e7[_0xe58a('0x4d')]));logger[_0xe58a('0x5f')](_0xe58a('0x60'),_0x1aefe4);logger['info'](_0xe58a('0x61'),_0x212c2e);try{fs['chmodSync'](_0x1aefe4,parseInt(_0xe58a('0x62'),0x8));var _0x322b7a=sox[_0xe58a('0x63')](_0x1aefe4,_0x212c2e,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x322b7a['on'](_0xe58a('0x2a'),function(_0xcb6b6){fs[_0xe58a('0x64')](_0x1aefe4);_0x2e6f3b[_0xe58a('0x1a')](0x1f4)['send'](_0xcb6b6);});_0x322b7a['on'](_0xe58a('0x65'),function(_0x32a974){_0x4681e7[_0xe58a('0x66')]=isNaN(_0x32a974['duration'])?null:_0x32a974[_0xe58a('0x67')]*0x3e8;_0x4681e7[_0xe58a('0x68')]=isNaN(_0x32a974['sampleCount'])?null:_0x32a974['sampleCount'];_0x4681e7[_0xe58a('0x69')]=isNaN(_0x32a974[_0xe58a('0x6a')])?null:_0x32a974['channelCount'];_0x4681e7[_0xe58a('0x6b')]=isNaN(_0x32a974[_0xe58a('0x6c')])?null:_0x32a974['bitRate'];_0x4681e7['original_sampleRate']=isNaN(_0x32a974['sampleRate'])?null:_0x32a974[_0xe58a('0x6d')];});_0x322b7a['on'](_0xe58a('0x6e'),function(_0x54bb71){_0x4681e7[_0xe58a('0x6f')]=isNaN(_0x54bb71[_0xe58a('0x67')])?null:_0x54bb71['duration']*0x3e8;_0x4681e7['converted_sampleCount']=isNaN(_0x54bb71[_0xe58a('0x70')])?null:_0x54bb71['sampleCount'];_0x4681e7[_0xe58a('0x71')]=isNaN(_0x54bb71[_0xe58a('0x6a')])?null:_0x54bb71[_0xe58a('0x6a')];_0x4681e7['converted_bitRate']=isNaN(_0x54bb71['bitRate'])?null:_0x54bb71['bitRate'];_0x4681e7[_0xe58a('0x72')]=isNaN(_0x54bb71[_0xe58a('0x6d')])?null:_0x54bb71['sampleRate'];});_0x322b7a['on']('end',function(){fs[_0xe58a('0x73')](_0x212c2e,parseInt(_0xe58a('0x62'),0x8));return db['Sound'][_0xe58a('0x56')](_0x4681e7)['then'](function(_0x3b0ee1){var _0x238e60={'role':_0x2470b9[_0xe58a('0x74')][_0xe58a('0x75')],'userProfileId':_0x2470b9[_0xe58a('0x74')][_0xe58a('0x76')]};if(!_0x238e60)throw new Error(_0xe58a('0x77'));if(_0x238e60[_0xe58a('0x75')]==='user'){var _0x526bb1=_0x3b0ee1['get']({'plain':!![]});return db[_0xe58a('0x78')][_0xe58a('0x4a')]({'where':{'name':_0xe58a('0x27'),'userProfileId':_0x238e60['userProfileId']},'raw':!![]})[_0xe58a('0x24')](function(_0x45a0c4){if(_0x45a0c4&&_0x45a0c4[_0xe58a('0x79')]===0x0){return db[_0xe58a('0x28')]['create']({'name':_0x526bb1['name'],'resourceId':_0x526bb1['id'],'type':_0x45a0c4['name'],'sectionId':_0x45a0c4['id']},{})[_0xe58a('0x24')](function(){return _0x3b0ee1;});}else{return _0x3b0ee1;}})[_0xe58a('0x45')](function(_0xf744ee){logger[_0xe58a('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xf744ee);throw _0xf744ee;});}return _0x3b0ee1;})[_0xe58a('0x24')](respondWithResult(_0x2e6f3b,null))[_0xe58a('0x45')](handleError(_0x2e6f3b,null));});_0x322b7a[_0xe58a('0x7a')]();}catch(_0xcd9ebd){_0x2e6f3b['status'](0x1f4)[_0xe58a('0x2d')](_0xcd9ebd);}};exports['update']=function(_0x2ac648,_0x14961b,_0x343c40){return db['Sound'][_0xe58a('0x4a')]({'where':{'id':_0x2ac648[_0xe58a('0x47')]['id']}})[_0xe58a('0x24')](handleEntityNotFound(_0x14961b,null))[_0xe58a('0x24')](saveUpdates(_[_0xe58a('0x7b')](_0x2ac648[_0xe58a('0x74')],[_0xe58a('0x2c'),_0xe58a('0x7c')]),null))[_0xe58a('0x24')](respondWithResult(_0x14961b,null))[_0xe58a('0x45')](handleError(_0x14961b,null));};exports[_0xe58a('0x7d')]=function(_0x46b1f6,_0x1c2686,_0x5b32c0){return db[_0xe58a('0x42')][_0xe58a('0x4a')]({'where':{'id':_0x46b1f6[_0xe58a('0x47')]['id']}})['then'](function(_0x43d8c0){if(_0x43d8c0){return _0x43d8c0[_0xe58a('0x25')]();}})[_0xe58a('0x24')](function(_0x477407){var _0x429df8=path[_0xe58a('0x4e')](config[_0xe58a('0x4f')],_0xe58a('0x5e'),util[_0xe58a('0x54')]('%s.%s',_0x477407[_0xe58a('0x4c')],_0x477407[_0xe58a('0x7e')]));var _0x3532ee=path[_0xe58a('0x4e')](config[_0xe58a('0x4f')],_0xe58a('0x53'),util[_0xe58a('0x54')]('%s.%s',_0x477407[_0xe58a('0x4c')],_0x477407['converted_format']));fs['unlinkSync'](_0x429df8);fs[_0xe58a('0x64')](_0x3532ee);return _0x477407;})['then'](function(_0x23020a){if(_0x23020a){return _0x1c2686[_0xe58a('0x1a')](0xcc)[_0xe58a('0x1b')]();}})[_0xe58a('0x24')](handleEntityNotFound(_0x1c2686,null))[_0xe58a('0x45')](handleError(_0x1c2686,null));};