1321118ff76866e04239428bf00007601ca22323
[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 _0x795b=['%s.%s','create','basename','file','originalname','extname','filename','substring','wav','info','0777','transcode','unlinkSync','src','original_duration','duration','original_sampleCount','original_channelCount','channelCount','bitRate','original_sampleRate','sampleRate','dest','converted_sampleCount','sampleCount','converted_channelCount','converted_bitRate','converted_sampleRate','chmodSync','body','role','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','description','delete','server/files/sounds/original','original_format','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','offset','count','set','apply','reject','save','update','destroy','then','get','Sounds','end','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','type','VIRTUAL','includeAll','include','Sound','findAll','rows','keys','options','find','catch','download','save_name','converted_format','existsSync','join','root','server/files/sounds/converted','Sequelize','ValidationError','format'];(function(_0x3ce2c4,_0x4544c1){var _0x4047c1=function(_0x3fece6){while(--_0x3fece6){_0x3ce2c4['push'](_0x3ce2c4['shift']());}};_0x4047c1(++_0x4544c1);}(_0x795b,0x1b8));var _0xb795=function(_0x35308d,_0x5bedbd){_0x35308d=_0x35308d-0x0;var _0x431fb6=_0x795b[_0x35308d];return _0x431fb6;};'use strict';var emlformat=require(_0xb795('0x0'));var rimraf=require(_0xb795('0x1'));var zipdir=require(_0xb795('0x2'));var jsonpatch=require(_0xb795('0x3'));var rp=require(_0xb795('0x4'));var moment=require(_0xb795('0x5'));var BPromise=require(_0xb795('0x6'));var Mustache=require(_0xb795('0x7'));var util=require(_0xb795('0x8'));var path=require(_0xb795('0x9'));var sox=require(_0xb795('0xa'));var csv=require(_0xb795('0xb'));var ejs=require(_0xb795('0xc'));var fs=require('fs');var fs_extra=require(_0xb795('0xd'));var _=require(_0xb795('0xe'));var squel=require(_0xb795('0xf'));var crypto=require(_0xb795('0x10'));var jsforce=require(_0xb795('0x11'));var deskjs=require(_0xb795('0x12'));var toCsv=require(_0xb795('0xb'));var querystring=require(_0xb795('0x13'));var Papa=require(_0xb795('0x14'));var Redis=require(_0xb795('0x15'));var authService=require(_0xb795('0x16'));var qs=require('../../components/parsers/qs');var as=require(_0xb795('0x17'));var hardwareService=require(_0xb795('0x18'));var logger=require(_0xb795('0x19'))(_0xb795('0x1a'));var utils=require(_0xb795('0x1b'));var config=require(_0xb795('0x1c'));var licenseUtil=require(_0xb795('0x1d'));var db=require(_0xb795('0x1e'))['db'];function respondWithStatusCode(_0x2faf20,_0x40c4b8){_0x40c4b8=_0x40c4b8||0xcc;return function(_0x56759a){if(_0x56759a){return _0x2faf20[_0xb795('0x1f')](_0x40c4b8);}return _0x2faf20[_0xb795('0x20')](_0x40c4b8)['end']();};}function respondWithResult(_0x3413d5,_0x32a123){_0x32a123=_0x32a123||0xc8;return function(_0x54bbbf){if(_0x54bbbf){return _0x3413d5[_0xb795('0x20')](_0x32a123)[_0xb795('0x21')](_0x54bbbf);}};}function respondWithFilteredResult(_0x3cb582,_0xa7af6e){return function(_0x5dd896){if(_0x5dd896){var _0xa93bd=typeof _0xa7af6e['offset']===_0xb795('0x22')&&typeof _0xa7af6e[_0xb795('0x23')]===_0xb795('0x22');var _0x171ac1=_0x5dd896['count'];var _0x509644=_0xa93bd?0x0:_0xa7af6e[_0xb795('0x24')];var _0x330df3=_0xa93bd?_0x5dd896[_0xb795('0x25')]:_0xa7af6e[_0xb795('0x24')]+_0xa7af6e['limit'];var _0x75ba9a;if(_0x330df3>=_0x171ac1){_0x330df3=_0x171ac1;_0x75ba9a=0xc8;}else{_0x75ba9a=0xce;}_0x3cb582[_0xb795('0x20')](_0x75ba9a);return _0x3cb582[_0xb795('0x26')]('Content-Range',_0x509644+'-'+_0x330df3+'/'+_0x171ac1)[_0xb795('0x21')](_0x5dd896);}return null;};}function patchUpdates(_0x2abc76){return function(_0x4edaa8){try{jsonpatch[_0xb795('0x27')](_0x4edaa8,_0x2abc76,!![]);}catch(_0x2c3a60){return BPromise[_0xb795('0x28')](_0x2c3a60);}return _0x4edaa8[_0xb795('0x29')]();};}function saveUpdates(_0x4c9f2b,_0x3313af){return function(_0xceeb81){if(_0xceeb81){return _0xceeb81[_0xb795('0x2a')](_0x4c9f2b)['then'](function(_0x14cbce){return _0x14cbce;});}return null;};}function removeEntity(_0x59c6a4,_0x2f38d1){return function(_0x15f5d4){if(_0x15f5d4){return _0x15f5d4[_0xb795('0x2b')]()[_0xb795('0x2c')](function(){var _0x4ae6b3=_0x15f5d4[_0xb795('0x2d')]({'plain':!![]});var _0x5b4821=_0xb795('0x2e');return db['UserProfileResource'][_0xb795('0x2b')]({'where':{'type':_0x5b4821,'resourceId':_0x4ae6b3['id']}})['then'](function(){return _0x15f5d4;});})[_0xb795('0x2c')](function(){_0x59c6a4[_0xb795('0x20')](0xcc)[_0xb795('0x2f')]();});}};}function handleEntityNotFound(_0x46ef93,_0x200bdc){return function(_0x2b4711){if(!_0x2b4711){_0x46ef93[_0xb795('0x1f')](0x194);}return _0x2b4711;};}function handleError(_0x4d51ae,_0x1bbd93){_0x1bbd93=_0x1bbd93||0x1f4;return function(_0x3c33af){logger[_0xb795('0x30')](_0x3c33af[_0xb795('0x31')]);if(_0x3c33af[_0xb795('0x32')]){delete _0x3c33af['name'];}_0x4d51ae['status'](_0x1bbd93)[_0xb795('0x33')](_0x3c33af);};}exports[_0xb795('0x34')]=function(_0x2beee4,_0x52175e){var _0x1ad820={},_0x2ef3dc={},_0x17c3e2={'count':0x0,'rows':[]};var _0xf5f39c=_[_0xb795('0x35')](db['Sound'][_0xb795('0x36')],function(_0x57c1cd){return{'name':_0x57c1cd[_0xb795('0x37')],'type':_0x57c1cd['type'][_0xb795('0x38')]};});_0x2ef3dc[_0xb795('0x39')]=_[_0xb795('0x35')](_0xf5f39c,'name');_0x2ef3dc[_0xb795('0x3a')]=_['keys'](_0x2beee4[_0xb795('0x3a')]);_0x2ef3dc['filters']=_['intersection'](_0x2ef3dc[_0xb795('0x39')],_0x2ef3dc[_0xb795('0x3a')]);_0x1ad820[_0xb795('0x3b')]=_[_0xb795('0x3c')](_0x2ef3dc['model'],qs[_0xb795('0x3d')](_0x2beee4[_0xb795('0x3a')][_0xb795('0x3d')]));_0x1ad820['attributes']=_0x1ad820[_0xb795('0x3b')][_0xb795('0x3e')]?_0x1ad820[_0xb795('0x3b')]:_0x2ef3dc[_0xb795('0x39')];if(!_0x2beee4[_0xb795('0x3a')][_0xb795('0x3f')](_0xb795('0x40'))){_0x1ad820['limit']=qs['limit'](_0x2beee4[_0xb795('0x3a')][_0xb795('0x23')]);_0x1ad820[_0xb795('0x24')]=qs[_0xb795('0x24')](_0x2beee4['query']['offset']);}_0x1ad820['order']=qs[_0xb795('0x41')](_0x2beee4['query'][_0xb795('0x41')]);_0x1ad820[_0xb795('0x42')]=qs[_0xb795('0x43')](_[_0xb795('0x44')](_0x2beee4[_0xb795('0x3a')],_0x2ef3dc[_0xb795('0x43')]),_0xf5f39c);if(_0x2beee4[_0xb795('0x3a')][_0xb795('0x45')]){_0x1ad820['where']=_[_0xb795('0x46')](_0x1ad820[_0xb795('0x42')],{'$or':_['map'](_0xf5f39c,function(_0x271a0f){if(_0x271a0f[_0xb795('0x47')]!==_0xb795('0x48')){var _0x3cdd3f={};_0x3cdd3f[_0x271a0f[_0xb795('0x32')]]={'$like':'%'+_0x2beee4['query'][_0xb795('0x45')]+'%'};return _0x3cdd3f;}})});}_0x1ad820=_[_0xb795('0x46')]({},_0x1ad820,_0x2beee4['options']);var _0x8d4ddf={'where':_0x1ad820[_0xb795('0x42')]};return db['Sound'][_0xb795('0x25')](_0x8d4ddf)[_0xb795('0x2c')](function(_0x335fe9){_0x17c3e2['count']=_0x335fe9;if(_0x2beee4[_0xb795('0x3a')][_0xb795('0x49')]){_0x1ad820[_0xb795('0x4a')]=[{'all':!![]}];}return db[_0xb795('0x4b')][_0xb795('0x4c')](_0x1ad820);})[_0xb795('0x2c')](function(_0x4fbd84){_0x17c3e2[_0xb795('0x4d')]=_0x4fbd84;return _0x17c3e2;})['then'](respondWithFilteredResult(_0x52175e,_0x1ad820))['catch'](handleError(_0x52175e,null));};exports['show']=function(_0x19a9a2,_0x107e1d){var _0x561c80={'raw':!![],'where':{'id':_0x19a9a2['params']['id']}},_0x2565b5={};_0x2565b5[_0xb795('0x39')]=_[_0xb795('0x4e')](db[_0xb795('0x4b')][_0xb795('0x36')]);_0x2565b5[_0xb795('0x3a')]=_[_0xb795('0x4e')](_0x19a9a2['query']);_0x2565b5['filters']=_[_0xb795('0x3c')](_0x2565b5[_0xb795('0x39')],_0x2565b5[_0xb795('0x3a')]);_0x561c80[_0xb795('0x3b')]=_['intersection'](_0x2565b5[_0xb795('0x39')],qs['fields'](_0x19a9a2[_0xb795('0x3a')][_0xb795('0x3d')]));_0x561c80[_0xb795('0x3b')]=_0x561c80[_0xb795('0x3b')][_0xb795('0x3e')]?_0x561c80[_0xb795('0x3b')]:_0x2565b5[_0xb795('0x39')];if(_0x19a9a2[_0xb795('0x3a')][_0xb795('0x49')]){_0x561c80[_0xb795('0x4a')]=[{'all':!![]}];}_0x561c80=_[_0xb795('0x46')]({},_0x561c80,_0x19a9a2[_0xb795('0x4f')]);return db[_0xb795('0x4b')][_0xb795('0x50')](_0x561c80)[_0xb795('0x2c')](handleEntityNotFound(_0x107e1d,null))[_0xb795('0x2c')](respondWithResult(_0x107e1d,null))[_0xb795('0x51')](handleError(_0x107e1d,null));};exports[_0xb795('0x52')]=function(_0x38b521,_0x1030dd,_0xfbed48){return db[_0xb795('0x4b')]['find']({'where':{'id':_0x38b521['params']['id']},'attributes':[_0xb795('0x32'),_0xb795('0x53'),_0xb795('0x54')],'raw':!![]})[_0xb795('0x2c')](handleEntityNotFound(_0x1030dd,null))[_0xb795('0x2c')](function(_0x964d28){if(_0x964d28){if(!fs[_0xb795('0x55')](path[_0xb795('0x56')](config[_0xb795('0x57')],_0xb795('0x58'),_0x964d28[_0xb795('0x53')]+'.'+_0x964d28['converted_format']))){throw new db[(_0xb795('0x59'))][(_0xb795('0x5a'))]('Sound\x20not\x20found');}return _0x1030dd[_0xb795('0x52')](path['join'](config[_0xb795('0x57')],_0xb795('0x58'),util[_0xb795('0x5b')](_0xb795('0x5c'),_0x964d28[_0xb795('0x53')],_0x964d28[_0xb795('0x54')])),util[_0xb795('0x5b')](_0xb795('0x5c'),_0x964d28['name'],_0x964d28[_0xb795('0x54')]));}return null;})[_0xb795('0x51')](handleError(_0x1030dd,null));};exports[_0xb795('0x5d')]=function(_0x34ed7c,_0x270d9e,_0x355010){var _0x449ec0={'name':path[_0xb795('0x5e')](_0x34ed7c[_0xb795('0x5f')][_0xb795('0x60')],path[_0xb795('0x61')](_0x34ed7c['file'][_0xb795('0x60')])),'save_name':path[_0xb795('0x5e')](_0x34ed7c[_0xb795('0x5f')][_0xb795('0x62')],path['extname'](_0x34ed7c[_0xb795('0x5f')][_0xb795('0x62')])),'original_format':path[_0xb795('0x61')](_0x34ed7c['file']['originalname'])[_0xb795('0x63')](0x1),'converted_format':_0xb795('0x64')};var _0x1c6a33=path[_0xb795('0x56')](config[_0xb795('0x57')],'server/files/sounds/original',_0x34ed7c[_0xb795('0x5f')]['filename']);var _0x1b7485=path['join'](config[_0xb795('0x57')],'server/files/sounds/converted',util[_0xb795('0x5b')](_0xb795('0x5c'),path[_0xb795('0x5e')](_0x34ed7c['file'][_0xb795('0x62')],path['extname'](_0x34ed7c[_0xb795('0x5f')][_0xb795('0x62')])),_0x449ec0['converted_format']));logger[_0xb795('0x65')]('Sound\x20upload\x20filepath:\x20%s',_0x1c6a33);logger['info']('Sound\x20upload\x20destination:\x20%s',_0x1b7485);try{fs['chmodSync'](_0x1c6a33,parseInt(_0xb795('0x66'),0x8));var _0x441a22=sox[_0xb795('0x67')](_0x1c6a33,_0x1b7485,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x441a22['on'](_0xb795('0x30'),function(_0x11d146){fs[_0xb795('0x68')](_0x1c6a33);_0x270d9e[_0xb795('0x20')](0x1f4)[_0xb795('0x33')](_0x11d146);});_0x441a22['on'](_0xb795('0x69'),function(_0x1edfa5){_0x449ec0[_0xb795('0x6a')]=isNaN(_0x1edfa5[_0xb795('0x6b')])?null:_0x1edfa5[_0xb795('0x6b')]*0x3e8;_0x449ec0[_0xb795('0x6c')]=isNaN(_0x1edfa5['sampleCount'])?null:_0x1edfa5['sampleCount'];_0x449ec0[_0xb795('0x6d')]=isNaN(_0x1edfa5['channelCount'])?null:_0x1edfa5[_0xb795('0x6e')];_0x449ec0['original_bitRate']=isNaN(_0x1edfa5['bitRate'])?null:_0x1edfa5[_0xb795('0x6f')];_0x449ec0[_0xb795('0x70')]=isNaN(_0x1edfa5['sampleRate'])?null:_0x1edfa5[_0xb795('0x71')];});_0x441a22['on'](_0xb795('0x72'),function(_0x2a33d5){_0x449ec0['converted_duration']=isNaN(_0x2a33d5[_0xb795('0x6b')])?null:_0x2a33d5[_0xb795('0x6b')]*0x3e8;_0x449ec0[_0xb795('0x73')]=isNaN(_0x2a33d5[_0xb795('0x74')])?null:_0x2a33d5[_0xb795('0x74')];_0x449ec0[_0xb795('0x75')]=isNaN(_0x2a33d5[_0xb795('0x6e')])?null:_0x2a33d5[_0xb795('0x6e')];_0x449ec0[_0xb795('0x76')]=isNaN(_0x2a33d5['bitRate'])?null:_0x2a33d5[_0xb795('0x6f')];_0x449ec0[_0xb795('0x77')]=isNaN(_0x2a33d5[_0xb795('0x71')])?null:_0x2a33d5[_0xb795('0x71')];});_0x441a22['on'](_0xb795('0x2f'),function(){fs[_0xb795('0x78')](_0x1b7485,parseInt(_0xb795('0x66'),0x8));return db[_0xb795('0x4b')][_0xb795('0x5d')](_0x449ec0)[_0xb795('0x2c')](function(_0x30d15d){var _0x8467ec={'role':_0x34ed7c[_0xb795('0x79')][_0xb795('0x7a')],'userProfileId':_0x34ed7c[_0xb795('0x79')]['userProfileId']};if(!_0x8467ec)throw new Error(_0xb795('0x7b'));if(_0x8467ec[_0xb795('0x7a')]===_0xb795('0x7c')){var _0x40d557=_0x30d15d[_0xb795('0x2d')]({'plain':!![]});return db[_0xb795('0x7d')][_0xb795('0x50')]({'where':{'name':_0xb795('0x2e'),'userProfileId':_0x8467ec[_0xb795('0x7e')]},'raw':!![]})[_0xb795('0x2c')](function(_0x4321f6){if(_0x4321f6&&_0x4321f6['autoAssociation']===0x0){return db[_0xb795('0x7f')][_0xb795('0x5d')]({'name':_0x40d557[_0xb795('0x32')],'resourceId':_0x40d557['id'],'type':_0x4321f6[_0xb795('0x32')],'sectionId':_0x4321f6['id']},{})[_0xb795('0x2c')](function(){return _0x30d15d;});}else{return _0x30d15d;}})[_0xb795('0x51')](function(_0x4e6862){logger[_0xb795('0x30')](_0xb795('0x80'),_0x4e6862);throw _0x4e6862;});}return _0x30d15d;})['then'](respondWithResult(_0x270d9e,null))[_0xb795('0x51')](handleError(_0x270d9e,null));});_0x441a22['start']();}catch(_0x2e7303){_0x270d9e[_0xb795('0x20')](0x1f4)[_0xb795('0x33')](_0x2e7303);}};exports['update']=function(_0x5be600,_0x1c5afc,_0x5908a8){return db[_0xb795('0x4b')]['find']({'where':{'id':_0x5be600['params']['id']}})['then'](handleEntityNotFound(_0x1c5afc,null))[_0xb795('0x2c')](saveUpdates(_['pick'](_0x5be600[_0xb795('0x79')],[_0xb795('0x32'),_0xb795('0x81')]),null))[_0xb795('0x2c')](respondWithResult(_0x1c5afc,null))[_0xb795('0x51')](handleError(_0x1c5afc,null));};exports[_0xb795('0x82')]=function(_0x24834c,_0x395166,_0x128eb7){return db[_0xb795('0x4b')][_0xb795('0x50')]({'where':{'id':_0x24834c['params']['id']}})[_0xb795('0x2c')](function(_0xae634f){if(_0xae634f){return _0xae634f[_0xb795('0x2b')]();}})['then'](function(_0x36078e){var _0xdb9bd2=path['join'](config[_0xb795('0x57')],_0xb795('0x83'),util[_0xb795('0x5b')]('%s.%s',_0x36078e[_0xb795('0x53')],_0x36078e[_0xb795('0x84')]));var _0x32a5a1=path[_0xb795('0x56')](config[_0xb795('0x57')],_0xb795('0x58'),util[_0xb795('0x5b')](_0xb795('0x5c'),_0x36078e[_0xb795('0x53')],_0x36078e[_0xb795('0x54')]));fs[_0xb795('0x68')](_0xdb9bd2);fs['unlinkSync'](_0x32a5a1);return _0x36078e;})[_0xb795('0x2c')](function(_0xfc7f4a){if(_0xfc7f4a){return _0x395166[_0xb795('0x20')](0xcc)[_0xb795('0x2f')]();}})[_0xb795('0x2c')](handleEntityNotFound(_0x395166,null))[_0xb795('0x51')](handleError(_0x395166,null));};