231d22d89f3c18101ae2e0a04e145cad9d880e8a
[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 _0x936a=['src','duration','original_sampleCount','sampleCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_sampleCount','converted_channelCount','converted_sampleRate','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','start','original_format','rimraf','fast-json-patch','request-promise','moment','mustache','path','to-csv','ejs','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','save','update','then','get','UserProfileResource','error','send','render','body','message','agent','account','index','map','fieldName','key','name','query','keys','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','sort','pick','filter','type','VIRTUAL','options','where','Sound','includeAll','include','findAll','rows','show','params','rawAttributes','length','merge','catch','download','find','save_name','converted_format','existsSync','root','server/files/sounds/converted','ValidationError','Sound\x20not\x20found','join','format','%s.%s','create','basename','file','originalname','filename','extname','substring','wav','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','0777','unlinkSync'];(function(_0x1343d8,_0x4a39c0){var _0x4fbb95=function(_0x5e4cf8){while(--_0x5e4cf8){_0x1343d8['push'](_0x1343d8['shift']());}};_0x4fbb95(++_0x4a39c0);}(_0x936a,0x180));var _0xa936=function(_0x5b060b,_0x5307a1){_0x5b060b=_0x5b060b-0x0;var _0x54f3a2=_0x936a[_0x5b060b];return _0x54f3a2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa936('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa936('0x1'));var rp=require(_0xa936('0x2'));var moment=require(_0xa936('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xa936('0x4'));var util=require('util');var path=require(_0xa936('0x5'));var sox=require('sox');var csv=require(_0xa936('0x6'));var ejs=require(_0xa936('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0xa936('0x8'));var jsforce=require(_0xa936('0x9'));var deskjs=require(_0xa936('0xa'));var toCsv=require(_0xa936('0x6'));var querystring=require(_0xa936('0xb'));var Papa=require(_0xa936('0xc'));var Redis=require('ioredis');var authService=require(_0xa936('0xd'));var qs=require(_0xa936('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xa936('0xf'));var config=require(_0xa936('0x10'));var licenseUtil=require(_0xa936('0x11'));var db=require(_0xa936('0x12'))['db'];function respondWithStatusCode(_0x2d3235,_0x2e2cf2){_0x2e2cf2=_0x2e2cf2||0xcc;return function(_0x591e10){if(_0x591e10){return _0x2d3235[_0xa936('0x13')](_0x2e2cf2);}return _0x2d3235[_0xa936('0x14')](_0x2e2cf2)[_0xa936('0x15')]();};}function respondWithResult(_0xde1872,_0x547efa){_0x547efa=_0x547efa||0xc8;return function(_0x108b16){if(_0x108b16){return _0xde1872[_0xa936('0x14')](_0x547efa)[_0xa936('0x16')](_0x108b16);}};}function respondWithFilteredResult(_0x10743a,_0x513174){return function(_0x1d1a5a){if(_0x1d1a5a){var _0x179585=typeof _0x513174[_0xa936('0x17')]==='undefined'&&typeof _0x513174[_0xa936('0x18')]===_0xa936('0x19');var _0x4f422f=_0x1d1a5a[_0xa936('0x1a')];var _0x46b271=_0x179585?0x0:_0x513174[_0xa936('0x17')];var _0xd25b61=_0x179585?_0x1d1a5a[_0xa936('0x1a')]:_0x513174['offset']+_0x513174['limit'];var _0xf1c026;if(_0xd25b61>=_0x4f422f){_0xd25b61=_0x4f422f;_0xf1c026=0xc8;}else{_0xf1c026=0xce;}_0x10743a[_0xa936('0x14')](_0xf1c026);return _0x10743a[_0xa936('0x1b')]('Content-Range',_0x46b271+'-'+_0xd25b61+'/'+_0x4f422f)['json'](_0x1d1a5a);}return null;};}function patchUpdates(_0x45d7f3){return function(_0xd64903){try{jsonpatch[_0xa936('0x1c')](_0xd64903,_0x45d7f3,!![]);}catch(_0x2ef2cd){return BPromise[_0xa936('0x1d')](_0x2ef2cd);}return _0xd64903[_0xa936('0x1e')]();};}function saveUpdates(_0x4e0450,_0x1de978){return function(_0x5d18b7){if(_0x5d18b7){return _0x5d18b7[_0xa936('0x1f')](_0x4e0450)['then'](function(_0x49c8d2){return _0x49c8d2;});}return null;};}function removeEntity(_0x4c409c,_0x648bd){return function(_0x562327){if(_0x562327){return _0x562327['destroy']()[_0xa936('0x20')](function(){var _0x40769a=_0x562327[_0xa936('0x21')]({'plain':!![]});var _0x15cb3f='Sounds';return db[_0xa936('0x22')]['destroy']({'where':{'type':_0x15cb3f,'resourceId':_0x40769a['id']}})[_0xa936('0x20')](function(){return _0x562327;});})[_0xa936('0x20')](function(){_0x4c409c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x537ce0,_0x1e029d){return function(_0x1244e6){if(!_0x1244e6){_0x537ce0[_0xa936('0x13')](0x194);}return _0x1244e6;};}function handleError(_0x315537,_0x2b10f9){_0x2b10f9=_0x2b10f9||0x1f4;return function(_0x2fc464){logger[_0xa936('0x23')](_0x2fc464['stack']);if(_0x2fc464['name']){delete _0x2fc464['name'];}_0x315537[_0xa936('0x14')](_0x2b10f9)[_0xa936('0x24')](_0x2fc464);};}function getMustacheRender(_0x50519d,_0x30e318){return Mustache[_0xa936('0x25')](_0x50519d,_['merge'](_0x30e318[_0xa936('0x26')],{'contact':_0x30e318['contact'],'message':_0x30e318[_0xa936('0x27')],'agent':_0x30e318[_0xa936('0x28')],'interaction':_0x30e318['interaction'],'account':_0x30e318[_0xa936('0x29')]}))||'';}exports[_0xa936('0x2a')]=function(_0x443e5e,_0x2d5af8){var _0x2367b8={},_0x206944={},_0x368534={'count':0x0,'rows':[]};var _0x47b319=_[_0xa936('0x2b')](db['Sound']['rawAttributes'],function(_0x4106cf){return{'name':_0x4106cf[_0xa936('0x2c')],'type':_0x4106cf['type'][_0xa936('0x2d')]};});_0x206944['model']=_['map'](_0x47b319,_0xa936('0x2e'));_0x206944[_0xa936('0x2f')]=_[_0xa936('0x30')](_0x443e5e[_0xa936('0x2f')]);_0x206944[_0xa936('0x31')]=_[_0xa936('0x32')](_0x206944[_0xa936('0x33')],_0x206944[_0xa936('0x2f')]);_0x2367b8['attributes']=_[_0xa936('0x32')](_0x206944[_0xa936('0x33')],qs[_0xa936('0x34')](_0x443e5e['query'][_0xa936('0x34')]));_0x2367b8[_0xa936('0x35')]=_0x2367b8[_0xa936('0x35')]['length']?_0x2367b8[_0xa936('0x35')]:_0x206944[_0xa936('0x33')];if(!_0x443e5e[_0xa936('0x2f')][_0xa936('0x36')](_0xa936('0x37'))){_0x2367b8['limit']=qs[_0xa936('0x18')](_0x443e5e[_0xa936('0x2f')][_0xa936('0x18')]);_0x2367b8[_0xa936('0x17')]=qs[_0xa936('0x17')](_0x443e5e[_0xa936('0x2f')][_0xa936('0x17')]);}_0x2367b8['order']=qs[_0xa936('0x38')](_0x443e5e[_0xa936('0x2f')][_0xa936('0x38')]);_0x2367b8['where']=qs[_0xa936('0x31')](_[_0xa936('0x39')](_0x443e5e[_0xa936('0x2f')],_0x206944[_0xa936('0x31')]),_0x47b319);if(_0x443e5e[_0xa936('0x2f')][_0xa936('0x3a')]){_0x2367b8['where']=_['merge'](_0x2367b8['where'],{'$or':_[_0xa936('0x2b')](_0x47b319,function(_0x4eab98){if(_0x4eab98[_0xa936('0x3b')]!==_0xa936('0x3c')){var _0x551055={};_0x551055[_0x4eab98[_0xa936('0x2e')]]={'$like':'%'+_0x443e5e[_0xa936('0x2f')][_0xa936('0x3a')]+'%'};return _0x551055;}})});}_0x2367b8=_['merge']({},_0x2367b8,_0x443e5e[_0xa936('0x3d')]);var _0x234247={'where':_0x2367b8[_0xa936('0x3e')]};return db[_0xa936('0x3f')]['count'](_0x234247)[_0xa936('0x20')](function(_0x409d7e){_0x368534[_0xa936('0x1a')]=_0x409d7e;if(_0x443e5e[_0xa936('0x2f')][_0xa936('0x40')]){_0x2367b8[_0xa936('0x41')]=[{'all':!![]}];}return db[_0xa936('0x3f')][_0xa936('0x42')](_0x2367b8);})[_0xa936('0x20')](function(_0x342ac4){_0x368534[_0xa936('0x43')]=_0x342ac4;return _0x368534;})['then'](respondWithFilteredResult(_0x2d5af8,_0x2367b8))['catch'](handleError(_0x2d5af8,null));};exports[_0xa936('0x44')]=function(_0x4e234b,_0x4341b4){var _0x2870da={'raw':!![],'where':{'id':_0x4e234b[_0xa936('0x45')]['id']}},_0x182529={};_0x182529[_0xa936('0x33')]=_[_0xa936('0x30')](db[_0xa936('0x3f')][_0xa936('0x46')]);_0x182529[_0xa936('0x2f')]=_[_0xa936('0x30')](_0x4e234b[_0xa936('0x2f')]);_0x182529['filters']=_[_0xa936('0x32')](_0x182529[_0xa936('0x33')],_0x182529['query']);_0x2870da[_0xa936('0x35')]=_['intersection'](_0x182529[_0xa936('0x33')],qs['fields'](_0x4e234b[_0xa936('0x2f')][_0xa936('0x34')]));_0x2870da['attributes']=_0x2870da[_0xa936('0x35')][_0xa936('0x47')]?_0x2870da[_0xa936('0x35')]:_0x182529[_0xa936('0x33')];if(_0x4e234b[_0xa936('0x2f')][_0xa936('0x40')]){_0x2870da[_0xa936('0x41')]=[{'all':!![]}];}_0x2870da=_[_0xa936('0x48')]({},_0x2870da,_0x4e234b[_0xa936('0x3d')]);return db['Sound']['find'](_0x2870da)['then'](handleEntityNotFound(_0x4341b4,null))['then'](respondWithResult(_0x4341b4,null))[_0xa936('0x49')](handleError(_0x4341b4,null));};exports[_0xa936('0x4a')]=function(_0x41f8fc,_0x531b64,_0x5ab5bf){return db[_0xa936('0x3f')][_0xa936('0x4b')]({'where':{'id':_0x41f8fc[_0xa936('0x45')]['id']},'attributes':[_0xa936('0x2e'),_0xa936('0x4c'),_0xa936('0x4d')],'raw':!![]})[_0xa936('0x20')](handleEntityNotFound(_0x531b64,null))[_0xa936('0x20')](function(_0x14de48){if(_0x14de48){if(!fs[_0xa936('0x4e')](path['join'](config[_0xa936('0x4f')],_0xa936('0x50'),_0x14de48[_0xa936('0x4c')]+'.'+_0x14de48[_0xa936('0x4d')]))){throw new db['Sequelize'][(_0xa936('0x51'))](_0xa936('0x52'));}return _0x531b64[_0xa936('0x4a')](path[_0xa936('0x53')](config['root'],_0xa936('0x50'),util[_0xa936('0x54')](_0xa936('0x55'),_0x14de48['save_name'],_0x14de48[_0xa936('0x4d')])),util[_0xa936('0x54')](_0xa936('0x55'),_0x14de48['name'],_0x14de48[_0xa936('0x4d')]));}return null;})['catch'](handleError(_0x531b64,null));};exports[_0xa936('0x56')]=function(_0x1dd16d,_0x55c8c6,_0x314d34){var _0x2b4774={'name':path[_0xa936('0x57')](_0x1dd16d[_0xa936('0x58')][_0xa936('0x59')],path['extname'](_0x1dd16d[_0xa936('0x58')][_0xa936('0x59')])),'save_name':path[_0xa936('0x57')](_0x1dd16d[_0xa936('0x58')][_0xa936('0x5a')],path[_0xa936('0x5b')](_0x1dd16d[_0xa936('0x58')][_0xa936('0x5a')])),'original_format':path[_0xa936('0x5b')](_0x1dd16d[_0xa936('0x58')][_0xa936('0x59')])[_0xa936('0x5c')](0x1),'converted_format':_0xa936('0x5d')};var _0x23adec=path[_0xa936('0x53')](config[_0xa936('0x4f')],_0xa936('0x5e'),_0x1dd16d[_0xa936('0x58')][_0xa936('0x5a')]);var _0x31d604=path['join'](config['root'],'server/files/sounds/converted',util[_0xa936('0x54')](_0xa936('0x55'),path[_0xa936('0x57')](_0x1dd16d[_0xa936('0x58')][_0xa936('0x5a')],path['extname'](_0x1dd16d[_0xa936('0x58')][_0xa936('0x5a')])),_0x2b4774['converted_format']));logger[_0xa936('0x5f')](_0xa936('0x60'),_0x23adec);logger[_0xa936('0x5f')](_0xa936('0x61'),_0x31d604);try{fs['chmodSync'](_0x23adec,parseInt(_0xa936('0x62'),0x8));var _0x3379dc=sox['transcode'](_0x23adec,_0x31d604,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x3379dc['on'](_0xa936('0x23'),function(_0x177750){fs[_0xa936('0x63')](_0x23adec);_0x55c8c6[_0xa936('0x14')](0x1f4)[_0xa936('0x24')](_0x177750);});_0x3379dc['on'](_0xa936('0x64'),function(_0x46b6ea){_0x2b4774['original_duration']=isNaN(_0x46b6ea[_0xa936('0x65')])?null:_0x46b6ea[_0xa936('0x65')]*0x3e8;_0x2b4774[_0xa936('0x66')]=isNaN(_0x46b6ea['sampleCount'])?null:_0x46b6ea[_0xa936('0x67')];_0x2b4774['original_channelCount']=isNaN(_0x46b6ea[_0xa936('0x68')])?null:_0x46b6ea[_0xa936('0x68')];_0x2b4774[_0xa936('0x69')]=isNaN(_0x46b6ea[_0xa936('0x6a')])?null:_0x46b6ea[_0xa936('0x6a')];_0x2b4774[_0xa936('0x6b')]=isNaN(_0x46b6ea['sampleRate'])?null:_0x46b6ea[_0xa936('0x6c')];});_0x3379dc['on'](_0xa936('0x6d'),function(_0x2d8796){_0x2b4774[_0xa936('0x6e')]=isNaN(_0x2d8796['duration'])?null:_0x2d8796[_0xa936('0x65')]*0x3e8;_0x2b4774[_0xa936('0x6f')]=isNaN(_0x2d8796['sampleCount'])?null:_0x2d8796[_0xa936('0x67')];_0x2b4774[_0xa936('0x70')]=isNaN(_0x2d8796[_0xa936('0x68')])?null:_0x2d8796[_0xa936('0x68')];_0x2b4774['converted_bitRate']=isNaN(_0x2d8796['bitRate'])?null:_0x2d8796['bitRate'];_0x2b4774[_0xa936('0x71')]=isNaN(_0x2d8796['sampleRate'])?null:_0x2d8796[_0xa936('0x6c')];});_0x3379dc['on'](_0xa936('0x15'),function(){fs['chmodSync'](_0x31d604,parseInt(_0xa936('0x62'),0x8));return db['Sound'][_0xa936('0x56')](_0x2b4774)[_0xa936('0x20')](function(_0x5f3887){var _0x3476c7={'role':_0x1dd16d['body']['role'],'userProfileId':_0x1dd16d['body'][_0xa936('0x72')]};if(!_0x3476c7)throw new Error(_0xa936('0x73'));if(_0x3476c7[_0xa936('0x74')]==='user'){var _0x70cac4=_0x5f3887['get']({'plain':!![]});return db[_0xa936('0x75')][_0xa936('0x4b')]({'where':{'name':'Sounds','userProfileId':_0x3476c7[_0xa936('0x72')]},'raw':!![]})[_0xa936('0x20')](function(_0x4fd2ad){if(_0x4fd2ad&&_0x4fd2ad[_0xa936('0x76')]===0x0){return db['UserProfileResource'][_0xa936('0x56')]({'name':_0x70cac4['name'],'resourceId':_0x70cac4['id'],'type':_0x4fd2ad[_0xa936('0x2e')],'sectionId':_0x4fd2ad['id']},{})[_0xa936('0x20')](function(){return _0x5f3887;});}else{return _0x5f3887;}})['catch'](function(_0x2afb63){logger[_0xa936('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2afb63);throw _0x2afb63;});}return _0x5f3887;})[_0xa936('0x20')](respondWithResult(_0x55c8c6,null))[_0xa936('0x49')](handleError(_0x55c8c6,null));});_0x3379dc[_0xa936('0x77')]();}catch(_0x2f70d2){_0x55c8c6[_0xa936('0x14')](0x1f4)[_0xa936('0x24')](_0x2f70d2);}};exports[_0xa936('0x1f')]=function(_0x4ef6b8,_0x32da56,_0x5c866b){return db['Sound']['find']({'where':{'id':_0x4ef6b8['params']['id']}})[_0xa936('0x20')](handleEntityNotFound(_0x32da56,null))[_0xa936('0x20')](saveUpdates(_[_0xa936('0x39')](_0x4ef6b8['body'],[_0xa936('0x2e'),'description']),null))['then'](respondWithResult(_0x32da56,null))[_0xa936('0x49')](handleError(_0x32da56,null));};exports['delete']=function(_0x205f5b,_0x2781ba,_0x3d65ff){return db[_0xa936('0x3f')][_0xa936('0x4b')]({'where':{'id':_0x205f5b[_0xa936('0x45')]['id']}})[_0xa936('0x20')](function(_0x39ebe6){if(_0x39ebe6){return _0x39ebe6['destroy']();}})[_0xa936('0x20')](function(_0x15532a){var _0x339381=path[_0xa936('0x53')](config[_0xa936('0x4f')],_0xa936('0x5e'),util[_0xa936('0x54')](_0xa936('0x55'),_0x15532a[_0xa936('0x4c')],_0x15532a[_0xa936('0x78')]));var _0x3963b4=path['join'](config['root'],_0xa936('0x50'),util[_0xa936('0x54')]('%s.%s',_0x15532a[_0xa936('0x4c')],_0x15532a[_0xa936('0x4d')]));fs['unlinkSync'](_0x339381);fs[_0xa936('0x63')](_0x3963b4);return _0x15532a;})[_0xa936('0x20')](function(_0x3ca964){if(_0x3ca964){return _0x2781ba[_0xa936('0x14')](0xcc)[_0xa936('0x15')]();}})[_0xa936('0x20')](handleEntityNotFound(_0x2781ba,null))[_0xa936('0x49')](handleError(_0x2781ba,null));};