fee59686d7c21426a80b6a9a59c93dfd894dbe2c
[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 _0x80d3=['../../config/license/util','sendStatus','end','status','json','offset','set','Content-Range','apply','reject','save','update','destroy','then','get','Sounds','error','name','send','index','Sound','rawAttributes','type','model','map','keys','query','filters','intersection','fields','attributes','length','nolimit','limit','order','sort','pick','filter','merge','VIRTUAL','options','where','include','findAll','rows','catch','show','params','download','find','save_name','converted_format','join','root','server/files/sounds/converted','ValidationError','Sound\x20not\x20found','format','%s.%s','create','file','originalname','basename','filename','extname','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','unlinkSync','src','original_duration','duration','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_channelCount','converted_bitRate','body','role','user','userProfileId','autoAssociation','UserProfileResource','start','description','original_format','html-pdf','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0x18607c,_0x3628b8){var _0x5bc081=function(_0x2075b2){while(--_0x2075b2){_0x18607c['push'](_0x18607c['shift']());}};_0x5bc081(++_0x3628b8);}(_0x80d3,0x1ca));var _0x380d=function(_0x55a8b5,_0x18a413){_0x55a8b5=_0x55a8b5-0x0;var _0x1ddc06=_0x80d3[_0x55a8b5];return _0x1ddc06;};'use strict';var pdf=require(_0x380d('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x380d('0x1'));var zipdir=require(_0x380d('0x2'));var jsonpatch=require(_0x380d('0x3'));var rp=require(_0x380d('0x4'));var moment=require(_0x380d('0x5'));var BPromise=require(_0x380d('0x6'));var Mustache=require(_0x380d('0x7'));var util=require(_0x380d('0x8'));var path=require('path');var sox=require(_0x380d('0x9'));var csv=require(_0x380d('0xa'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x380d('0xb'));var squel=require(_0x380d('0xc'));var crypto=require('crypto');var jsforce=require(_0x380d('0xd'));var deskjs=require(_0x380d('0xe'));var toCsv=require(_0x380d('0xa'));var querystring=require(_0x380d('0xf'));var Papa=require(_0x380d('0x10'));var Redis=require(_0x380d('0x11'));var authService=require(_0x380d('0x12'));var qs=require(_0x380d('0x13'));var as=require(_0x380d('0x14'));var hardwareService=require(_0x380d('0x15'));var logger=require(_0x380d('0x16'))(_0x380d('0x17'));var utils=require(_0x380d('0x18'));var config=require(_0x380d('0x19'));var licenseUtil=require(_0x380d('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x51b944,_0x56fa01){_0x56fa01=_0x56fa01||0xcc;return function(_0x36080d){if(_0x36080d){return _0x51b944[_0x380d('0x1b')](_0x56fa01);}return _0x51b944['status'](_0x56fa01)[_0x380d('0x1c')]();};}function respondWithResult(_0xea75e9,_0x36cde7){_0x36cde7=_0x36cde7||0xc8;return function(_0x3148e4){if(_0x3148e4){return _0xea75e9[_0x380d('0x1d')](_0x36cde7)[_0x380d('0x1e')](_0x3148e4);}};}function respondWithFilteredResult(_0x4b22a0,_0x15d306){return function(_0x3bbd10){if(_0x3bbd10){var _0x3bae03=_0x3bbd10['count'],_0x384199=_0x15d306['offset'],_0x398421=_0x15d306[_0x380d('0x1f')]+_0x15d306['limit'],_0x4ef34e;if(_0x398421>=_0x3bae03){_0x398421=_0x3bae03;_0x4ef34e=0xc8;}else{_0x4ef34e=0xce;}_0x4b22a0['status'](_0x4ef34e);return _0x4b22a0[_0x380d('0x20')](_0x380d('0x21'),_0x384199+'-'+_0x398421+'/'+_0x3bae03)['json'](_0x3bbd10);}return null;};}function patchUpdates(_0x2f1c5d){return function(_0x818b2){try{jsonpatch[_0x380d('0x22')](_0x818b2,_0x2f1c5d,!![]);}catch(_0x18e6ca){return BPromise[_0x380d('0x23')](_0x18e6ca);}return _0x818b2[_0x380d('0x24')]();};}function saveUpdates(_0xafc2ff,_0x48f746){return function(_0x2dce5f){if(_0x2dce5f){return _0x2dce5f[_0x380d('0x25')](_0xafc2ff)['then'](function(_0x325ee5){return _0x325ee5;});}return null;};}function removeEntity(_0x56431f,_0x3998e8){return function(_0x5952a7){if(_0x5952a7){return _0x5952a7[_0x380d('0x26')]()[_0x380d('0x27')](function(){var _0x3b9409=_0x5952a7[_0x380d('0x28')]({'plain':!![]});var _0x20b5e5=_0x380d('0x29');return db['UserProfileResource'][_0x380d('0x26')]({'where':{'type':_0x20b5e5,'resourceId':_0x3b9409['id']}})['then'](function(){return _0x5952a7;});})[_0x380d('0x27')](function(){_0x56431f[_0x380d('0x1d')](0xcc)[_0x380d('0x1c')]();});}};}function handleEntityNotFound(_0xacdca3,_0x4a693a){return function(_0x5ddfa2){if(!_0x5ddfa2){_0xacdca3[_0x380d('0x1b')](0x194);}return _0x5ddfa2;};}function handleError(_0x1e7a18,_0x500a71){_0x500a71=_0x500a71||0x1f4;return function(_0x5bfc3d){logger[_0x380d('0x2a')](_0x5bfc3d['stack']);if(_0x5bfc3d[_0x380d('0x2b')]){delete _0x5bfc3d[_0x380d('0x2b')];}_0x1e7a18[_0x380d('0x1d')](_0x500a71)[_0x380d('0x2c')](_0x5bfc3d);};}exports[_0x380d('0x2d')]=function(_0x15e5d2,_0x4ebf24){var _0x189755={},_0x5a9ba8={},_0x277eec={'count':0x0,'rows':[]};var _0x5ddf6c=_['map'](db[_0x380d('0x2e')][_0x380d('0x2f')],function(_0x48cf01){return{'name':_0x48cf01['fieldName'],'type':_0x48cf01[_0x380d('0x30')]['key']};});_0x5a9ba8[_0x380d('0x31')]=_[_0x380d('0x32')](_0x5ddf6c,_0x380d('0x2b'));_0x5a9ba8['query']=_[_0x380d('0x33')](_0x15e5d2[_0x380d('0x34')]);_0x5a9ba8[_0x380d('0x35')]=_['intersection'](_0x5a9ba8[_0x380d('0x31')],_0x5a9ba8[_0x380d('0x34')]);_0x189755['attributes']=_[_0x380d('0x36')](_0x5a9ba8[_0x380d('0x31')],qs[_0x380d('0x37')](_0x15e5d2['query'][_0x380d('0x37')]));_0x189755[_0x380d('0x38')]=_0x189755[_0x380d('0x38')][_0x380d('0x39')]?_0x189755['attributes']:_0x5a9ba8[_0x380d('0x31')];if(!_0x15e5d2[_0x380d('0x34')]['hasOwnProperty'](_0x380d('0x3a'))){_0x189755[_0x380d('0x3b')]=qs[_0x380d('0x3b')](_0x15e5d2['query'][_0x380d('0x3b')]);_0x189755['offset']=qs[_0x380d('0x1f')](_0x15e5d2[_0x380d('0x34')][_0x380d('0x1f')]);}_0x189755[_0x380d('0x3c')]=qs[_0x380d('0x3d')](_0x15e5d2[_0x380d('0x34')][_0x380d('0x3d')]);_0x189755['where']=qs[_0x380d('0x35')](_[_0x380d('0x3e')](_0x15e5d2[_0x380d('0x34')],_0x5a9ba8['filters']),_0x5ddf6c);if(_0x15e5d2[_0x380d('0x34')][_0x380d('0x3f')]){_0x189755['where']=_[_0x380d('0x40')](_0x189755['where'],{'$or':_[_0x380d('0x32')](_0x5ddf6c,function(_0x29cdbd){if(_0x29cdbd['type']!==_0x380d('0x41')){var _0x37bb43={};_0x37bb43[_0x29cdbd[_0x380d('0x2b')]]={'$like':'%'+_0x15e5d2[_0x380d('0x34')][_0x380d('0x3f')]+'%'};return _0x37bb43;}})});}_0x189755=_[_0x380d('0x40')]({},_0x189755,_0x15e5d2[_0x380d('0x42')]);var _0x513b86={'where':_0x189755[_0x380d('0x43')]};return db[_0x380d('0x2e')]['count'](_0x513b86)[_0x380d('0x27')](function(_0x324f1d){_0x277eec['count']=_0x324f1d;if(_0x15e5d2[_0x380d('0x34')]['includeAll']){_0x189755[_0x380d('0x44')]=[{'all':!![]}];}return db[_0x380d('0x2e')][_0x380d('0x45')](_0x189755);})[_0x380d('0x27')](function(_0x53bfa1){_0x277eec[_0x380d('0x46')]=_0x53bfa1;return _0x277eec;})[_0x380d('0x27')](respondWithFilteredResult(_0x4ebf24,_0x189755))[_0x380d('0x47')](handleError(_0x4ebf24,null));};exports[_0x380d('0x48')]=function(_0x899928,_0x25130c){var _0x557190={'raw':!![],'where':{'id':_0x899928[_0x380d('0x49')]['id']}},_0x24a4e2={};_0x24a4e2[_0x380d('0x31')]=_[_0x380d('0x33')](db['Sound'][_0x380d('0x2f')]);_0x24a4e2[_0x380d('0x34')]=_[_0x380d('0x33')](_0x899928[_0x380d('0x34')]);_0x24a4e2[_0x380d('0x35')]=_[_0x380d('0x36')](_0x24a4e2['model'],_0x24a4e2[_0x380d('0x34')]);_0x557190['attributes']=_[_0x380d('0x36')](_0x24a4e2[_0x380d('0x31')],qs[_0x380d('0x37')](_0x899928[_0x380d('0x34')][_0x380d('0x37')]));_0x557190[_0x380d('0x38')]=_0x557190[_0x380d('0x38')][_0x380d('0x39')]?_0x557190[_0x380d('0x38')]:_0x24a4e2[_0x380d('0x31')];if(_0x899928[_0x380d('0x34')]['includeAll']){_0x557190['include']=[{'all':!![]}];}_0x557190=_[_0x380d('0x40')]({},_0x557190,_0x899928[_0x380d('0x42')]);return db['Sound']['find'](_0x557190)[_0x380d('0x27')](handleEntityNotFound(_0x25130c,null))[_0x380d('0x27')](respondWithResult(_0x25130c,null))[_0x380d('0x47')](handleError(_0x25130c,null));};exports[_0x380d('0x4a')]=function(_0x5f411e,_0x7f348b,_0x11c5c3){return db[_0x380d('0x2e')][_0x380d('0x4b')]({'where':{'id':_0x5f411e[_0x380d('0x49')]['id']},'attributes':[_0x380d('0x2b'),_0x380d('0x4c'),_0x380d('0x4d')],'raw':!![]})[_0x380d('0x27')](handleEntityNotFound(_0x7f348b,null))[_0x380d('0x27')](function(_0x1a786c){if(_0x1a786c){if(!fs['existsSync'](path[_0x380d('0x4e')](config[_0x380d('0x4f')],_0x380d('0x50'),_0x1a786c['save_name']+'.'+_0x1a786c['converted_format']))){throw new db['Sequelize'][(_0x380d('0x51'))](_0x380d('0x52'));}return _0x7f348b[_0x380d('0x4a')](path[_0x380d('0x4e')](config[_0x380d('0x4f')],_0x380d('0x50'),util[_0x380d('0x53')](_0x380d('0x54'),_0x1a786c[_0x380d('0x4c')],_0x1a786c[_0x380d('0x4d')])),util[_0x380d('0x53')](_0x380d('0x54'),_0x1a786c[_0x380d('0x2b')],_0x1a786c[_0x380d('0x4d')]));}return null;})[_0x380d('0x47')](handleError(_0x7f348b,null));};exports[_0x380d('0x55')]=function(_0x1f768e,_0x1d0d96,_0x15bfc9){var _0x140b2f={'name':path['basename'](_0x1f768e[_0x380d('0x56')][_0x380d('0x57')],path['extname'](_0x1f768e[_0x380d('0x56')]['originalname'])),'save_name':path[_0x380d('0x58')](_0x1f768e[_0x380d('0x56')][_0x380d('0x59')],path[_0x380d('0x5a')](_0x1f768e[_0x380d('0x56')][_0x380d('0x59')])),'original_format':path[_0x380d('0x5a')](_0x1f768e[_0x380d('0x56')]['originalname'])['substring'](0x1),'converted_format':'wav'};var _0x41fc57=path[_0x380d('0x4e')](config['root'],_0x380d('0x5b'),_0x1f768e['file'][_0x380d('0x59')]);var _0x5663a9=path['join'](config[_0x380d('0x4f')],'server/files/sounds/converted',util['format']('%s.%s',path[_0x380d('0x58')](_0x1f768e[_0x380d('0x56')][_0x380d('0x59')],path[_0x380d('0x5a')](_0x1f768e['file'][_0x380d('0x59')])),_0x140b2f[_0x380d('0x4d')]));logger[_0x380d('0x5c')](_0x380d('0x5d'),_0x41fc57);logger[_0x380d('0x5c')](_0x380d('0x5e'),_0x5663a9);try{fs[_0x380d('0x5f')](_0x41fc57,parseInt(_0x380d('0x60'),0x8));var _0x394c3c=sox['transcode'](_0x41fc57,_0x5663a9,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x394c3c['on'](_0x380d('0x2a'),function(_0x46d8ea){fs[_0x380d('0x61')](_0x41fc57);_0x1d0d96[_0x380d('0x1d')](0x1f4)[_0x380d('0x2c')](_0x46d8ea);});_0x394c3c['on'](_0x380d('0x62'),function(_0x21068d){_0x140b2f[_0x380d('0x63')]=isNaN(_0x21068d['duration'])?null:_0x21068d[_0x380d('0x64')]*0x3e8;_0x140b2f['original_sampleCount']=isNaN(_0x21068d[_0x380d('0x65')])?null:_0x21068d[_0x380d('0x65')];_0x140b2f[_0x380d('0x66')]=isNaN(_0x21068d[_0x380d('0x67')])?null:_0x21068d[_0x380d('0x67')];_0x140b2f[_0x380d('0x68')]=isNaN(_0x21068d[_0x380d('0x69')])?null:_0x21068d['bitRate'];_0x140b2f[_0x380d('0x6a')]=isNaN(_0x21068d[_0x380d('0x6b')])?null:_0x21068d[_0x380d('0x6b')];});_0x394c3c['on'](_0x380d('0x6c'),function(_0x5ef34d){_0x140b2f[_0x380d('0x6d')]=isNaN(_0x5ef34d['duration'])?null:_0x5ef34d[_0x380d('0x64')]*0x3e8;_0x140b2f['converted_sampleCount']=isNaN(_0x5ef34d['sampleCount'])?null:_0x5ef34d[_0x380d('0x65')];_0x140b2f[_0x380d('0x6e')]=isNaN(_0x5ef34d[_0x380d('0x67')])?null:_0x5ef34d[_0x380d('0x67')];_0x140b2f[_0x380d('0x6f')]=isNaN(_0x5ef34d['bitRate'])?null:_0x5ef34d[_0x380d('0x69')];_0x140b2f['converted_sampleRate']=isNaN(_0x5ef34d['sampleRate'])?null:_0x5ef34d[_0x380d('0x6b')];});_0x394c3c['on'](_0x380d('0x1c'),function(){fs[_0x380d('0x5f')](_0x5663a9,parseInt(_0x380d('0x60'),0x8));return db[_0x380d('0x2e')][_0x380d('0x55')](_0x140b2f)[_0x380d('0x27')](function(_0x9109f5){var _0x58c450={'role':_0x1f768e[_0x380d('0x70')][_0x380d('0x71')],'userProfileId':_0x1f768e[_0x380d('0x70')]['userProfileId']};if(!_0x58c450)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x58c450['role']===_0x380d('0x72')){var _0x56d726=_0x9109f5[_0x380d('0x28')]({'plain':!![]});return db['UserProfileSection'][_0x380d('0x4b')]({'where':{'name':_0x380d('0x29'),'userProfileId':_0x58c450[_0x380d('0x73')]},'raw':!![]})[_0x380d('0x27')](function(_0x31bb77){if(_0x31bb77&&_0x31bb77[_0x380d('0x74')]===0x0){return db[_0x380d('0x75')]['create']({'name':_0x56d726[_0x380d('0x2b')],'resourceId':_0x56d726['id'],'type':_0x31bb77[_0x380d('0x2b')],'sectionId':_0x31bb77['id']},{})['then'](function(){return _0x9109f5;});}else{return _0x9109f5;}})['catch'](function(_0x4aff22){logger[_0x380d('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4aff22);throw _0x4aff22;});}return _0x9109f5;})[_0x380d('0x27')](respondWithResult(_0x1d0d96,null))['catch'](handleError(_0x1d0d96,null));});_0x394c3c[_0x380d('0x76')]();}catch(_0x4b470c){_0x1d0d96['status'](0x1f4)[_0x380d('0x2c')](_0x4b470c);}};exports[_0x380d('0x25')]=function(_0x5c6bf0,_0x4c1e43,_0x385b6b){return db[_0x380d('0x2e')][_0x380d('0x4b')]({'where':{'id':_0x5c6bf0['params']['id']}})[_0x380d('0x27')](handleEntityNotFound(_0x4c1e43,null))[_0x380d('0x27')](saveUpdates(_[_0x380d('0x3e')](_0x5c6bf0[_0x380d('0x70')],[_0x380d('0x2b'),_0x380d('0x77')]),null))['then'](respondWithResult(_0x4c1e43,null))[_0x380d('0x47')](handleError(_0x4c1e43,null));};exports['delete']=function(_0x4e0102,_0x56e2e9,_0x54d821){return db[_0x380d('0x2e')][_0x380d('0x4b')]({'where':{'id':_0x4e0102['params']['id']}})[_0x380d('0x27')](function(_0x588060){if(_0x588060){return _0x588060[_0x380d('0x26')]();}})['then'](function(_0x3d12d7){var _0x3e244f=path[_0x380d('0x4e')](config[_0x380d('0x4f')],_0x380d('0x5b'),util['format']('%s.%s',_0x3d12d7[_0x380d('0x4c')],_0x3d12d7[_0x380d('0x78')]));var _0x22dfb3=path[_0x380d('0x4e')](config[_0x380d('0x4f')],_0x380d('0x50'),util[_0x380d('0x53')]('%s.%s',_0x3d12d7[_0x380d('0x4c')],_0x3d12d7[_0x380d('0x4d')]));fs[_0x380d('0x61')](_0x3e244f);fs[_0x380d('0x61')](_0x22dfb3);return _0x3d12d7;})[_0x380d('0x27')](function(_0x5d37d1){if(_0x5d37d1){return _0x56e2e9['status'](0xcc)[_0x380d('0x1c')]();}})['then'](handleEntityNotFound(_0x56e2e9,null))['catch'](handleError(_0x56e2e9,null));};