dc8cb0572abbaaec09e8f608ab34eb35dc997cf4
[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 _0x3427=['format','%s.%s','create','file','originalname','basename','filename','extname','substring','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','0777','wav','src','duration','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_sampleCount','converted_channelCount','converted_sampleRate','chmodSync','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','Sounds','autoAssociation','start','description','original_format','unlinkSync','zip-dir','bluebird','mustache','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','destroy','get','UserProfileResource','error','stack','send','index','map','Sound','rawAttributes','fieldName','type','key','name','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','show','keys','find','catch','download','params','save_name','converted_format','existsSync','join','server/files/sounds/converted','ValidationError','root'];(function(_0xadb99a,_0x5af811){var _0x3a4507=function(_0x4ed5b2){while(--_0x4ed5b2){_0xadb99a['push'](_0xadb99a['shift']());}};_0x3a4507(++_0x5af811);}(_0x3427,0x9f));var _0x7342=function(_0x8a08d0,_0xfcb749){_0x8a08d0=_0x8a08d0-0x0;var _0x4e6b53=_0x3427[_0x8a08d0];return _0x4e6b53;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x7342('0x0'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x7342('0x1'));var Mustache=require(_0x7342('0x2'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x7342('0x3'));var ejs=require(_0x7342('0x4'));var fs=require('fs');var fs_extra=require(_0x7342('0x5'));var _=require(_0x7342('0x6'));var squel=require(_0x7342('0x7'));var crypto=require(_0x7342('0x8'));var jsforce=require(_0x7342('0x9'));var deskjs=require(_0x7342('0xa'));var toCsv=require(_0x7342('0x3'));var querystring=require(_0x7342('0xb'));var Papa=require(_0x7342('0xc'));var Redis=require(_0x7342('0xd'));var authService=require(_0x7342('0xe'));var qs=require(_0x7342('0xf'));var as=require(_0x7342('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7342('0x11'))(_0x7342('0x12'));var utils=require('../../config/utils');var config=require(_0x7342('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x7342('0x14'))['db'];function respondWithStatusCode(_0x506050,_0x121bb9){_0x121bb9=_0x121bb9||0xcc;return function(_0x443f55){if(_0x443f55){return _0x506050[_0x7342('0x15')](_0x121bb9);}return _0x506050[_0x7342('0x16')](_0x121bb9)[_0x7342('0x17')]();};}function respondWithResult(_0x13f59b,_0x4c105f){_0x4c105f=_0x4c105f||0xc8;return function(_0x575583){if(_0x575583){return _0x13f59b[_0x7342('0x16')](_0x4c105f)['json'](_0x575583);}};}function respondWithFilteredResult(_0xe99fe8,_0xfcea82){return function(_0x5c4922){if(_0x5c4922){var _0x5a0468=typeof _0xfcea82[_0x7342('0x18')]===_0x7342('0x19')&&typeof _0xfcea82[_0x7342('0x1a')]==='undefined';var _0x50efd9=_0x5c4922[_0x7342('0x1b')];var _0x381d96=_0x5a0468?0x0:_0xfcea82[_0x7342('0x18')];var _0x391c93=_0x5a0468?_0x5c4922[_0x7342('0x1b')]:_0xfcea82[_0x7342('0x18')]+_0xfcea82[_0x7342('0x1a')];var _0x4b72dc;if(_0x391c93>=_0x50efd9){_0x391c93=_0x50efd9;_0x4b72dc=0xc8;}else{_0x4b72dc=0xce;}_0xe99fe8[_0x7342('0x16')](_0x4b72dc);return _0xe99fe8[_0x7342('0x1c')](_0x7342('0x1d'),_0x381d96+'-'+_0x391c93+'/'+_0x50efd9)[_0x7342('0x1e')](_0x5c4922);}return null;};}function patchUpdates(_0x596e8b){return function(_0x416514){try{jsonpatch[_0x7342('0x1f')](_0x416514,_0x596e8b,!![]);}catch(_0x8fb4e6){return BPromise['reject'](_0x8fb4e6);}return _0x416514[_0x7342('0x20')]();};}function saveUpdates(_0xa8dcb1,_0x1ecc86){return function(_0x4edeb1){if(_0x4edeb1){return _0x4edeb1[_0x7342('0x21')](_0xa8dcb1)[_0x7342('0x22')](function(_0x172f86){return _0x172f86;});}return null;};}function removeEntity(_0x350220,_0x981644){return function(_0x15afe4){if(_0x15afe4){return _0x15afe4[_0x7342('0x23')]()['then'](function(){var _0x4cf310=_0x15afe4[_0x7342('0x24')]({'plain':!![]});var _0x1ef103='Sounds';return db[_0x7342('0x25')][_0x7342('0x23')]({'where':{'type':_0x1ef103,'resourceId':_0x4cf310['id']}})[_0x7342('0x22')](function(){return _0x15afe4;});})[_0x7342('0x22')](function(){_0x350220[_0x7342('0x16')](0xcc)[_0x7342('0x17')]();});}};}function handleEntityNotFound(_0x4fe465,_0x38961e){return function(_0x54552d){if(!_0x54552d){_0x4fe465['sendStatus'](0x194);}return _0x54552d;};}function handleError(_0x125524,_0x574c97){_0x574c97=_0x574c97||0x1f4;return function(_0x3609ea){logger[_0x7342('0x26')](_0x3609ea[_0x7342('0x27')]);if(_0x3609ea['name']){delete _0x3609ea['name'];}_0x125524[_0x7342('0x16')](_0x574c97)[_0x7342('0x28')](_0x3609ea);};}exports[_0x7342('0x29')]=function(_0x37e2f0,_0x34a1e4){var _0x8528ec={},_0x57d8e5={},_0x3b0b27={'count':0x0,'rows':[]};var _0x26551e=_[_0x7342('0x2a')](db[_0x7342('0x2b')][_0x7342('0x2c')],function(_0x511887){return{'name':_0x511887[_0x7342('0x2d')],'type':_0x511887[_0x7342('0x2e')][_0x7342('0x2f')]};});_0x57d8e5['model']=_[_0x7342('0x2a')](_0x26551e,_0x7342('0x30'));_0x57d8e5['query']=_['keys'](_0x37e2f0[_0x7342('0x31')]);_0x57d8e5[_0x7342('0x32')]=_[_0x7342('0x33')](_0x57d8e5[_0x7342('0x34')],_0x57d8e5[_0x7342('0x31')]);_0x8528ec[_0x7342('0x35')]=_['intersection'](_0x57d8e5[_0x7342('0x34')],qs[_0x7342('0x36')](_0x37e2f0['query'][_0x7342('0x36')]));_0x8528ec[_0x7342('0x35')]=_0x8528ec[_0x7342('0x35')][_0x7342('0x37')]?_0x8528ec['attributes']:_0x57d8e5[_0x7342('0x34')];if(!_0x37e2f0[_0x7342('0x31')][_0x7342('0x38')]('nolimit')){_0x8528ec[_0x7342('0x1a')]=qs[_0x7342('0x1a')](_0x37e2f0['query'][_0x7342('0x1a')]);_0x8528ec['offset']=qs['offset'](_0x37e2f0['query'][_0x7342('0x18')]);}_0x8528ec[_0x7342('0x39')]=qs[_0x7342('0x3a')](_0x37e2f0[_0x7342('0x31')][_0x7342('0x3a')]);_0x8528ec[_0x7342('0x3b')]=qs[_0x7342('0x32')](_[_0x7342('0x3c')](_0x37e2f0['query'],_0x57d8e5[_0x7342('0x32')]),_0x26551e);if(_0x37e2f0['query'][_0x7342('0x3d')]){_0x8528ec[_0x7342('0x3b')]=_[_0x7342('0x3e')](_0x8528ec[_0x7342('0x3b')],{'$or':_['map'](_0x26551e,function(_0x46f69d){if(_0x46f69d['type']!==_0x7342('0x3f')){var _0x5ac2f5={};_0x5ac2f5[_0x46f69d[_0x7342('0x30')]]={'$like':'%'+_0x37e2f0[_0x7342('0x31')][_0x7342('0x3d')]+'%'};return _0x5ac2f5;}})});}_0x8528ec=_[_0x7342('0x3e')]({},_0x8528ec,_0x37e2f0[_0x7342('0x40')]);var _0x242ebc={'where':_0x8528ec[_0x7342('0x3b')]};return db[_0x7342('0x2b')][_0x7342('0x1b')](_0x242ebc)[_0x7342('0x22')](function(_0x143b13){_0x3b0b27[_0x7342('0x1b')]=_0x143b13;if(_0x37e2f0[_0x7342('0x31')][_0x7342('0x41')]){_0x8528ec[_0x7342('0x42')]=[{'all':!![]}];}return db[_0x7342('0x2b')]['findAll'](_0x8528ec);})['then'](function(_0x19e95f){_0x3b0b27[_0x7342('0x43')]=_0x19e95f;return _0x3b0b27;})[_0x7342('0x22')](respondWithFilteredResult(_0x34a1e4,_0x8528ec))['catch'](handleError(_0x34a1e4,null));};exports[_0x7342('0x44')]=function(_0x551ff3,_0xaba7b7){var _0x1fa455={'raw':!![],'where':{'id':_0x551ff3['params']['id']}},_0xb68f1f={};_0xb68f1f[_0x7342('0x34')]=_['keys'](db[_0x7342('0x2b')]['rawAttributes']);_0xb68f1f[_0x7342('0x31')]=_[_0x7342('0x45')](_0x551ff3[_0x7342('0x31')]);_0xb68f1f['filters']=_[_0x7342('0x33')](_0xb68f1f[_0x7342('0x34')],_0xb68f1f[_0x7342('0x31')]);_0x1fa455['attributes']=_[_0x7342('0x33')](_0xb68f1f[_0x7342('0x34')],qs[_0x7342('0x36')](_0x551ff3[_0x7342('0x31')][_0x7342('0x36')]));_0x1fa455['attributes']=_0x1fa455[_0x7342('0x35')][_0x7342('0x37')]?_0x1fa455[_0x7342('0x35')]:_0xb68f1f[_0x7342('0x34')];if(_0x551ff3['query'][_0x7342('0x41')]){_0x1fa455[_0x7342('0x42')]=[{'all':!![]}];}_0x1fa455=_[_0x7342('0x3e')]({},_0x1fa455,_0x551ff3[_0x7342('0x40')]);return db[_0x7342('0x2b')][_0x7342('0x46')](_0x1fa455)[_0x7342('0x22')](handleEntityNotFound(_0xaba7b7,null))[_0x7342('0x22')](respondWithResult(_0xaba7b7,null))[_0x7342('0x47')](handleError(_0xaba7b7,null));};exports[_0x7342('0x48')]=function(_0x3a76dd,_0x586122,_0x440b0b){return db[_0x7342('0x2b')][_0x7342('0x46')]({'where':{'id':_0x3a76dd[_0x7342('0x49')]['id']},'attributes':[_0x7342('0x30'),_0x7342('0x4a'),_0x7342('0x4b')],'raw':!![]})[_0x7342('0x22')](handleEntityNotFound(_0x586122,null))['then'](function(_0x53a362){if(_0x53a362){if(!fs[_0x7342('0x4c')](path[_0x7342('0x4d')](config['root'],_0x7342('0x4e'),_0x53a362[_0x7342('0x4a')]+'.'+_0x53a362[_0x7342('0x4b')]))){throw new db['Sequelize'][(_0x7342('0x4f'))]('Sound\x20not\x20found');}return _0x586122['download'](path[_0x7342('0x4d')](config[_0x7342('0x50')],_0x7342('0x4e'),util[_0x7342('0x51')]('%s.%s',_0x53a362[_0x7342('0x4a')],_0x53a362['converted_format'])),util['format'](_0x7342('0x52'),_0x53a362[_0x7342('0x30')],_0x53a362[_0x7342('0x4b')]));}return null;})[_0x7342('0x47')](handleError(_0x586122,null));};exports[_0x7342('0x53')]=function(_0x458b3c,_0x2802d9,_0x29b938){var _0x31f749={'name':path['basename'](_0x458b3c[_0x7342('0x54')][_0x7342('0x55')],path['extname'](_0x458b3c[_0x7342('0x54')]['originalname'])),'save_name':path[_0x7342('0x56')](_0x458b3c['file'][_0x7342('0x57')],path['extname'](_0x458b3c[_0x7342('0x54')]['filename'])),'original_format':path[_0x7342('0x58')](_0x458b3c[_0x7342('0x54')][_0x7342('0x55')])[_0x7342('0x59')](0x1),'converted_format':'wav'};var _0x48de34=path[_0x7342('0x4d')](config['root'],'server/files/sounds/original',_0x458b3c[_0x7342('0x54')][_0x7342('0x57')]);var _0x5343cb=path[_0x7342('0x4d')](config['root'],_0x7342('0x4e'),util['format'](_0x7342('0x52'),path[_0x7342('0x56')](_0x458b3c['file'][_0x7342('0x57')],path[_0x7342('0x58')](_0x458b3c[_0x7342('0x54')]['filename'])),_0x31f749[_0x7342('0x4b')]));logger[_0x7342('0x5a')](_0x7342('0x5b'),_0x48de34);logger[_0x7342('0x5a')](_0x7342('0x5c'),_0x5343cb);try{fs['chmodSync'](_0x48de34,parseInt(_0x7342('0x5d'),0x8));var _0x28276a=sox['transcode'](_0x48de34,_0x5343cb,{'sampleRate':0x1f40,'format':_0x7342('0x5e'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x28276a['on'](_0x7342('0x26'),function(_0x4b5d5e){fs['unlinkSync'](_0x48de34);_0x2802d9[_0x7342('0x16')](0x1f4)['send'](_0x4b5d5e);});_0x28276a['on'](_0x7342('0x5f'),function(_0x2d0b6f){_0x31f749['original_duration']=isNaN(_0x2d0b6f[_0x7342('0x60')])?null:_0x2d0b6f[_0x7342('0x60')]*0x3e8;_0x31f749['original_sampleCount']=isNaN(_0x2d0b6f[_0x7342('0x61')])?null:_0x2d0b6f[_0x7342('0x61')];_0x31f749[_0x7342('0x62')]=isNaN(_0x2d0b6f['channelCount'])?null:_0x2d0b6f[_0x7342('0x63')];_0x31f749[_0x7342('0x64')]=isNaN(_0x2d0b6f[_0x7342('0x65')])?null:_0x2d0b6f[_0x7342('0x65')];_0x31f749[_0x7342('0x66')]=isNaN(_0x2d0b6f[_0x7342('0x67')])?null:_0x2d0b6f[_0x7342('0x67')];});_0x28276a['on'](_0x7342('0x68'),function(_0x58d4da){_0x31f749['converted_duration']=isNaN(_0x58d4da[_0x7342('0x60')])?null:_0x58d4da['duration']*0x3e8;_0x31f749[_0x7342('0x69')]=isNaN(_0x58d4da[_0x7342('0x61')])?null:_0x58d4da[_0x7342('0x61')];_0x31f749[_0x7342('0x6a')]=isNaN(_0x58d4da[_0x7342('0x63')])?null:_0x58d4da[_0x7342('0x63')];_0x31f749['converted_bitRate']=isNaN(_0x58d4da['bitRate'])?null:_0x58d4da[_0x7342('0x65')];_0x31f749[_0x7342('0x6b')]=isNaN(_0x58d4da['sampleRate'])?null:_0x58d4da[_0x7342('0x67')];});_0x28276a['on'](_0x7342('0x17'),function(){fs[_0x7342('0x6c')](_0x5343cb,parseInt('0777',0x8));return db[_0x7342('0x2b')][_0x7342('0x53')](_0x31f749)[_0x7342('0x22')](function(_0x1ff1d8){var _0x534011={'role':_0x458b3c[_0x7342('0x6d')][_0x7342('0x6e')],'userProfileId':_0x458b3c['body'][_0x7342('0x6f')]};if(!_0x534011)throw new Error(_0x7342('0x70'));if(_0x534011[_0x7342('0x6e')]===_0x7342('0x71')){var _0x15ecc7=_0x1ff1d8[_0x7342('0x24')]({'plain':!![]});return db['UserProfileSection'][_0x7342('0x46')]({'where':{'name':_0x7342('0x72'),'userProfileId':_0x534011[_0x7342('0x6f')]},'raw':!![]})[_0x7342('0x22')](function(_0x42fdd1){if(_0x42fdd1&&_0x42fdd1[_0x7342('0x73')]===0x0){return db[_0x7342('0x25')][_0x7342('0x53')]({'name':_0x15ecc7['name'],'resourceId':_0x15ecc7['id'],'type':_0x42fdd1[_0x7342('0x30')],'sectionId':_0x42fdd1['id']},{})[_0x7342('0x22')](function(){return _0x1ff1d8;});}else{return _0x1ff1d8;}})[_0x7342('0x47')](function(_0x42ae64){logger[_0x7342('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x42ae64);throw _0x42ae64;});}return _0x1ff1d8;})[_0x7342('0x22')](respondWithResult(_0x2802d9,null))[_0x7342('0x47')](handleError(_0x2802d9,null));});_0x28276a[_0x7342('0x74')]();}catch(_0x81ecda){_0x2802d9[_0x7342('0x16')](0x1f4)[_0x7342('0x28')](_0x81ecda);}};exports[_0x7342('0x21')]=function(_0xf9589,_0x16aee3,_0x2ad3c8){return db[_0x7342('0x2b')]['find']({'where':{'id':_0xf9589['params']['id']}})[_0x7342('0x22')](handleEntityNotFound(_0x16aee3,null))[_0x7342('0x22')](saveUpdates(_['pick'](_0xf9589[_0x7342('0x6d')],['name',_0x7342('0x75')]),null))[_0x7342('0x22')](respondWithResult(_0x16aee3,null))['catch'](handleError(_0x16aee3,null));};exports['delete']=function(_0x31548b,_0xc1f00c,_0x217860){return db[_0x7342('0x2b')]['find']({'where':{'id':_0x31548b[_0x7342('0x49')]['id']}})[_0x7342('0x22')](function(_0xfb3012){if(_0xfb3012){return _0xfb3012[_0x7342('0x23')]();}})[_0x7342('0x22')](function(_0x338ee9){var _0x272d4b=path[_0x7342('0x4d')](config[_0x7342('0x50')],'server/files/sounds/original',util['format']('%s.%s',_0x338ee9[_0x7342('0x4a')],_0x338ee9[_0x7342('0x76')]));var _0x3a44e9=path[_0x7342('0x4d')](config[_0x7342('0x50')],_0x7342('0x4e'),util[_0x7342('0x51')](_0x7342('0x52'),_0x338ee9[_0x7342('0x4a')],_0x338ee9[_0x7342('0x4b')]));fs[_0x7342('0x77')](_0x272d4b);fs[_0x7342('0x77')](_0x3a44e9);return _0x338ee9;})[_0x7342('0x22')](function(_0x3a7998){if(_0x3a7998){return _0xc1f00c[_0x7342('0x16')](0xcc)[_0x7342('0x17')]();}})[_0x7342('0x22')](handleEntityNotFound(_0xc1f00c,null))[_0x7342('0x47')](handleError(_0xc1f00c,null));};