5e48277d664550ebbb1deec8b1b5f9467b3d47a1
[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 _0x7a83=['to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','status','set','reject','update','then','destroy','get','Sounds','error','name','send','index','map','Sound','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filter','merge','options','count','includeAll','catch','show','params','find','download','save_name','converted_format','existsSync','join','server/files/sounds/converted','Sequelize','ValidationError','Sound\x20not\x20found','root','format','basename','file','originalname','extname','server/files/sounds/original','%s.%s','filename','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','unlinkSync','src','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','original_bitRate','bitRate','sampleRate','dest','converted_duration','converted_channelCount','channelCount','converted_bitRate','converted_sampleRate','create','body','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','pick','description','original_format','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','sox'];(function(_0x35e92e,_0x21581b){var _0x1205a8=function(_0x4325d8){while(--_0x4325d8){_0x35e92e['push'](_0x35e92e['shift']());}};_0x1205a8(++_0x21581b);}(_0x7a83,0x1c8));var _0x37a8=function(_0x19a49f,_0x444d74){_0x19a49f=_0x19a49f-0x0;var _0x5351ae=_0x7a83[_0x19a49f];return _0x5351ae;};'use strict';var emlformat=require(_0x37a8('0x0'));var rimraf=require(_0x37a8('0x1'));var zipdir=require(_0x37a8('0x2'));var jsonpatch=require(_0x37a8('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x37a8('0x4'));var Mustache=require(_0x37a8('0x5'));var util=require(_0x37a8('0x6'));var path=require('path');var sox=require(_0x37a8('0x7'));var csv=require(_0x37a8('0x8'));var ejs=require(_0x37a8('0x9'));var fs=require('fs');var fs_extra=require(_0x37a8('0xa'));var _=require(_0x37a8('0xb'));var squel=require('squel');var crypto=require(_0x37a8('0xc'));var jsforce=require(_0x37a8('0xd'));var deskjs=require(_0x37a8('0xe'));var toCsv=require(_0x37a8('0x8'));var querystring=require(_0x37a8('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x37a8('0x10'));var qs=require(_0x37a8('0x11'));var as=require(_0x37a8('0x12'));var hardwareService=require(_0x37a8('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x37a8('0x14'));var config=require(_0x37a8('0x15'));var licenseUtil=require(_0x37a8('0x16'));var db=require(_0x37a8('0x17'))['db'];function respondWithStatusCode(_0x470cbb,_0x3b472c){_0x3b472c=_0x3b472c||0xcc;return function(_0x1b7b3f){if(_0x1b7b3f){return _0x470cbb[_0x37a8('0x18')](_0x3b472c);}return _0x470cbb['status'](_0x3b472c)[_0x37a8('0x19')]();};}function respondWithResult(_0x347cb8,_0x229dfb){_0x229dfb=_0x229dfb||0xc8;return function(_0x315264){if(_0x315264){return _0x347cb8['status'](_0x229dfb)[_0x37a8('0x1a')](_0x315264);}};}function respondWithFilteredResult(_0x3b491e,_0x2bc3e7){return function(_0x11a2fd){if(_0x11a2fd){var _0xfdc0dd=typeof _0x2bc3e7[_0x37a8('0x1b')]===_0x37a8('0x1c')&&typeof _0x2bc3e7[_0x37a8('0x1d')]==='undefined';var _0xc5c4f8=_0x11a2fd['count'];var _0x29f1e2=_0xfdc0dd?0x0:_0x2bc3e7[_0x37a8('0x1b')];var _0x20e5ce=_0xfdc0dd?_0x11a2fd['count']:_0x2bc3e7[_0x37a8('0x1b')]+_0x2bc3e7[_0x37a8('0x1d')];var _0x5acfc6;if(_0x20e5ce>=_0xc5c4f8){_0x20e5ce=_0xc5c4f8;_0x5acfc6=0xc8;}else{_0x5acfc6=0xce;}_0x3b491e[_0x37a8('0x1e')](_0x5acfc6);return _0x3b491e[_0x37a8('0x1f')]('Content-Range',_0x29f1e2+'-'+_0x20e5ce+'/'+_0xc5c4f8)['json'](_0x11a2fd);}return null;};}function patchUpdates(_0x210265){return function(_0x1d0244){try{jsonpatch['apply'](_0x1d0244,_0x210265,!![]);}catch(_0x6fcc62){return BPromise[_0x37a8('0x20')](_0x6fcc62);}return _0x1d0244['save']();};}function saveUpdates(_0x5e1bf8,_0x2ce488){return function(_0x694a16){if(_0x694a16){return _0x694a16[_0x37a8('0x21')](_0x5e1bf8)[_0x37a8('0x22')](function(_0x2d4fd0){return _0x2d4fd0;});}return null;};}function removeEntity(_0x448800,_0x108bce){return function(_0x8d1fc3){if(_0x8d1fc3){return _0x8d1fc3[_0x37a8('0x23')]()['then'](function(){var _0x27eb05=_0x8d1fc3[_0x37a8('0x24')]({'plain':!![]});var _0x1b8b40=_0x37a8('0x25');return db['UserProfileResource'][_0x37a8('0x23')]({'where':{'type':_0x1b8b40,'resourceId':_0x27eb05['id']}})[_0x37a8('0x22')](function(){return _0x8d1fc3;});})[_0x37a8('0x22')](function(){_0x448800[_0x37a8('0x1e')](0xcc)[_0x37a8('0x19')]();});}};}function handleEntityNotFound(_0x400315,_0x4804bf){return function(_0x4de932){if(!_0x4de932){_0x400315[_0x37a8('0x18')](0x194);}return _0x4de932;};}function handleError(_0x5ed0ef,_0x4e7399){_0x4e7399=_0x4e7399||0x1f4;return function(_0x2ac7e2){logger[_0x37a8('0x26')](_0x2ac7e2['stack']);if(_0x2ac7e2[_0x37a8('0x27')]){delete _0x2ac7e2[_0x37a8('0x27')];}_0x5ed0ef[_0x37a8('0x1e')](_0x4e7399)[_0x37a8('0x28')](_0x2ac7e2);};}exports[_0x37a8('0x29')]=function(_0x2c23df,_0x4be905){var _0x532045={},_0x209e37={},_0x103c25={'count':0x0,'rows':[]};var _0x43c78c=_[_0x37a8('0x2a')](db[_0x37a8('0x2b')][_0x37a8('0x2c')],function(_0x1958f2){return{'name':_0x1958f2[_0x37a8('0x2d')],'type':_0x1958f2[_0x37a8('0x2e')][_0x37a8('0x2f')]};});_0x209e37[_0x37a8('0x30')]=_[_0x37a8('0x2a')](_0x43c78c,_0x37a8('0x27'));_0x209e37['query']=_[_0x37a8('0x31')](_0x2c23df[_0x37a8('0x32')]);_0x209e37[_0x37a8('0x33')]=_[_0x37a8('0x34')](_0x209e37['model'],_0x209e37[_0x37a8('0x32')]);_0x532045['attributes']=_[_0x37a8('0x34')](_0x209e37[_0x37a8('0x30')],qs[_0x37a8('0x35')](_0x2c23df[_0x37a8('0x32')][_0x37a8('0x35')]));_0x532045[_0x37a8('0x36')]=_0x532045['attributes'][_0x37a8('0x37')]?_0x532045[_0x37a8('0x36')]:_0x209e37[_0x37a8('0x30')];if(!_0x2c23df[_0x37a8('0x32')][_0x37a8('0x38')]('nolimit')){_0x532045[_0x37a8('0x1d')]=qs[_0x37a8('0x1d')](_0x2c23df[_0x37a8('0x32')][_0x37a8('0x1d')]);_0x532045[_0x37a8('0x1b')]=qs[_0x37a8('0x1b')](_0x2c23df[_0x37a8('0x32')][_0x37a8('0x1b')]);}_0x532045[_0x37a8('0x39')]=qs['sort'](_0x2c23df[_0x37a8('0x32')][_0x37a8('0x3a')]);_0x532045[_0x37a8('0x3b')]=qs[_0x37a8('0x33')](_['pick'](_0x2c23df['query'],_0x209e37[_0x37a8('0x33')]),_0x43c78c);if(_0x2c23df['query'][_0x37a8('0x3c')]){_0x532045[_0x37a8('0x3b')]=_[_0x37a8('0x3d')](_0x532045[_0x37a8('0x3b')],{'$or':_['map'](_0x43c78c,function(_0x95580){if(_0x95580['type']!=='VIRTUAL'){var _0x392468={};_0x392468[_0x95580['name']]={'$like':'%'+_0x2c23df[_0x37a8('0x32')][_0x37a8('0x3c')]+'%'};return _0x392468;}})});}_0x532045=_[_0x37a8('0x3d')]({},_0x532045,_0x2c23df[_0x37a8('0x3e')]);var _0x821cb9={'where':_0x532045[_0x37a8('0x3b')]};return db[_0x37a8('0x2b')][_0x37a8('0x3f')](_0x821cb9)[_0x37a8('0x22')](function(_0x53c064){_0x103c25[_0x37a8('0x3f')]=_0x53c064;if(_0x2c23df[_0x37a8('0x32')][_0x37a8('0x40')]){_0x532045['include']=[{'all':!![]}];}return db['Sound']['findAll'](_0x532045);})[_0x37a8('0x22')](function(_0x18ce9d){_0x103c25['rows']=_0x18ce9d;return _0x103c25;})[_0x37a8('0x22')](respondWithFilteredResult(_0x4be905,_0x532045))[_0x37a8('0x41')](handleError(_0x4be905,null));};exports[_0x37a8('0x42')]=function(_0x2372f9,_0x2ba88d){var _0x5ace23={'raw':!![],'where':{'id':_0x2372f9[_0x37a8('0x43')]['id']}},_0x353e86={};_0x353e86[_0x37a8('0x30')]=_[_0x37a8('0x31')](db[_0x37a8('0x2b')][_0x37a8('0x2c')]);_0x353e86[_0x37a8('0x32')]=_['keys'](_0x2372f9[_0x37a8('0x32')]);_0x353e86[_0x37a8('0x33')]=_[_0x37a8('0x34')](_0x353e86['model'],_0x353e86[_0x37a8('0x32')]);_0x5ace23[_0x37a8('0x36')]=_[_0x37a8('0x34')](_0x353e86[_0x37a8('0x30')],qs[_0x37a8('0x35')](_0x2372f9['query'][_0x37a8('0x35')]));_0x5ace23[_0x37a8('0x36')]=_0x5ace23[_0x37a8('0x36')][_0x37a8('0x37')]?_0x5ace23['attributes']:_0x353e86['model'];if(_0x2372f9['query'][_0x37a8('0x40')]){_0x5ace23['include']=[{'all':!![]}];}_0x5ace23=_[_0x37a8('0x3d')]({},_0x5ace23,_0x2372f9['options']);return db[_0x37a8('0x2b')][_0x37a8('0x44')](_0x5ace23)[_0x37a8('0x22')](handleEntityNotFound(_0x2ba88d,null))['then'](respondWithResult(_0x2ba88d,null))['catch'](handleError(_0x2ba88d,null));};exports[_0x37a8('0x45')]=function(_0xd69e69,_0x7ef6ed,_0x1cd2b6){return db['Sound']['find']({'where':{'id':_0xd69e69['params']['id']},'attributes':['name',_0x37a8('0x46'),_0x37a8('0x47')],'raw':!![]})['then'](handleEntityNotFound(_0x7ef6ed,null))[_0x37a8('0x22')](function(_0x53ef32){if(_0x53ef32){if(!fs[_0x37a8('0x48')](path[_0x37a8('0x49')](config['root'],_0x37a8('0x4a'),_0x53ef32[_0x37a8('0x46')]+'.'+_0x53ef32['converted_format']))){throw new db[(_0x37a8('0x4b'))][(_0x37a8('0x4c'))](_0x37a8('0x4d'));}return _0x7ef6ed['download'](path[_0x37a8('0x49')](config[_0x37a8('0x4e')],_0x37a8('0x4a'),util[_0x37a8('0x4f')]('%s.%s',_0x53ef32[_0x37a8('0x46')],_0x53ef32[_0x37a8('0x47')])),util[_0x37a8('0x4f')]('%s.%s',_0x53ef32['name'],_0x53ef32['converted_format']));}return null;})['catch'](handleError(_0x7ef6ed,null));};exports['create']=function(_0x2cc2c5,_0x3b1811,_0x346390){var _0x236114={'name':path[_0x37a8('0x50')](_0x2cc2c5[_0x37a8('0x51')][_0x37a8('0x52')],path[_0x37a8('0x53')](_0x2cc2c5[_0x37a8('0x51')]['originalname'])),'save_name':path['basename'](_0x2cc2c5['file']['filename'],path['extname'](_0x2cc2c5['file']['filename'])),'original_format':path['extname'](_0x2cc2c5[_0x37a8('0x51')][_0x37a8('0x52')])['substring'](0x1),'converted_format':'wav'};var _0x58ee7c=path[_0x37a8('0x49')](config[_0x37a8('0x4e')],_0x37a8('0x54'),_0x2cc2c5[_0x37a8('0x51')]['filename']);var _0x4d755b=path[_0x37a8('0x49')](config[_0x37a8('0x4e')],_0x37a8('0x4a'),util['format'](_0x37a8('0x55'),path[_0x37a8('0x50')](_0x2cc2c5['file'][_0x37a8('0x56')],path[_0x37a8('0x53')](_0x2cc2c5['file'][_0x37a8('0x56')])),_0x236114[_0x37a8('0x47')]));logger[_0x37a8('0x57')](_0x37a8('0x58'),_0x58ee7c);logger[_0x37a8('0x57')](_0x37a8('0x59'),_0x4d755b);try{fs[_0x37a8('0x5a')](_0x58ee7c,parseInt(_0x37a8('0x5b'),0x8));var _0x2eedb6=sox['transcode'](_0x58ee7c,_0x4d755b,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x2eedb6['on'](_0x37a8('0x26'),function(_0x4bac91){fs[_0x37a8('0x5c')](_0x58ee7c);_0x3b1811['status'](0x1f4)['send'](_0x4bac91);});_0x2eedb6['on'](_0x37a8('0x5d'),function(_0x1a90c4){_0x236114[_0x37a8('0x5e')]=isNaN(_0x1a90c4['duration'])?null:_0x1a90c4[_0x37a8('0x5f')]*0x3e8;_0x236114[_0x37a8('0x60')]=isNaN(_0x1a90c4[_0x37a8('0x61')])?null:_0x1a90c4[_0x37a8('0x61')];_0x236114[_0x37a8('0x62')]=isNaN(_0x1a90c4['channelCount'])?null:_0x1a90c4['channelCount'];_0x236114[_0x37a8('0x63')]=isNaN(_0x1a90c4[_0x37a8('0x64')])?null:_0x1a90c4[_0x37a8('0x64')];_0x236114['original_sampleRate']=isNaN(_0x1a90c4[_0x37a8('0x65')])?null:_0x1a90c4[_0x37a8('0x65')];});_0x2eedb6['on'](_0x37a8('0x66'),function(_0x5c43a9){_0x236114[_0x37a8('0x67')]=isNaN(_0x5c43a9[_0x37a8('0x5f')])?null:_0x5c43a9[_0x37a8('0x5f')]*0x3e8;_0x236114['converted_sampleCount']=isNaN(_0x5c43a9[_0x37a8('0x61')])?null:_0x5c43a9[_0x37a8('0x61')];_0x236114[_0x37a8('0x68')]=isNaN(_0x5c43a9[_0x37a8('0x69')])?null:_0x5c43a9[_0x37a8('0x69')];_0x236114[_0x37a8('0x6a')]=isNaN(_0x5c43a9[_0x37a8('0x64')])?null:_0x5c43a9[_0x37a8('0x64')];_0x236114[_0x37a8('0x6b')]=isNaN(_0x5c43a9[_0x37a8('0x65')])?null:_0x5c43a9['sampleRate'];});_0x2eedb6['on'](_0x37a8('0x19'),function(){fs['chmodSync'](_0x4d755b,parseInt(_0x37a8('0x5b'),0x8));return db[_0x37a8('0x2b')][_0x37a8('0x6c')](_0x236114)['then'](function(_0x22d8d0){var _0x19f107={'role':_0x2cc2c5[_0x37a8('0x6d')]['role'],'userProfileId':_0x2cc2c5[_0x37a8('0x6d')]['userProfileId']};if(!_0x19f107)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x19f107['role']==='user'){var _0x32618d=_0x22d8d0[_0x37a8('0x24')]({'plain':!![]});return db['UserProfileSection'][_0x37a8('0x44')]({'where':{'name':_0x37a8('0x25'),'userProfileId':_0x19f107['userProfileId']},'raw':!![]})[_0x37a8('0x22')](function(_0x299fdf){if(_0x299fdf&&_0x299fdf[_0x37a8('0x6e')]===0x0){return db[_0x37a8('0x6f')][_0x37a8('0x6c')]({'name':_0x32618d[_0x37a8('0x27')],'resourceId':_0x32618d['id'],'type':_0x299fdf[_0x37a8('0x27')],'sectionId':_0x299fdf['id']},{})['then'](function(){return _0x22d8d0;});}else{return _0x22d8d0;}})[_0x37a8('0x41')](function(_0x16397d){logger[_0x37a8('0x26')](_0x37a8('0x70'),_0x16397d);throw _0x16397d;});}return _0x22d8d0;})[_0x37a8('0x22')](respondWithResult(_0x3b1811,null))[_0x37a8('0x41')](handleError(_0x3b1811,null));});_0x2eedb6['start']();}catch(_0x3db623){_0x3b1811[_0x37a8('0x1e')](0x1f4)[_0x37a8('0x28')](_0x3db623);}};exports[_0x37a8('0x21')]=function(_0xea7827,_0x511f55,_0x2807c2){return db[_0x37a8('0x2b')]['find']({'where':{'id':_0xea7827[_0x37a8('0x43')]['id']}})[_0x37a8('0x22')](handleEntityNotFound(_0x511f55,null))[_0x37a8('0x22')](saveUpdates(_[_0x37a8('0x71')](_0xea7827[_0x37a8('0x6d')],[_0x37a8('0x27'),_0x37a8('0x72')]),null))[_0x37a8('0x22')](respondWithResult(_0x511f55,null))[_0x37a8('0x41')](handleError(_0x511f55,null));};exports['delete']=function(_0x49294e,_0x335921,_0x38d707){return db[_0x37a8('0x2b')][_0x37a8('0x44')]({'where':{'id':_0x49294e['params']['id']}})[_0x37a8('0x22')](function(_0x1f490b){if(_0x1f490b){return _0x1f490b[_0x37a8('0x23')]();}})['then'](function(_0x2d5560){var _0x1624c9=path['join'](config['root'],_0x37a8('0x54'),util[_0x37a8('0x4f')](_0x37a8('0x55'),_0x2d5560[_0x37a8('0x46')],_0x2d5560[_0x37a8('0x73')]));var _0x515b6b=path[_0x37a8('0x49')](config['root'],'server/files/sounds/converted',util[_0x37a8('0x4f')](_0x37a8('0x55'),_0x2d5560[_0x37a8('0x46')],_0x2d5560[_0x37a8('0x47')]));fs[_0x37a8('0x5c')](_0x1624c9);fs[_0x37a8('0x5c')](_0x515b6b);return _0x2d5560;})[_0x37a8('0x22')](function(_0x4420be){if(_0x4420be){return _0x335921[_0x37a8('0x1e')](0xcc)[_0x37a8('0x19')]();}})[_0x37a8('0x22')](handleEntityNotFound(_0x335921,null))[_0x37a8('0x41')](handleError(_0x335921,null));};