f143e4e6db8825c90ea6f84a05d961ff120b32cc
[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 _0xf3b2=['../../config/logger','api','../../config/environment','sendStatus','status','json','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','get','Sounds','UserProfileResource','end','stack','send','index','map','Sound','rawAttributes','type','key','model','name','query','keys','filters','intersection','attributes','length','nolimit','limit','sort','where','pick','filter','VIRTUAL','options','includeAll','include','findAll','rows','show','params','fields','catch','download','converted_format','existsSync','join','root','server/files/sounds/converted','ValidationError','Sound\x20not\x20found','%s.%s','save_name','format','basename','file','originalname','extname','filename','wav','server/files/sounds/original','info','Sound\x20upload\x20destination:\x20%s','transcode','unlinkSync','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_sampleCount','converted_channelCount','converted_sampleRate','0777','create','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','find','autoAssociation','error','description','delete','original_format','html-pdf','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../config/license/hardware'];(function(_0x1a57c7,_0x1f0c32){var _0xb5899c=function(_0x4b7242){while(--_0x4b7242){_0x1a57c7['push'](_0x1a57c7['shift']());}};_0xb5899c(++_0x1f0c32);}(_0xf3b2,0x152));var _0x2f3b=function(_0x3ad133,_0x377068){_0x3ad133=_0x3ad133-0x0;var _0x33b86a=_0xf3b2[_0x3ad133];return _0x33b86a;};'use strict';var pdf=require(_0x2f3b('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x2f3b('0x1'));var zipdir=require(_0x2f3b('0x2'));var jsonpatch=require(_0x2f3b('0x3'));var rp=require(_0x2f3b('0x4'));var moment=require(_0x2f3b('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x2f3b('0x6'));var path=require(_0x2f3b('0x7'));var sox=require('sox');var csv=require(_0x2f3b('0x8'));var ejs=require(_0x2f3b('0x9'));var fs=require('fs');var _=require(_0x2f3b('0xa'));var squel=require(_0x2f3b('0xb'));var crypto=require(_0x2f3b('0xc'));var jsforce=require(_0x2f3b('0xd'));var deskjs=require(_0x2f3b('0xe'));var toCsv=require(_0x2f3b('0x8'));var querystring=require(_0x2f3b('0xf'));var Papa=require(_0x2f3b('0x10'));var Redis=require('ioredis');var authService=require(_0x2f3b('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2f3b('0x12'));var logger=require(_0x2f3b('0x13'))(_0x2f3b('0x14'));var utils=require('../../config/utils');var config=require(_0x2f3b('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2af00c,_0x536ae6){_0x536ae6=_0x536ae6||0xcc;return function(_0x5d15e3){if(_0x5d15e3){return _0x2af00c[_0x2f3b('0x16')](_0x536ae6);}return _0x2af00c[_0x2f3b('0x17')](_0x536ae6)['end']();};}function respondWithResult(_0x3dd5d8,_0x3eff2e){_0x3eff2e=_0x3eff2e||0xc8;return function(_0x499e86){if(_0x499e86){return _0x3dd5d8[_0x2f3b('0x17')](_0x3eff2e)[_0x2f3b('0x18')](_0x499e86);}};}function respondWithFilteredResult(_0x378df4,_0xaa50b6){return function(_0x3fefc7){if(_0x3fefc7){var _0x22a04d=_0x3fefc7[_0x2f3b('0x19')],_0x1ea73b=_0xaa50b6['offset'],_0x456742=_0xaa50b6[_0x2f3b('0x1a')]+_0xaa50b6['limit'],_0x2b013b;if(_0x456742>=_0x22a04d){_0x456742=_0x22a04d;_0x2b013b=0xc8;}else{_0x2b013b=0xce;}_0x378df4[_0x2f3b('0x17')](_0x2b013b);return _0x378df4[_0x2f3b('0x1b')](_0x2f3b('0x1c'),_0x1ea73b+'-'+_0x456742+'/'+_0x22a04d)[_0x2f3b('0x18')](_0x3fefc7);}return null;};}function patchUpdates(_0x4c6a43){return function(_0x28e75f){try{jsonpatch[_0x2f3b('0x1d')](_0x28e75f,_0x4c6a43,!![]);}catch(_0x1d8290){return BPromise[_0x2f3b('0x1e')](_0x1d8290);}return _0x28e75f[_0x2f3b('0x1f')]();};}function saveUpdates(_0x512015,_0x3f09fb){return function(_0x10c716){if(_0x10c716){return _0x10c716[_0x2f3b('0x20')](_0x512015)[_0x2f3b('0x21')](function(_0x5ed7ed){return _0x5ed7ed;});}return null;};}function removeEntity(_0x59023a,_0x40c164){return function(_0x4b482d){if(_0x4b482d){return _0x4b482d[_0x2f3b('0x22')]()[_0x2f3b('0x21')](function(){var _0x5f598c=_0x4b482d[_0x2f3b('0x23')]({'plain':!![]});var _0x582d23=_0x2f3b('0x24');return db[_0x2f3b('0x25')][_0x2f3b('0x22')]({'where':{'type':_0x582d23,'resourceId':_0x5f598c['id']}})['then'](function(){return _0x4b482d;});})['then'](function(){_0x59023a['status'](0xcc)[_0x2f3b('0x26')]();});}};}function handleEntityNotFound(_0x16a7b5,_0x124a63){return function(_0x8d2e52){if(!_0x8d2e52){_0x16a7b5[_0x2f3b('0x16')](0x194);}return _0x8d2e52;};}function handleError(_0x1300dc,_0x2a5602){_0x2a5602=_0x2a5602||0x1f4;return function(_0x79cff4){logger['error'](_0x79cff4[_0x2f3b('0x27')]);if(_0x79cff4['name']){delete _0x79cff4['name'];}_0x1300dc['status'](_0x2a5602)[_0x2f3b('0x28')](_0x79cff4);};}exports[_0x2f3b('0x29')]=function(_0x37e573,_0x18f421){var _0x552ff4={},_0x34b0b5={},_0x26525b={'count':0x0,'rows':[]};var _0x32e60d=_[_0x2f3b('0x2a')](db[_0x2f3b('0x2b')][_0x2f3b('0x2c')],function(_0x66895f){return{'name':_0x66895f['fieldName'],'type':_0x66895f[_0x2f3b('0x2d')][_0x2f3b('0x2e')]};});_0x34b0b5[_0x2f3b('0x2f')]=_['map'](_0x32e60d,_0x2f3b('0x30'));_0x34b0b5[_0x2f3b('0x31')]=_[_0x2f3b('0x32')](_0x37e573[_0x2f3b('0x31')]);_0x34b0b5[_0x2f3b('0x33')]=_[_0x2f3b('0x34')](_0x34b0b5[_0x2f3b('0x2f')],_0x34b0b5['query']);_0x552ff4[_0x2f3b('0x35')]=_['intersection'](_0x34b0b5['model'],qs['fields'](_0x37e573[_0x2f3b('0x31')]['fields']));_0x552ff4[_0x2f3b('0x35')]=_0x552ff4[_0x2f3b('0x35')][_0x2f3b('0x36')]?_0x552ff4[_0x2f3b('0x35')]:_0x34b0b5[_0x2f3b('0x2f')];if(!_0x37e573[_0x2f3b('0x31')]['hasOwnProperty'](_0x2f3b('0x37'))){_0x552ff4[_0x2f3b('0x38')]=qs[_0x2f3b('0x38')](_0x37e573[_0x2f3b('0x31')][_0x2f3b('0x38')]);_0x552ff4[_0x2f3b('0x1a')]=qs[_0x2f3b('0x1a')](_0x37e573['query'][_0x2f3b('0x1a')]);}_0x552ff4['order']=qs[_0x2f3b('0x39')](_0x37e573[_0x2f3b('0x31')][_0x2f3b('0x39')]);_0x552ff4[_0x2f3b('0x3a')]=qs[_0x2f3b('0x33')](_[_0x2f3b('0x3b')](_0x37e573[_0x2f3b('0x31')],_0x34b0b5['filters']),_0x32e60d);if(_0x37e573[_0x2f3b('0x31')][_0x2f3b('0x3c')]){_0x552ff4[_0x2f3b('0x3a')]=_['merge'](_0x552ff4['where'],{'$or':_['map'](_0x32e60d,function(_0x4a0d16){if(_0x4a0d16[_0x2f3b('0x2d')]!==_0x2f3b('0x3d')){var _0x52f5ba={};_0x52f5ba[_0x4a0d16['name']]={'$like':'%'+_0x37e573['query']['filter']+'%'};return _0x52f5ba;}})});}_0x552ff4=_['merge']({},_0x552ff4,_0x37e573[_0x2f3b('0x3e')]);var _0x5c5ede={'where':_0x552ff4[_0x2f3b('0x3a')]};return db[_0x2f3b('0x2b')]['count'](_0x5c5ede)['then'](function(_0x122665){_0x26525b[_0x2f3b('0x19')]=_0x122665;if(_0x37e573[_0x2f3b('0x31')][_0x2f3b('0x3f')]){_0x552ff4[_0x2f3b('0x40')]=[{'all':!![]}];}return db[_0x2f3b('0x2b')][_0x2f3b('0x41')](_0x552ff4);})[_0x2f3b('0x21')](function(_0x2d4945){_0x26525b[_0x2f3b('0x42')]=_0x2d4945;return _0x26525b;})[_0x2f3b('0x21')](respondWithFilteredResult(_0x18f421,_0x552ff4))['catch'](handleError(_0x18f421,null));};exports[_0x2f3b('0x43')]=function(_0x5e7034,_0x3b47d6){var _0x5582c7={'raw':!![],'where':{'id':_0x5e7034[_0x2f3b('0x44')]['id']}},_0x4c2491={};_0x4c2491[_0x2f3b('0x2f')]=_[_0x2f3b('0x32')](db['Sound']['rawAttributes']);_0x4c2491[_0x2f3b('0x31')]=_[_0x2f3b('0x32')](_0x5e7034[_0x2f3b('0x31')]);_0x4c2491['filters']=_[_0x2f3b('0x34')](_0x4c2491[_0x2f3b('0x2f')],_0x4c2491[_0x2f3b('0x31')]);_0x5582c7[_0x2f3b('0x35')]=_[_0x2f3b('0x34')](_0x4c2491[_0x2f3b('0x2f')],qs[_0x2f3b('0x45')](_0x5e7034[_0x2f3b('0x31')][_0x2f3b('0x45')]));_0x5582c7[_0x2f3b('0x35')]=_0x5582c7[_0x2f3b('0x35')][_0x2f3b('0x36')]?_0x5582c7['attributes']:_0x4c2491['model'];if(_0x5e7034[_0x2f3b('0x31')][_0x2f3b('0x3f')]){_0x5582c7['include']=[{'all':!![]}];}_0x5582c7=_['merge']({},_0x5582c7,_0x5e7034[_0x2f3b('0x3e')]);return db[_0x2f3b('0x2b')]['find'](_0x5582c7)[_0x2f3b('0x21')](handleEntityNotFound(_0x3b47d6,null))[_0x2f3b('0x21')](respondWithResult(_0x3b47d6,null))[_0x2f3b('0x46')](handleError(_0x3b47d6,null));};exports[_0x2f3b('0x47')]=function(_0x31dfcf,_0x5b7c91,_0xf03509){return db['Sound']['find']({'where':{'id':_0x31dfcf[_0x2f3b('0x44')]['id']},'attributes':['name','save_name',_0x2f3b('0x48')],'raw':!![]})['then'](handleEntityNotFound(_0x5b7c91,null))[_0x2f3b('0x21')](function(_0xd1d36){if(_0xd1d36){if(!fs[_0x2f3b('0x49')](path[_0x2f3b('0x4a')](config[_0x2f3b('0x4b')],_0x2f3b('0x4c'),_0xd1d36['save_name']+'.'+_0xd1d36[_0x2f3b('0x48')]))){throw new db['Sequelize'][(_0x2f3b('0x4d'))](_0x2f3b('0x4e'));}return _0x5b7c91[_0x2f3b('0x47')](path[_0x2f3b('0x4a')](config['root'],_0x2f3b('0x4c'),util['format'](_0x2f3b('0x4f'),_0xd1d36[_0x2f3b('0x50')],_0xd1d36[_0x2f3b('0x48')])),util[_0x2f3b('0x51')]('%s.%s',_0xd1d36[_0x2f3b('0x30')],_0xd1d36[_0x2f3b('0x48')]));}return null;})[_0x2f3b('0x46')](handleError(_0x5b7c91,null));};exports['create']=function(_0x5d59c0,_0x476f88,_0xbff85b){var _0x460b94={'name':path[_0x2f3b('0x52')](_0x5d59c0[_0x2f3b('0x53')][_0x2f3b('0x54')],path[_0x2f3b('0x55')](_0x5d59c0['file'][_0x2f3b('0x54')])),'save_name':path[_0x2f3b('0x52')](_0x5d59c0[_0x2f3b('0x53')][_0x2f3b('0x56')],path[_0x2f3b('0x55')](_0x5d59c0[_0x2f3b('0x53')][_0x2f3b('0x56')])),'original_format':path[_0x2f3b('0x55')](_0x5d59c0[_0x2f3b('0x53')]['originalname'])['substring'](0x1),'converted_format':_0x2f3b('0x57')};var _0x212937=path[_0x2f3b('0x4a')](config[_0x2f3b('0x4b')],_0x2f3b('0x58'),_0x5d59c0['file'][_0x2f3b('0x56')]);var _0x2729a1=path[_0x2f3b('0x4a')](config[_0x2f3b('0x4b')],_0x2f3b('0x4c'),util['format'](_0x2f3b('0x4f'),path[_0x2f3b('0x52')](_0x5d59c0[_0x2f3b('0x53')]['filename'],path[_0x2f3b('0x55')](_0x5d59c0[_0x2f3b('0x53')][_0x2f3b('0x56')])),_0x460b94['converted_format']));logger[_0x2f3b('0x59')]('Sound\x20upload\x20filepath:\x20%s',_0x212937);logger[_0x2f3b('0x59')](_0x2f3b('0x5a'),_0x2729a1);try{fs['chmodSync'](_0x212937,parseInt('0777',0x8));var _0x5f3cf3=sox[_0x2f3b('0x5b')](_0x212937,_0x2729a1,{'sampleRate':0x1f40,'format':_0x2f3b('0x57'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x5f3cf3['on']('error',function(_0x13605a){fs[_0x2f3b('0x5c')](_0x212937);_0x476f88['status'](0x1f4)[_0x2f3b('0x28')](_0x13605a);});_0x5f3cf3['on']('src',function(_0xe3312c){_0x460b94['original_duration']=isNaN(_0xe3312c['duration'])?null:_0xe3312c[_0x2f3b('0x5d')]*0x3e8;_0x460b94[_0x2f3b('0x5e')]=isNaN(_0xe3312c['sampleCount'])?null:_0xe3312c[_0x2f3b('0x5f')];_0x460b94[_0x2f3b('0x60')]=isNaN(_0xe3312c[_0x2f3b('0x61')])?null:_0xe3312c[_0x2f3b('0x61')];_0x460b94[_0x2f3b('0x62')]=isNaN(_0xe3312c[_0x2f3b('0x63')])?null:_0xe3312c[_0x2f3b('0x63')];_0x460b94[_0x2f3b('0x64')]=isNaN(_0xe3312c[_0x2f3b('0x65')])?null:_0xe3312c[_0x2f3b('0x65')];});_0x5f3cf3['on'](_0x2f3b('0x66'),function(_0x49837f){_0x460b94['converted_duration']=isNaN(_0x49837f[_0x2f3b('0x5d')])?null:_0x49837f[_0x2f3b('0x5d')]*0x3e8;_0x460b94[_0x2f3b('0x67')]=isNaN(_0x49837f[_0x2f3b('0x5f')])?null:_0x49837f[_0x2f3b('0x5f')];_0x460b94[_0x2f3b('0x68')]=isNaN(_0x49837f[_0x2f3b('0x61')])?null:_0x49837f[_0x2f3b('0x61')];_0x460b94['converted_bitRate']=isNaN(_0x49837f[_0x2f3b('0x63')])?null:_0x49837f[_0x2f3b('0x63')];_0x460b94[_0x2f3b('0x69')]=isNaN(_0x49837f[_0x2f3b('0x65')])?null:_0x49837f[_0x2f3b('0x65')];});_0x5f3cf3['on'](_0x2f3b('0x26'),function(){fs['chmodSync'](_0x2729a1,parseInt(_0x2f3b('0x6a'),0x8));return db['Sound'][_0x2f3b('0x6b')](_0x460b94)[_0x2f3b('0x21')](function(_0x54bff2){var _0x2cf28b={'role':_0x5d59c0[_0x2f3b('0x6c')]['role'],'userProfileId':_0x5d59c0[_0x2f3b('0x6c')][_0x2f3b('0x6d')]};if(!_0x2cf28b)throw new Error(_0x2f3b('0x6e'));if(_0x2cf28b['role']===_0x2f3b('0x6f')){var _0x31bb57=_0x54bff2[_0x2f3b('0x23')]({'plain':!![]});return db[_0x2f3b('0x70')][_0x2f3b('0x71')]({'where':{'name':_0x2f3b('0x24'),'userProfileId':_0x2cf28b[_0x2f3b('0x6d')]},'raw':!![]})[_0x2f3b('0x21')](function(_0x2e52ab){if(_0x2e52ab&&_0x2e52ab[_0x2f3b('0x72')]===0x0){return db[_0x2f3b('0x25')][_0x2f3b('0x6b')]({'name':_0x31bb57['name'],'resourceId':_0x31bb57['id'],'type':_0x2e52ab['name'],'sectionId':_0x2e52ab['id']},{})['then'](function(){return _0x54bff2;});}else{return _0x54bff2;}})[_0x2f3b('0x46')](function(_0x564da9){logger[_0x2f3b('0x73')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x564da9);throw _0x564da9;});}return _0x54bff2;})[_0x2f3b('0x21')](respondWithResult(_0x476f88,null))[_0x2f3b('0x46')](handleError(_0x476f88,null));});_0x5f3cf3['start']();}catch(_0x31e6fc){_0x476f88[_0x2f3b('0x17')](0x1f4)[_0x2f3b('0x28')](_0x31e6fc);}};exports[_0x2f3b('0x20')]=function(_0xe5b1e,_0xfbf7e2,_0x4862a3){return db['Sound'][_0x2f3b('0x71')]({'where':{'id':_0xe5b1e[_0x2f3b('0x44')]['id']}})[_0x2f3b('0x21')](handleEntityNotFound(_0xfbf7e2,null))[_0x2f3b('0x21')](saveUpdates(_['pick'](_0xe5b1e[_0x2f3b('0x6c')],['name',_0x2f3b('0x74')]),null))[_0x2f3b('0x21')](respondWithResult(_0xfbf7e2,null))[_0x2f3b('0x46')](handleError(_0xfbf7e2,null));};exports[_0x2f3b('0x75')]=function(_0x22d912,_0x19006f,_0x2c9120){return db['Sound']['find']({'where':{'id':_0x22d912[_0x2f3b('0x44')]['id']}})[_0x2f3b('0x21')](function(_0x1cb5e4){if(_0x1cb5e4){return _0x1cb5e4['destroy']();}})[_0x2f3b('0x21')](function(_0x529dd3){var _0x3bdcb=path['join'](config['root'],_0x2f3b('0x58'),util['format']('%s.%s',_0x529dd3[_0x2f3b('0x50')],_0x529dd3[_0x2f3b('0x76')]));var _0x5f0fa0=path[_0x2f3b('0x4a')](config[_0x2f3b('0x4b')],_0x2f3b('0x4c'),util[_0x2f3b('0x51')](_0x2f3b('0x4f'),_0x529dd3['save_name'],_0x529dd3[_0x2f3b('0x48')]));fs[_0x2f3b('0x5c')](_0x3bdcb);fs[_0x2f3b('0x5c')](_0x5f0fa0);return _0x529dd3;})[_0x2f3b('0x21')](function(_0x72cd65){if(_0x72cd65){return _0x19006f[_0x2f3b('0x17')](0xcc)['end']();}})[_0x2f3b('0x21')](handleEntityNotFound(_0x19006f,null))['catch'](handleError(_0x19006f,null));};