f7b738cafc9fc4e3848d1df73dba19c67e278df7
[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 _0x2748=['existsSync','root','server/files/sounds/converted','converted_format','Sequelize','ValidationError','Sound\x20not\x20found','join','format','%s.%s','create','basename','file','originalname','extname','filename','wav','server/files/sounds/original','info','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','unlinkSync','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','sampleRate','dest','converted_duration','converted_channelCount','converted_bitRate','converted_sampleRate','end','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','description','delete','original_format','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','sendStatus','status','json','count','offset','limit','set','Content-Range','apply','reject','save','update','then','get','Sounds','UserProfileResource','destroy','error','stack','name','index','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','Sound','include','catch','show','params','length','includeAll','download','find','save_name'];(function(_0xb57a1f,_0x505fe8){var _0x558851=function(_0x293226){while(--_0x293226){_0xb57a1f['push'](_0xb57a1f['shift']());}};_0x558851(++_0x505fe8);}(_0x2748,0x130));var _0x8274=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x2748[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require(_0x8274('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8274('0x1'));var jsonpatch=require(_0x8274('0x2'));var rp=require(_0x8274('0x3'));var moment=require('moment');var BPromise=require(_0x8274('0x4'));var Mustache=require(_0x8274('0x5'));var util=require(_0x8274('0x6'));var path=require('path');var sox=require(_0x8274('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8274('0x8'));var _=require(_0x8274('0x9'));var squel=require('squel');var crypto=require(_0x8274('0xa'));var jsforce=require(_0x8274('0xb'));var deskjs=require(_0x8274('0xc'));var toCsv=require(_0x8274('0xd'));var querystring=require(_0x8274('0xe'));var Papa=require(_0x8274('0xf'));var Redis=require(_0x8274('0x10'));var authService=require(_0x8274('0x11'));var qs=require(_0x8274('0x12'));var as=require(_0x8274('0x13'));var hardwareService=require(_0x8274('0x14'));var logger=require('../../config/logger')(_0x8274('0x15'));var utils=require(_0x8274('0x16'));var config=require(_0x8274('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x23f0a1,_0x4d9bc4){_0x4d9bc4=_0x4d9bc4||0xcc;return function(_0x1e0d42){if(_0x1e0d42){return _0x23f0a1[_0x8274('0x18')](_0x4d9bc4);}return _0x23f0a1[_0x8274('0x19')](_0x4d9bc4)['end']();};}function respondWithResult(_0x372a5f,_0x184e4a){_0x184e4a=_0x184e4a||0xc8;return function(_0x4fbd0a){if(_0x4fbd0a){return _0x372a5f[_0x8274('0x19')](_0x184e4a)[_0x8274('0x1a')](_0x4fbd0a);}};}function respondWithFilteredResult(_0x3a60db,_0x4ecd18){return function(_0x7b5f21){if(_0x7b5f21){var _0x285dc1=_0x7b5f21[_0x8274('0x1b')],_0x482215=_0x4ecd18[_0x8274('0x1c')],_0x4cbcbd=_0x4ecd18[_0x8274('0x1c')]+_0x4ecd18[_0x8274('0x1d')],_0x292e32;if(_0x4cbcbd>=_0x285dc1){_0x4cbcbd=_0x285dc1;_0x292e32=0xc8;}else{_0x292e32=0xce;}_0x3a60db['status'](_0x292e32);return _0x3a60db[_0x8274('0x1e')](_0x8274('0x1f'),_0x482215+'-'+_0x4cbcbd+'/'+_0x285dc1)[_0x8274('0x1a')](_0x7b5f21);}return null;};}function patchUpdates(_0xb0e2b7){return function(_0x47e5fa){try{jsonpatch[_0x8274('0x20')](_0x47e5fa,_0xb0e2b7,!![]);}catch(_0x2f413a){return BPromise[_0x8274('0x21')](_0x2f413a);}return _0x47e5fa[_0x8274('0x22')]();};}function saveUpdates(_0x591f54,_0x21f964){return function(_0x1a7582){if(_0x1a7582){return _0x1a7582[_0x8274('0x23')](_0x591f54)['then'](function(_0x55989e){return _0x55989e;});}return null;};}function removeEntity(_0x1c760a,_0x576b6b){return function(_0x115d72){if(_0x115d72){return _0x115d72['destroy']()[_0x8274('0x24')](function(){var _0x43fa58=_0x115d72[_0x8274('0x25')]({'plain':!![]});var _0x5b9c3e=_0x8274('0x26');return db[_0x8274('0x27')][_0x8274('0x28')]({'where':{'type':_0x5b9c3e,'resourceId':_0x43fa58['id']}})['then'](function(){return _0x115d72;});})[_0x8274('0x24')](function(){_0x1c760a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5477a2,_0x24eb15){return function(_0x41951b){if(!_0x41951b){_0x5477a2[_0x8274('0x18')](0x194);}return _0x41951b;};}function handleError(_0x484e75,_0x28e55e){_0x28e55e=_0x28e55e||0x1f4;return function(_0x729e8c){logger[_0x8274('0x29')](_0x729e8c[_0x8274('0x2a')]);if(_0x729e8c['name']){delete _0x729e8c[_0x8274('0x2b')];}_0x484e75[_0x8274('0x19')](_0x28e55e)['send'](_0x729e8c);};}exports[_0x8274('0x2c')]=function(_0xfcab6f,_0x3e0425){var _0x9a953e={},_0x5e5301={},_0xac2b7f={'count':0x0,'rows':[]};var _0x2c1b23=_['map'](db['Sound'][_0x8274('0x2d')],function(_0x1f5605){return{'name':_0x1f5605[_0x8274('0x2e')],'type':_0x1f5605[_0x8274('0x2f')][_0x8274('0x30')]};});_0x5e5301['model']=_[_0x8274('0x31')](_0x2c1b23,_0x8274('0x2b'));_0x5e5301[_0x8274('0x32')]=_[_0x8274('0x33')](_0xfcab6f[_0x8274('0x32')]);_0x5e5301[_0x8274('0x34')]=_[_0x8274('0x35')](_0x5e5301[_0x8274('0x36')],_0x5e5301['query']);_0x9a953e['attributes']=_[_0x8274('0x35')](_0x5e5301[_0x8274('0x36')],qs[_0x8274('0x37')](_0xfcab6f['query'][_0x8274('0x37')]));_0x9a953e[_0x8274('0x38')]=_0x9a953e[_0x8274('0x38')]['length']?_0x9a953e[_0x8274('0x38')]:_0x5e5301[_0x8274('0x36')];if(!_0xfcab6f[_0x8274('0x32')][_0x8274('0x39')](_0x8274('0x3a'))){_0x9a953e[_0x8274('0x1d')]=qs[_0x8274('0x1d')](_0xfcab6f[_0x8274('0x32')]['limit']);_0x9a953e[_0x8274('0x1c')]=qs['offset'](_0xfcab6f[_0x8274('0x32')][_0x8274('0x1c')]);}_0x9a953e[_0x8274('0x3b')]=qs[_0x8274('0x3c')](_0xfcab6f[_0x8274('0x32')][_0x8274('0x3c')]);_0x9a953e[_0x8274('0x3d')]=qs[_0x8274('0x34')](_[_0x8274('0x3e')](_0xfcab6f['query'],_0x5e5301[_0x8274('0x34')]),_0x2c1b23);if(_0xfcab6f[_0x8274('0x32')][_0x8274('0x3f')]){_0x9a953e[_0x8274('0x3d')]=_[_0x8274('0x40')](_0x9a953e[_0x8274('0x3d')],{'$or':_['map'](_0x2c1b23,function(_0x46d744){if(_0x46d744['type']!==_0x8274('0x41')){var _0x47740d={};_0x47740d[_0x46d744[_0x8274('0x2b')]]={'$like':'%'+_0xfcab6f[_0x8274('0x32')]['filter']+'%'};return _0x47740d;}})});}_0x9a953e=_['merge']({},_0x9a953e,_0xfcab6f[_0x8274('0x42')]);var _0x26ec38={'where':_0x9a953e[_0x8274('0x3d')]};return db[_0x8274('0x43')][_0x8274('0x1b')](_0x26ec38)[_0x8274('0x24')](function(_0x35af5f){_0xac2b7f[_0x8274('0x1b')]=_0x35af5f;if(_0xfcab6f['query']['includeAll']){_0x9a953e[_0x8274('0x44')]=[{'all':!![]}];}return db['Sound']['findAll'](_0x9a953e);})[_0x8274('0x24')](function(_0x24da69){_0xac2b7f['rows']=_0x24da69;return _0xac2b7f;})[_0x8274('0x24')](respondWithFilteredResult(_0x3e0425,_0x9a953e))[_0x8274('0x45')](handleError(_0x3e0425,null));};exports[_0x8274('0x46')]=function(_0x386350,_0x285c50){var _0x2c641e={'raw':!![],'where':{'id':_0x386350[_0x8274('0x47')]['id']}},_0x24d674={};_0x24d674[_0x8274('0x36')]=_['keys'](db['Sound'][_0x8274('0x2d')]);_0x24d674[_0x8274('0x32')]=_['keys'](_0x386350[_0x8274('0x32')]);_0x24d674[_0x8274('0x34')]=_['intersection'](_0x24d674[_0x8274('0x36')],_0x24d674[_0x8274('0x32')]);_0x2c641e['attributes']=_[_0x8274('0x35')](_0x24d674[_0x8274('0x36')],qs[_0x8274('0x37')](_0x386350['query']['fields']));_0x2c641e[_0x8274('0x38')]=_0x2c641e[_0x8274('0x38')][_0x8274('0x48')]?_0x2c641e[_0x8274('0x38')]:_0x24d674[_0x8274('0x36')];if(_0x386350[_0x8274('0x32')][_0x8274('0x49')]){_0x2c641e[_0x8274('0x44')]=[{'all':!![]}];}_0x2c641e=_[_0x8274('0x40')]({},_0x2c641e,_0x386350['options']);return db[_0x8274('0x43')]['find'](_0x2c641e)[_0x8274('0x24')](handleEntityNotFound(_0x285c50,null))[_0x8274('0x24')](respondWithResult(_0x285c50,null))[_0x8274('0x45')](handleError(_0x285c50,null));};exports[_0x8274('0x4a')]=function(_0x14a274,_0x3b576e,_0x5f2776){return db[_0x8274('0x43')][_0x8274('0x4b')]({'where':{'id':_0x14a274[_0x8274('0x47')]['id']},'attributes':[_0x8274('0x2b'),_0x8274('0x4c'),'converted_format'],'raw':!![]})[_0x8274('0x24')](handleEntityNotFound(_0x3b576e,null))[_0x8274('0x24')](function(_0x5136f7){if(_0x5136f7){if(!fs[_0x8274('0x4d')](path['join'](config[_0x8274('0x4e')],_0x8274('0x4f'),_0x5136f7['save_name']+'.'+_0x5136f7[_0x8274('0x50')]))){throw new db[(_0x8274('0x51'))][(_0x8274('0x52'))](_0x8274('0x53'));}return _0x3b576e['download'](path[_0x8274('0x54')](config[_0x8274('0x4e')],'server/files/sounds/converted',util[_0x8274('0x55')](_0x8274('0x56'),_0x5136f7[_0x8274('0x4c')],_0x5136f7[_0x8274('0x50')])),util[_0x8274('0x55')](_0x8274('0x56'),_0x5136f7['name'],_0x5136f7[_0x8274('0x50')]));}return null;})[_0x8274('0x45')](handleError(_0x3b576e,null));};exports[_0x8274('0x57')]=function(_0x274b39,_0x2b863f,_0x4a533e){var _0x197344={'name':path[_0x8274('0x58')](_0x274b39[_0x8274('0x59')][_0x8274('0x5a')],path[_0x8274('0x5b')](_0x274b39[_0x8274('0x59')][_0x8274('0x5a')])),'save_name':path[_0x8274('0x58')](_0x274b39[_0x8274('0x59')][_0x8274('0x5c')],path[_0x8274('0x5b')](_0x274b39[_0x8274('0x59')][_0x8274('0x5c')])),'original_format':path['extname'](_0x274b39['file'][_0x8274('0x5a')])['substring'](0x1),'converted_format':_0x8274('0x5d')};var _0x622f18=path[_0x8274('0x54')](config[_0x8274('0x4e')],_0x8274('0x5e'),_0x274b39[_0x8274('0x59')][_0x8274('0x5c')]);var _0x9ea82e=path[_0x8274('0x54')](config[_0x8274('0x4e')],_0x8274('0x4f'),util[_0x8274('0x55')](_0x8274('0x56'),path[_0x8274('0x58')](_0x274b39[_0x8274('0x59')][_0x8274('0x5c')],path[_0x8274('0x5b')](_0x274b39[_0x8274('0x59')]['filename'])),_0x197344[_0x8274('0x50')]));logger[_0x8274('0x5f')]('Sound\x20upload\x20filepath:\x20%s',_0x622f18);logger[_0x8274('0x5f')](_0x8274('0x60'),_0x9ea82e);try{fs[_0x8274('0x61')](_0x622f18,parseInt(_0x8274('0x62'),0x8));var _0x575a5e=sox['transcode'](_0x622f18,_0x9ea82e,{'sampleRate':0x1f40,'format':_0x8274('0x5d'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x575a5e['on'](_0x8274('0x29'),function(_0x359f93){fs[_0x8274('0x63')](_0x622f18);_0x2b863f[_0x8274('0x19')](0x1f4)['send'](_0x359f93);});_0x575a5e['on']('src',function(_0x32b013){_0x197344[_0x8274('0x64')]=isNaN(_0x32b013[_0x8274('0x65')])?null:_0x32b013[_0x8274('0x65')]*0x3e8;_0x197344[_0x8274('0x66')]=isNaN(_0x32b013['sampleCount'])?null:_0x32b013[_0x8274('0x67')];_0x197344[_0x8274('0x68')]=isNaN(_0x32b013['channelCount'])?null:_0x32b013[_0x8274('0x69')];_0x197344[_0x8274('0x6a')]=isNaN(_0x32b013[_0x8274('0x6b')])?null:_0x32b013['bitRate'];_0x197344['original_sampleRate']=isNaN(_0x32b013[_0x8274('0x6c')])?null:_0x32b013['sampleRate'];});_0x575a5e['on'](_0x8274('0x6d'),function(_0x23caf9){_0x197344[_0x8274('0x6e')]=isNaN(_0x23caf9['duration'])?null:_0x23caf9[_0x8274('0x65')]*0x3e8;_0x197344['converted_sampleCount']=isNaN(_0x23caf9[_0x8274('0x67')])?null:_0x23caf9[_0x8274('0x67')];_0x197344[_0x8274('0x6f')]=isNaN(_0x23caf9[_0x8274('0x69')])?null:_0x23caf9[_0x8274('0x69')];_0x197344[_0x8274('0x70')]=isNaN(_0x23caf9[_0x8274('0x6b')])?null:_0x23caf9['bitRate'];_0x197344[_0x8274('0x71')]=isNaN(_0x23caf9['sampleRate'])?null:_0x23caf9['sampleRate'];});_0x575a5e['on'](_0x8274('0x72'),function(){fs[_0x8274('0x61')](_0x9ea82e,parseInt('0777',0x8));return db['Sound'][_0x8274('0x57')](_0x197344)[_0x8274('0x24')](function(_0x5f3bf5){var _0x4ec352={'role':_0x274b39[_0x8274('0x73')]['role'],'userProfileId':_0x274b39['body'][_0x8274('0x74')]};if(!_0x4ec352)throw new Error(_0x8274('0x75'));if(_0x4ec352[_0x8274('0x76')]===_0x8274('0x77')){var _0x3cac36=_0x5f3bf5[_0x8274('0x25')]({'plain':!![]});return db[_0x8274('0x78')][_0x8274('0x4b')]({'where':{'name':_0x8274('0x26'),'userProfileId':_0x4ec352[_0x8274('0x74')]},'raw':!![]})[_0x8274('0x24')](function(_0x5afa77){if(_0x5afa77&&_0x5afa77[_0x8274('0x79')]===0x0){return db['UserProfileResource'][_0x8274('0x57')]({'name':_0x3cac36['name'],'resourceId':_0x3cac36['id'],'type':_0x5afa77[_0x8274('0x2b')],'sectionId':_0x5afa77['id']},{})[_0x8274('0x24')](function(){return _0x5f3bf5;});}else{return _0x5f3bf5;}})[_0x8274('0x45')](function(_0x3a1974){logger[_0x8274('0x29')](_0x8274('0x7a'),_0x3a1974);throw _0x3a1974;});}return _0x5f3bf5;})[_0x8274('0x24')](respondWithResult(_0x2b863f,null))[_0x8274('0x45')](handleError(_0x2b863f,null));});_0x575a5e[_0x8274('0x7b')]();}catch(_0x1b7d6d){_0x2b863f['status'](0x1f4)['send'](_0x1b7d6d);}};exports[_0x8274('0x23')]=function(_0x40549d,_0x4b4b85,_0x32f1a1){return db[_0x8274('0x43')][_0x8274('0x4b')]({'where':{'id':_0x40549d[_0x8274('0x47')]['id']}})[_0x8274('0x24')](handleEntityNotFound(_0x4b4b85,null))['then'](saveUpdates(_[_0x8274('0x3e')](_0x40549d[_0x8274('0x73')],[_0x8274('0x2b'),_0x8274('0x7c')]),null))[_0x8274('0x24')](respondWithResult(_0x4b4b85,null))[_0x8274('0x45')](handleError(_0x4b4b85,null));};exports[_0x8274('0x7d')]=function(_0x52e090,_0x2af336,_0x2acf7f){return db[_0x8274('0x43')][_0x8274('0x4b')]({'where':{'id':_0x52e090[_0x8274('0x47')]['id']}})[_0x8274('0x24')](function(_0x57a3e7){if(_0x57a3e7){return _0x57a3e7[_0x8274('0x28')]();}})[_0x8274('0x24')](function(_0x47efe1){var _0x4af7ea=path[_0x8274('0x54')](config[_0x8274('0x4e')],'server/files/sounds/original',util[_0x8274('0x55')]('%s.%s',_0x47efe1[_0x8274('0x4c')],_0x47efe1[_0x8274('0x7e')]));var _0x22b69c=path[_0x8274('0x54')](config[_0x8274('0x4e')],_0x8274('0x4f'),util[_0x8274('0x55')](_0x8274('0x56'),_0x47efe1[_0x8274('0x4c')],_0x47efe1[_0x8274('0x50')]));fs['unlinkSync'](_0x4af7ea);fs[_0x8274('0x63')](_0x22b69c);return _0x47efe1;})[_0x8274('0x24')](function(_0x2a789d){if(_0x2a789d){return _0x2af336[_0x8274('0x19')](0xcc)[_0x8274('0x72')]();}})[_0x8274('0x24')](handleEntityNotFound(_0x2af336,null))[_0x8274('0x45')](handleError(_0x2af336,null));};