Built motion from commit 9d0783e6.|2.6.13
[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 _0x6da0=['jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','Sounds','UserProfileResource','end','error','name','send','index','map','Sound','rawAttributes','key','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','includeAll','include','rows','catch','show','params','find','download','converted_format','join','root','server/files/sounds/converted','save_name','ValidationError','Sound\x20not\x20found','%s.%s','format','create','originalname','file','basename','filename','extname','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','chmodSync','transcode','wav','unlinkSync','src','original_duration','duration','sampleCount','channelCount','original_bitRate','bitRate','sampleRate','converted_duration','converted_sampleCount','converted_channelCount','converted_bitRate','converted_sampleRate','0777','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','get','UserProfileSection','start','description','delete','original_format','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','squel','crypto'];(function(_0x3d5c66,_0x521d9e){var _0x9d2d66=function(_0x46b3eb){while(--_0x46b3eb){_0x3d5c66['push'](_0x3d5c66['shift']());}};_0x9d2d66(++_0x521d9e);}(_0x6da0,0xe7));var _0x06da=function(_0x1b17d6,_0x10ec3a){_0x1b17d6=_0x1b17d6-0x0;var _0x119a94=_0x6da0[_0x1b17d6];return _0x119a94;};'use strict';var emlformat=require(_0x06da('0x0'));var rimraf=require(_0x06da('0x1'));var zipdir=require(_0x06da('0x2'));var jsonpatch=require(_0x06da('0x3'));var rp=require(_0x06da('0x4'));var moment=require(_0x06da('0x5'));var BPromise=require(_0x06da('0x6'));var Mustache=require(_0x06da('0x7'));var util=require(_0x06da('0x8'));var path=require(_0x06da('0x9'));var sox=require('sox');var csv=require(_0x06da('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x06da('0xb'));var crypto=require(_0x06da('0xc'));var jsforce=require(_0x06da('0xd'));var deskjs=require(_0x06da('0xe'));var toCsv=require(_0x06da('0xa'));var querystring=require(_0x06da('0xf'));var Papa=require(_0x06da('0x10'));var Redis=require(_0x06da('0x11'));var authService=require(_0x06da('0x12'));var qs=require(_0x06da('0x13'));var as=require(_0x06da('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x06da('0x15'));var utils=require(_0x06da('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x06da('0x17'));var db=require(_0x06da('0x18'))['db'];function respondWithStatusCode(_0x348451,_0x5a1783){_0x5a1783=_0x5a1783||0xcc;return function(_0x25ab83){if(_0x25ab83){return _0x348451[_0x06da('0x19')](_0x5a1783);}return _0x348451[_0x06da('0x1a')](_0x5a1783)['end']();};}function respondWithResult(_0x552443,_0x113186){_0x113186=_0x113186||0xc8;return function(_0x1693e8){if(_0x1693e8){return _0x552443[_0x06da('0x1a')](_0x113186)[_0x06da('0x1b')](_0x1693e8);}};}function respondWithFilteredResult(_0x5cf71b,_0x4ce220){return function(_0x3c27b9){if(_0x3c27b9){var _0x3202f3=typeof _0x4ce220[_0x06da('0x1c')]===_0x06da('0x1d')&&typeof _0x4ce220[_0x06da('0x1e')]===_0x06da('0x1d');var _0x26c5fa=_0x3c27b9[_0x06da('0x1f')];var _0x399b38=_0x3202f3?0x0:_0x4ce220[_0x06da('0x1c')];var _0x1231c4=_0x3202f3?_0x3c27b9[_0x06da('0x1f')]:_0x4ce220[_0x06da('0x1c')]+_0x4ce220[_0x06da('0x1e')];var _0x17f5e1;if(_0x1231c4>=_0x26c5fa){_0x1231c4=_0x26c5fa;_0x17f5e1=0xc8;}else{_0x17f5e1=0xce;}_0x5cf71b[_0x06da('0x1a')](_0x17f5e1);return _0x5cf71b['set'](_0x06da('0x20'),_0x399b38+'-'+_0x1231c4+'/'+_0x26c5fa)[_0x06da('0x1b')](_0x3c27b9);}return null;};}function patchUpdates(_0x33f52c){return function(_0x44766b){try{jsonpatch[_0x06da('0x21')](_0x44766b,_0x33f52c,!![]);}catch(_0xecbaec){return BPromise[_0x06da('0x22')](_0xecbaec);}return _0x44766b[_0x06da('0x23')]();};}function saveUpdates(_0x14c3c2,_0x13017b){return function(_0x46dede){if(_0x46dede){return _0x46dede[_0x06da('0x24')](_0x14c3c2)['then'](function(_0x505c2c){return _0x505c2c;});}return null;};}function removeEntity(_0x340cfd,_0x72fb8d){return function(_0x101259){if(_0x101259){return _0x101259[_0x06da('0x25')]()[_0x06da('0x26')](function(){var _0x4e9433=_0x101259['get']({'plain':!![]});var _0x3e5dbf=_0x06da('0x27');return db[_0x06da('0x28')][_0x06da('0x25')]({'where':{'type':_0x3e5dbf,'resourceId':_0x4e9433['id']}})[_0x06da('0x26')](function(){return _0x101259;});})[_0x06da('0x26')](function(){_0x340cfd[_0x06da('0x1a')](0xcc)[_0x06da('0x29')]();});}};}function handleEntityNotFound(_0x4f86b6,_0x1d6226){return function(_0x5b2281){if(!_0x5b2281){_0x4f86b6[_0x06da('0x19')](0x194);}return _0x5b2281;};}function handleError(_0x165e0b,_0x5ef80a){_0x5ef80a=_0x5ef80a||0x1f4;return function(_0xd57281){logger[_0x06da('0x2a')](_0xd57281['stack']);if(_0xd57281[_0x06da('0x2b')]){delete _0xd57281['name'];}_0x165e0b['status'](_0x5ef80a)[_0x06da('0x2c')](_0xd57281);};}exports[_0x06da('0x2d')]=function(_0x346c6c,_0x465e85){var _0x7a354c={},_0x1fc07d={},_0x2cf8ac={'count':0x0,'rows':[]};var _0x52b979=_[_0x06da('0x2e')](db[_0x06da('0x2f')][_0x06da('0x30')],function(_0x117679){return{'name':_0x117679['fieldName'],'type':_0x117679['type'][_0x06da('0x31')]};});_0x1fc07d['model']=_[_0x06da('0x2e')](_0x52b979,_0x06da('0x2b'));_0x1fc07d[_0x06da('0x32')]=_[_0x06da('0x33')](_0x346c6c[_0x06da('0x32')]);_0x1fc07d[_0x06da('0x34')]=_[_0x06da('0x35')](_0x1fc07d['model'],_0x1fc07d[_0x06da('0x32')]);_0x7a354c[_0x06da('0x36')]=_['intersection'](_0x1fc07d[_0x06da('0x37')],qs[_0x06da('0x38')](_0x346c6c[_0x06da('0x32')][_0x06da('0x38')]));_0x7a354c[_0x06da('0x36')]=_0x7a354c[_0x06da('0x36')][_0x06da('0x39')]?_0x7a354c[_0x06da('0x36')]:_0x1fc07d[_0x06da('0x37')];if(!_0x346c6c[_0x06da('0x32')][_0x06da('0x3a')](_0x06da('0x3b'))){_0x7a354c[_0x06da('0x1e')]=qs[_0x06da('0x1e')](_0x346c6c['query'][_0x06da('0x1e')]);_0x7a354c[_0x06da('0x1c')]=qs[_0x06da('0x1c')](_0x346c6c[_0x06da('0x32')][_0x06da('0x1c')]);}_0x7a354c[_0x06da('0x3c')]=qs['sort'](_0x346c6c[_0x06da('0x32')][_0x06da('0x3d')]);_0x7a354c['where']=qs['filters'](_[_0x06da('0x3e')](_0x346c6c[_0x06da('0x32')],_0x1fc07d[_0x06da('0x34')]),_0x52b979);if(_0x346c6c['query'][_0x06da('0x3f')]){_0x7a354c[_0x06da('0x40')]=_[_0x06da('0x41')](_0x7a354c[_0x06da('0x40')],{'$or':_[_0x06da('0x2e')](_0x52b979,function(_0x3726df){if(_0x3726df[_0x06da('0x42')]!=='VIRTUAL'){var _0x6b9e1e={};_0x6b9e1e[_0x3726df[_0x06da('0x2b')]]={'$like':'%'+_0x346c6c[_0x06da('0x32')][_0x06da('0x3f')]+'%'};return _0x6b9e1e;}})});}_0x7a354c=_[_0x06da('0x41')]({},_0x7a354c,_0x346c6c['options']);var _0x21da2d={'where':_0x7a354c[_0x06da('0x40')]};return db['Sound']['count'](_0x21da2d)[_0x06da('0x26')](function(_0x2e3576){_0x2cf8ac['count']=_0x2e3576;if(_0x346c6c[_0x06da('0x32')][_0x06da('0x43')]){_0x7a354c[_0x06da('0x44')]=[{'all':!![]}];}return db['Sound']['findAll'](_0x7a354c);})[_0x06da('0x26')](function(_0x2f1500){_0x2cf8ac[_0x06da('0x45')]=_0x2f1500;return _0x2cf8ac;})['then'](respondWithFilteredResult(_0x465e85,_0x7a354c))[_0x06da('0x46')](handleError(_0x465e85,null));};exports[_0x06da('0x47')]=function(_0x39307e,_0x9c0b1a){var _0x25fcc2={'raw':!![],'where':{'id':_0x39307e[_0x06da('0x48')]['id']}},_0x128e56={};_0x128e56[_0x06da('0x37')]=_[_0x06da('0x33')](db[_0x06da('0x2f')]['rawAttributes']);_0x128e56[_0x06da('0x32')]=_['keys'](_0x39307e[_0x06da('0x32')]);_0x128e56[_0x06da('0x34')]=_['intersection'](_0x128e56[_0x06da('0x37')],_0x128e56[_0x06da('0x32')]);_0x25fcc2['attributes']=_[_0x06da('0x35')](_0x128e56[_0x06da('0x37')],qs['fields'](_0x39307e[_0x06da('0x32')][_0x06da('0x38')]));_0x25fcc2[_0x06da('0x36')]=_0x25fcc2[_0x06da('0x36')][_0x06da('0x39')]?_0x25fcc2[_0x06da('0x36')]:_0x128e56['model'];if(_0x39307e['query'][_0x06da('0x43')]){_0x25fcc2[_0x06da('0x44')]=[{'all':!![]}];}_0x25fcc2=_[_0x06da('0x41')]({},_0x25fcc2,_0x39307e['options']);return db[_0x06da('0x2f')][_0x06da('0x49')](_0x25fcc2)[_0x06da('0x26')](handleEntityNotFound(_0x9c0b1a,null))[_0x06da('0x26')](respondWithResult(_0x9c0b1a,null))[_0x06da('0x46')](handleError(_0x9c0b1a,null));};exports[_0x06da('0x4a')]=function(_0x4c809a,_0xf1bfcf,_0x2a677a){return db['Sound'][_0x06da('0x49')]({'where':{'id':_0x4c809a[_0x06da('0x48')]['id']},'attributes':[_0x06da('0x2b'),'save_name',_0x06da('0x4b')],'raw':!![]})['then'](handleEntityNotFound(_0xf1bfcf,null))[_0x06da('0x26')](function(_0x5175fd){if(_0x5175fd){if(!fs['existsSync'](path[_0x06da('0x4c')](config[_0x06da('0x4d')],_0x06da('0x4e'),_0x5175fd[_0x06da('0x4f')]+'.'+_0x5175fd[_0x06da('0x4b')]))){throw new db['Sequelize'][(_0x06da('0x50'))](_0x06da('0x51'));}return _0xf1bfcf[_0x06da('0x4a')](path[_0x06da('0x4c')](config[_0x06da('0x4d')],_0x06da('0x4e'),util['format'](_0x06da('0x52'),_0x5175fd[_0x06da('0x4f')],_0x5175fd['converted_format'])),util[_0x06da('0x53')](_0x06da('0x52'),_0x5175fd[_0x06da('0x2b')],_0x5175fd[_0x06da('0x4b')]));}return null;})[_0x06da('0x46')](handleError(_0xf1bfcf,null));};exports[_0x06da('0x54')]=function(_0x251da5,_0x3cd22a,_0x2af219){var _0x316ea4={'name':path['basename'](_0x251da5['file'][_0x06da('0x55')],path['extname'](_0x251da5[_0x06da('0x56')][_0x06da('0x55')])),'save_name':path[_0x06da('0x57')](_0x251da5[_0x06da('0x56')][_0x06da('0x58')],path[_0x06da('0x59')](_0x251da5[_0x06da('0x56')][_0x06da('0x58')])),'original_format':path[_0x06da('0x59')](_0x251da5[_0x06da('0x56')][_0x06da('0x55')])['substring'](0x1),'converted_format':'wav'};var _0x4df17e=path[_0x06da('0x4c')](config['root'],_0x06da('0x5a'),_0x251da5['file']['filename']);var _0x58f7aa=path[_0x06da('0x4c')](config['root'],_0x06da('0x4e'),util[_0x06da('0x53')](_0x06da('0x52'),path[_0x06da('0x57')](_0x251da5[_0x06da('0x56')]['filename'],path['extname'](_0x251da5[_0x06da('0x56')][_0x06da('0x58')])),_0x316ea4[_0x06da('0x4b')]));logger[_0x06da('0x5b')](_0x06da('0x5c'),_0x4df17e);logger['info']('Sound\x20upload\x20destination:\x20%s',_0x58f7aa);try{fs[_0x06da('0x5d')](_0x4df17e,parseInt('0777',0x8));var _0x4aa149=sox[_0x06da('0x5e')](_0x4df17e,_0x58f7aa,{'sampleRate':0x1f40,'format':_0x06da('0x5f'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x4aa149['on']('error',function(_0x477fb3){fs[_0x06da('0x60')](_0x4df17e);_0x3cd22a[_0x06da('0x1a')](0x1f4)['send'](_0x477fb3);});_0x4aa149['on'](_0x06da('0x61'),function(_0x40d971){_0x316ea4[_0x06da('0x62')]=isNaN(_0x40d971[_0x06da('0x63')])?null:_0x40d971[_0x06da('0x63')]*0x3e8;_0x316ea4['original_sampleCount']=isNaN(_0x40d971[_0x06da('0x64')])?null:_0x40d971[_0x06da('0x64')];_0x316ea4['original_channelCount']=isNaN(_0x40d971[_0x06da('0x65')])?null:_0x40d971[_0x06da('0x65')];_0x316ea4[_0x06da('0x66')]=isNaN(_0x40d971['bitRate'])?null:_0x40d971[_0x06da('0x67')];_0x316ea4['original_sampleRate']=isNaN(_0x40d971[_0x06da('0x68')])?null:_0x40d971[_0x06da('0x68')];});_0x4aa149['on']('dest',function(_0x2591eb){_0x316ea4[_0x06da('0x69')]=isNaN(_0x2591eb[_0x06da('0x63')])?null:_0x2591eb[_0x06da('0x63')]*0x3e8;_0x316ea4[_0x06da('0x6a')]=isNaN(_0x2591eb[_0x06da('0x64')])?null:_0x2591eb[_0x06da('0x64')];_0x316ea4[_0x06da('0x6b')]=isNaN(_0x2591eb[_0x06da('0x65')])?null:_0x2591eb[_0x06da('0x65')];_0x316ea4[_0x06da('0x6c')]=isNaN(_0x2591eb[_0x06da('0x67')])?null:_0x2591eb[_0x06da('0x67')];_0x316ea4[_0x06da('0x6d')]=isNaN(_0x2591eb[_0x06da('0x68')])?null:_0x2591eb[_0x06da('0x68')];});_0x4aa149['on']('end',function(){fs['chmodSync'](_0x58f7aa,parseInt(_0x06da('0x6e'),0x8));return db['Sound'][_0x06da('0x54')](_0x316ea4)[_0x06da('0x26')](function(_0x39f558){var _0xdb5e50={'role':_0x251da5[_0x06da('0x6f')][_0x06da('0x70')],'userProfileId':_0x251da5['body'][_0x06da('0x71')]};if(!_0xdb5e50)throw new Error(_0x06da('0x72'));if(_0xdb5e50['role']===_0x06da('0x73')){var _0x5dd32a=_0x39f558[_0x06da('0x74')]({'plain':!![]});return db[_0x06da('0x75')][_0x06da('0x49')]({'where':{'name':'Sounds','userProfileId':_0xdb5e50['userProfileId']},'raw':!![]})[_0x06da('0x26')](function(_0x3630dc){if(_0x3630dc&&_0x3630dc['autoAssociation']===0x0){return db[_0x06da('0x28')][_0x06da('0x54')]({'name':_0x5dd32a['name'],'resourceId':_0x5dd32a['id'],'type':_0x3630dc[_0x06da('0x2b')],'sectionId':_0x3630dc['id']},{})[_0x06da('0x26')](function(){return _0x39f558;});}else{return _0x39f558;}})[_0x06da('0x46')](function(_0x1531fa){logger[_0x06da('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1531fa);throw _0x1531fa;});}return _0x39f558;})[_0x06da('0x26')](respondWithResult(_0x3cd22a,null))[_0x06da('0x46')](handleError(_0x3cd22a,null));});_0x4aa149[_0x06da('0x76')]();}catch(_0x40ce9c){_0x3cd22a[_0x06da('0x1a')](0x1f4)[_0x06da('0x2c')](_0x40ce9c);}};exports[_0x06da('0x24')]=function(_0x2a2ec7,_0x9c7dda,_0x115a9a){return db['Sound'][_0x06da('0x49')]({'where':{'id':_0x2a2ec7[_0x06da('0x48')]['id']}})[_0x06da('0x26')](handleEntityNotFound(_0x9c7dda,null))[_0x06da('0x26')](saveUpdates(_[_0x06da('0x3e')](_0x2a2ec7[_0x06da('0x6f')],[_0x06da('0x2b'),_0x06da('0x77')]),null))[_0x06da('0x26')](respondWithResult(_0x9c7dda,null))[_0x06da('0x46')](handleError(_0x9c7dda,null));};exports[_0x06da('0x78')]=function(_0x505bab,_0x3f5c0d,_0x228a98){return db[_0x06da('0x2f')][_0x06da('0x49')]({'where':{'id':_0x505bab['params']['id']}})[_0x06da('0x26')](function(_0x109895){if(_0x109895){return _0x109895[_0x06da('0x25')]();}})[_0x06da('0x26')](function(_0x5db4ee){var _0x3930b2=path[_0x06da('0x4c')](config['root'],'server/files/sounds/original',util[_0x06da('0x53')](_0x06da('0x52'),_0x5db4ee[_0x06da('0x4f')],_0x5db4ee[_0x06da('0x79')]));var _0x166d55=path[_0x06da('0x4c')](config[_0x06da('0x4d')],_0x06da('0x4e'),util[_0x06da('0x53')]('%s.%s',_0x5db4ee[_0x06da('0x4f')],_0x5db4ee[_0x06da('0x4b')]));fs[_0x06da('0x60')](_0x3930b2);fs['unlinkSync'](_0x166d55);return _0x5db4ee;})[_0x06da('0x26')](function(_0x3f0200){if(_0x3f0200){return _0x3f5c0d['status'](0xcc)[_0x06da('0x29')]();}})[_0x06da('0x26')](handleEntityNotFound(_0x3f5c0d,null))['catch'](handleError(_0x3f5c0d,null));};