-'use strict';
-
-var _ = require('lodash');
-var VoiceMusicOnHold = require('../../models').VoiceMusicOnHold;
-var fs = require('fs');
-var remove = require('remove');
-var Upload = require('../../models').Upload;
-var fse = require('fs-extra');
-var path = require('path');
-var config = require('../../config/environment');
-var sequelize = require('../../models').sequelize;
-var util = require('util');
-var base64 = require('file-base64');
-
-// Get list of voice_musiconholds
-exports.index = function(req, res) {
-
- var attributes = ['name', 'directory', 'sort', 'description'];
- var per_page = req.query.per_page ? parseInt(req.query.per_page, 10) : 100;
- var page = req.query.page ? parseInt(req.query.page, 10) : 0;
-
- var query = {
- where: {},
- limit: per_page,
- offset: page * per_page
- };
-
- _.forIn(req.query, function(value, key) {
- switch (key) {
- case 'per_page':
- case 'page':
- break;
- case 'sort_by':
- query.order = util.format('%s %s', req.query.sort_by, req.query.sort_order || 'ASC') || null;
- break;
- case 'sort_order':
- break;
- case '$':
- query.where.$or = [];
- attributes.forEach(function(attribute) {
- var tmp = {};
- tmp[attribute] = {
- $like: '%' + value + '%'
- };
-
- query.where.$or.push(tmp);
- });
- break;
- default:
- query.where[key] = {
- $like: {}
- };
- query.where[key].$like = '%' + value + '%';
- }
- });
-
-
- VoiceMusicOnHold
- .findAndCountAll(query)
- .then(function(result) {
- var total_pages = Math.ceil(result.count / per_page);
- var next_page = total_pages > (query.offset + 1) ? util.format('%s://%s%s?page=%d', req.protocol, req.headers.host, req.baseUrl, page + 1) : null;
- var previous_page = page > 0 ? util.format('%s://%s%s?page=%d', req.protocol, req.headers.host, req.baseUrl, page - 1) : null;
-
- res.status(200).send({
- count: result.count,
- rows: result.rows,
- next_page: next_page,
- previous_page: previous_page,
- total_pages: total_pages
- });
-
- })
- .catch(function(err) {
- return handleError(res, err);
- });
-};
-
-// Get a single voice_musiconhold
-exports.show = function(req, res) {
- VoiceMusicOnHold
- .findById(req.params.id)
- .then(function(voice_musiconhold) {
- if (!voice_musiconhold) {
- return res.sendStatus(404);
- }
- return res.send(voice_musiconhold);
- })
- .catch(function(err) {
- return handleError(res, err);
- });
-};
-
-// Add files to moh class
-exports.addFiles = function(req, res) {
- VoiceMusicOnHold
- .findById(req.params.id)
- .then(function(voice_musiconhold) {
- if (!voice_musiconhold) {
- return res.sendStatus(404);
- }
- Upload
- .findAll({
- where: {
- id: req.body.sounds
- }
- })
- .then(function(soundFiles) {
- var origin = path.join(config.root, 'server/files/sounds/converted');
- var dest;
- soundFiles.forEach(function(elem) {
- dest = path.join(voice_musiconhold.directory, elem.display_name + '.wav');
- fse.copySync(path.join(origin, elem.save_name + '.wav'), dest);
- });
- fs.chmodSync(dest, parseInt('0777', 8));
- res.sendStatus(200);
- })
- .catch(function(err) {
- console.log(err);
- return handleError(res, err);
- });
- })
- .catch(function(err) {
- return handleError(res, err);
- });
-};
-
-exports.showAudioFiles = function(req, res) {
- var fileObject = {};
- VoiceMusicOnHold
- .findById(req.params.id)
- .then(function(voice_musiconhold) {
- if (!voice_musiconhold) {
- return res.sendStatus(404);
- }
- fileObject.path = voice_musiconhold.directory;
- fs.readdir(voice_musiconhold.directory, function(err, files) {
- if (!err) {
- fileObject.files = files;
- return res.send(fileObject);
- } else {
- throw err;
- }
- });
- })
- .catch(function(err) {
- return handleError(res, err);
- });
-};
-
-exports.deleteAudioFiles = function(req, res) {
- VoiceMusicOnHold
- .findById(req.params.id)
- .then(function(voice_musiconhold) {
- if (!voice_musiconhold) {
- return res.sendStatus(404);
- }
- var deletePath = voice_musiconhold.directory + '/' + req.query.filename;
- fs.unlink(deletePath, function(err) {
- if (err) {
- return handleError(res, err);
- } else {
- return res.sendStatus(204);
- }
- });
- })
- .catch(function(err) {
- return handleError(res, err);
- });
-};
-
-// Validate the existence of a route
-exports.mohValidation = function(req, res) {
- console.log(req.body);
- VoiceMusicOnHold
- .findAll({
- where: {
- name: req.body.name,
- }
- })
- .then(function(voice_mohs) {
- if (!voice_mohs) {
- return res.sendStatus(404);
- }
- return res.send(voice_mohs);
- })
- .catch(function(err) {
- return handleError(res, err);
- });
-};
-
-// Creates a new voice_musiconhold in the DB.
-exports.create = function(req, res) {
- VoiceMusicOnHold
- .findAll({
- where: {
- name: req.body.name
- }
- })
- .then(function(existingMohs) {
- console.log(existingMohs);
- console.log('Finding app row.....');
- if (!existingMohs) {
- console.log('error1');
- return res.sendStatus(404);
- }
- if (existingMohs.length > 0) {
- console.log('error2');
- return res.status(500).send({
- message: 'MESSAGE_EXIST_MOH'
- });
- }
- return sequelize.transaction().then(function(t) {
- req.body.directory = path.join(config.root, 'server/files/moh', req.body.name);
- return VoiceMusicOnHold
- .create(req.body, {
- transaction: t
- })
- .then(function(voice_musiconhold) {
- fs.mkdir(voice_musiconhold.directory, parseInt('0777', 8), function(err) {
- if (err) {
- console.log('file error');
- t.rollback();
- return res.status(500).send({
- message: 'MESSAGE_FILE_CREATION_ERROR'
- });
- }
- t.commit();
- console.log('file created');
- return res.status(201).send(voice_musiconhold);
- });
- })
- .catch(function(err) {
- t.rollback();
- });
- })
- })
- .catch(function(err) {
- console.log('thaterror');
- return handleError(res, err);
- });
-};
-
-// Updates an existing voice_musiconhold in the DB.
-exports.update = function(req, res) {
- if (req.body.id) {
- delete req.body.id;
- }
- VoiceMusicOnHold
- .find({
- where: {
- id: req.params.id
- }
- })
- .then(function(voice_musiconhold) {
- if (!voice_musiconhold) {
- return res.sendStatus(404);
- }
- var updated = _.merge(voice_musiconhold, req.body);
- updated.save()
- .then(function() {
- return res.status(200).send(voice_musiconhold);
- })
- .catch(function(err) {
- return handleError(res, err);
- });
- })
- .catch(function(err) {
- return handleError(res, err);
- });
-};
-
-// Deletes a voice_musiconhold from the DB.
-exports.destroy = function(req, res) {
- VoiceMusicOnHold
- .findById(req.params.id)
- .then(function(voice_musiconhold) {
- if (!voice_musiconhold) {
- return res.sendStatus(404);
- }
- return sequelize.transaction(function(t) {
- return voice_musiconhold.destroy({
- transaction: t
- })
- .then(function() {
- remove(voice_musiconhold.directory, function(err) {
- if (err) {
- console.log(err);
- }
- return res.sendStatus(204);
- });
- })
- })
- .catch(function(err) {
- return handleError(res, err);
- });
- })
- .catch(function(err) {
- return handleError(res, err);
- });
-};
-
-// Deletes multiple voice_musiconholds from the DB.
-exports.bulkDestroy = function(req, res) {
- VoiceMusicOnHold
- .findAll({
- where: {
- id: req.query.id
- }
- })
- .then(function(voice_musiconholds) {
- if (!voice_musiconholds) {
- return res.sendStatus(404);
- }
- return sequelize.transaction(function(t) {
- voice_musiconholds.forEach(function(element) {
- return element.destroy({
- transaction: t
- })
- .then(function() {
- remove(element.directory, function(err) {
- if (err) {
- console.log(err);
- throw err
- }
- });
- })
- })
- })
- .then(function() {
- return res.sendStatus(204);
- })
- .catch(function(err) {
- console.log(err);
- return handleError(res, err);
- });
- })
- .catch(function(err) {
- return handleError(res, err);
- });
-};
-
-// stream a moh file
-exports.stream = function(req, res) {
- var filepath = decodeURI(req.query.path);
- base64.encode(filepath, function(err, base64String) {
- if (err) {
- return handleError(res, err);
- } else {
- return res.status(200).send(base64String);
- }
- });
-};
-
-function handleError(res, err) {
- return res.status(500).send(err);
-}
+var _0x10e1=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x66\x73","\x6C\x6F\x64\x61\x73\x68","\x70\x61\x74\x68","\x75\x74\x69\x6C","\x66\x73\x2D\x65\x78\x74\x72\x61","\x72\x65\x6D\x6F\x76\x65","\x66\x69\x6C\x65\x2D\x62\x61\x73\x65\x36\x34","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x53\x6F\x75\x6E\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x53\x65\x74\x74\x69\x6E\x67\x73","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x56\x6F\x69\x63\x65\x4D\x75\x73\x69\x63\x4F\x6E\x48\x6F\x6C\x64","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x61\x64\x64\x46\x69\x6C\x65\x73","\x64\x69\x72\x65\x63\x74\x6F\x72\x79","\x64\x69\x73\x70\x6C\x61\x79\x5F\x6E\x61\x6D\x65","\x2E\x77\x61\x76","\x6A\x6F\x69\x6E","\x73\x6F\x75\x6E\x64\x50\x61\x74\x68","\x2F\x76\x61\x72\x2F\x6F\x70\x74\x2F\x6D\x6F\x74\x69\x6F\x6E\x2F\x73\x65\x72\x76\x65\x72\x2F\x66\x69\x6C\x65\x73\x2F\x73\x6F\x75\x6E\x64\x73\x2F\x63\x6F\x6E\x76\x65\x72\x74\x65\x64","\x73\x61\x76\x65\x5F\x6E\x61\x6D\x65","\x63\x6F\x70\x79\x53\x79\x6E\x63","\x66\x6F\x72\x45\x61\x63\x68","\x30\x37\x37\x37","\x63\x68\x6D\x6F\x64\x53\x79\x6E\x63","\x73\x6F\x75\x6E\x64\x73","\x62\x6F\x64\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77\x41\x75\x64\x69\x6F\x46\x69\x6C\x65\x73","\x66\x69\x6C\x65\x73","\x72\x65\x61\x64\x64\x69\x72","\x64\x65\x6C\x65\x74\x65\x41\x75\x64\x69\x6F\x46\x69\x6C\x65\x73","\x2F","\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x75\x6E\x6C\x69\x6E\x6B","\x6D\x6F\x68\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x6C\x6F\x67","\x6E\x61\x6D\x65","\x63\x72\x65\x61\x74\x65","\x72\x6F\x6F\x74","\x73\x65\x72\x76\x65\x72\x2F\x66\x69\x6C\x65\x73\x2F\x6D\x6F\x68","\x72\x6F\x6C\x6C\x62\x61\x63\x6B","\x66\x69\x6C\x65\x20\x65\x72\x72\x6F\x72","\x4D\x45\x53\x53\x41\x47\x45\x5F\x46\x49\x4C\x45\x5F\x43\x52\x45\x41\x54\x49\x4F\x4E\x5F\x45\x52\x52\x4F\x52","\x63\x6F\x6D\x6D\x69\x74","\x66\x69\x6C\x65\x20\x63\x72\x65\x61\x74\x65\x64","\x6D\x6B\x64\x69\x72","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x61\x6C\x6C","\x70\x75\x73\x68","\x69\x64\x73","\x73\x74\x72\x65\x61\x6D","\x65\x6E\x63\x6F\x64\x65"];_0x10e1[0];var fs=require(_0x10e1[1]);var _=require(_0x10e1[2]);var path=require(_0x10e1[3]);var util=require(_0x10e1[4]);var fse=require(_0x10e1[5]);var remove=require(_0x10e1[6]);var base64=require(_0x10e1[7]);var config=require(_0x10e1[8]);var Util=require(_0x10e1[9]);var Sound=require(_0x10e1[11])[_0x10e1[10]];var Settings=require(_0x10e1[11])[_0x10e1[12]];var sequelize=require(_0x10e1[11])[_0x10e1[13]];var VoiceMusicOnHold=require(_0x10e1[11])[_0x10e1[14]];exports[_0x10e1[15]]=function(_0x571bxe,_0x571bxf){return VoiceMusicOnHold[_0x10e1[22]](Util[_0x10e1[21]](_0x571bxe[_0x10e1[20]]))[_0x10e1[19]](function(_0x571bx11){_0x571bxf[_0x10e1[18]](200)[_0x10e1[17]](_0x571bx11)})[_0x10e1[16]](function(_0x571bx10){return handleError(_0x571bxf,_0x571bx10)})};exports[_0x10e1[23]]=function(_0x571bxe,_0x571bxf){return VoiceMusicOnHold[_0x10e1[27]](_0x571bxe[_0x10e1[26]][_0x10e1[25]])[_0x10e1[19]](function(_0x571bx12){if(!_0x571bx12){return _0x571bxf[_0x10e1[24]](404)};return _0x571bxf[_0x10e1[17]](_0x571bx12)})[_0x10e1[16]](function(_0x571bx10){return handleError(_0x571bxf,_0x571bx10)})};exports[_0x10e1[28]]=function(_0x571bxe,_0x571bxf){var _0x571bx13,_0x571bx14;return VoiceMusicOnHold[_0x10e1[27]](_0x571bxe[_0x10e1[26]][_0x10e1[25]])[_0x10e1[19]](function(_0x571bx12){if(!_0x571bx12){return _0x571bxf[_0x10e1[24]](404)};_0x571bx13=_0x571bx12;return Sound[_0x10e1[42]]({where:{id:_0x571bxe[_0x10e1[41]][_0x10e1[40]]}})})[_0x10e1[19]](function(_0x571bx18){_0x571bx14=_0x571bx18;return Settings[_0x10e1[27]](1)})[_0x10e1[19]](function(_0x571bx15){var _0x571bx16;_0x571bx14[_0x10e1[37]](function(_0x571bx17){_0x571bx16=path[_0x10e1[32]](_0x571bx13[_0x10e1[29]],_0x571bx17[_0x10e1[30]]+_0x10e1[31]);fse[_0x10e1[36]](path[_0x10e1[32]](_0x571bx15[_0x10e1[33]]||_0x10e1[34],_0x571bx17[_0x10e1[35]]+_0x10e1[31]),_0x571bx16)});fs[_0x10e1[39]](_0x571bx16,parseInt(_0x10e1[38],8));_0x571bxf[_0x10e1[24]](200)})[_0x10e1[16]](function(_0x571bx10){return handleError(_0x571bxf,_0x571bx10)})};exports[_0x10e1[43]]=function(_0x571bxe,_0x571bxf){var _0x571bx19={};VoiceMusicOnHold[_0x10e1[27]](_0x571bxe[_0x10e1[26]][_0x10e1[25]])[_0x10e1[19]](function(_0x571bx12){if(!_0x571bx12){return _0x571bxf[_0x10e1[24]](404)};_0x571bx19[_0x10e1[3]]=_0x571bx12[_0x10e1[29]];fs[_0x10e1[45]](_0x571bx12[_0x10e1[29]],function(_0x571bx10,_0x571bx1a){if(!_0x571bx10){_0x571bx19[_0x10e1[44]]=_0x571bx1a;return _0x571bxf[_0x10e1[17]](_0x571bx19)}else {throw _0x571bx10}})})[_0x10e1[16]](function(_0x571bx10){return handleError(_0x571bxf,_0x571bx10)})};exports[_0x10e1[46]]=function(_0x571bxe,_0x571bxf){return VoiceMusicOnHold[_0x10e1[27]](_0x571bxe[_0x10e1[26]][_0x10e1[25]])[_0x10e1[19]](function(_0x571bx12){if(!_0x571bx12){return _0x571bxf[_0x10e1[24]](404)};var _0x571bx1b=_0x571bx12[_0x10e1[29]]+_0x10e1[47]+_0x571bxe[_0x10e1[20]][_0x10e1[48]];fs[_0x10e1[49]](_0x571bx1b,function(_0x571bx10){if(_0x571bx10){return handleError(_0x571bxf,_0x571bx10)}else {return _0x571bxf[_0x10e1[24]](204)}})})[_0x10e1[16]](function(_0x571bx10){return handleError(_0x571bxf,_0x571bx10)})};exports[_0x10e1[50]]=function(_0x571bxe,_0x571bxf){console[_0x10e1[51]](_0x571bxe[_0x10e1[41]]);return VoiceMusicOnHold[_0x10e1[42]]({where:{name:_0x571bxe[_0x10e1[41]][_0x10e1[52]]}})[_0x10e1[19]](function(_0x571bx1c){if(!_0x571bx1c){return _0x571bxf[_0x10e1[24]](404)};return _0x571bxf[_0x10e1[17]](_0x571bx1c)})[_0x10e1[16]](function(_0x571bx10){return handleError(_0x571bxf,_0x571bx10)})};exports[_0x10e1[53]]=function(_0x571bxe,_0x571bxf){return sequelize[_0x10e1[62]]()[_0x10e1[19]](function(_0x571bx1d){_0x571bxe[_0x10e1[41]][_0x10e1[29]]=path[_0x10e1[32]](config[_0x10e1[54]],_0x10e1[55],_0x571bxe[_0x10e1[41]][_0x10e1[52]]);return VoiceMusicOnHold[_0x10e1[53]](_0x571bxe[_0x10e1[41]],{transaction:_0x571bx1d})[_0x10e1[19]](function(_0x571bx12){fs[_0x10e1[61]](_0x571bx12[_0x10e1[29]],parseInt(_0x10e1[38],8),function(_0x571bx10){if(_0x571bx10){console[_0x10e1[51]](_0x10e1[57]);_0x571bx1d[_0x10e1[56]]();return _0x571bxf[_0x10e1[18]](500)[_0x10e1[17]]({message:_0x10e1[58]})};_0x571bx1d[_0x10e1[59]]();console[_0x10e1[51]](_0x10e1[60]);return _0x571bxf[_0x10e1[18]](201)[_0x10e1[17]](_0x571bx12)})})[_0x10e1[16]](function(_0x571bx10){_0x571bx1d[_0x10e1[56]]()})})};exports[_0x10e1[63]]=function(_0x571bxe,_0x571bxf){if(_0x571bxe[_0x10e1[41]][_0x10e1[25]]){delete _0x571bxe[_0x10e1[41]][_0x10e1[25]]};return VoiceMusicOnHold[_0x10e1[27]](_0x571bxe[_0x10e1[26]][_0x10e1[25]])[_0x10e1[19]](function(_0x571bx12){if(!_0x571bx12){return _0x571bxf[_0x10e1[24]](404)};var _0x571bx1e=_[_0x10e1[64]](_0x571bx12,_0x571bxe[_0x10e1[41]]);return _0x571bx1e[_0x10e1[65]]()})[_0x10e1[19]](function(_0x571bx12){return _0x571bxf[_0x10e1[18]](200)[_0x10e1[17]](_0x571bx12)})[_0x10e1[16]](function(_0x571bx10){return handleError(_0x571bxf,_0x571bx10)})};exports[_0x10e1[66]]=function(_0x571bxe,_0x571bxf){var _0x571bx1f;return sequelize[_0x10e1[62]](function(_0x571bx1d){return VoiceMusicOnHold[_0x10e1[27]](_0x571bxe[_0x10e1[26]][_0x10e1[25]])[_0x10e1[19]](function(_0x571bx12){if(!_0x571bx12){return _0x571bxf[_0x10e1[24]](404)};_0x571bx1f=_0x571bx12;return _0x571bx12[_0x10e1[66]]({transaction:_0x571bx1d})})[_0x10e1[19]](function(){remove(_0x571bx1f[_0x10e1[29]],function(_0x571bx10){if(_0x571bx10){console[_0x10e1[51]](_0x571bx10)};return _0x571bxf[_0x10e1[24]](204)})})})[_0x10e1[16]](function(_0x571bx10){return handleError(_0x571bxf,_0x571bx10)})};exports[_0x10e1[67]]=function(_0x571bxe,_0x571bxf){var _0x571bx20;return sequelize[_0x10e1[62]](function(_0x571bx1d){return VoiceMusicOnHold[_0x10e1[42]]({where:{id:_0x571bxe[_0x10e1[20]][_0x10e1[70]]}})[_0x10e1[19]](function(_0x571bx22){if(!_0x571bx22){return _0x571bxf[_0x10e1[24]](404)};_0x571bx20=_0x571bx22;var _0x571bx23=[];_0x571bx22[_0x10e1[37]](function(_0x571bx21){_0x571bx23[_0x10e1[69]](_0x571bx21[_0x10e1[66]]({transaction:_0x571bx1d}))});return _0x571bx23})[_0x10e1[68]]()[_0x10e1[19]](function(){_0x571bx20[_0x10e1[37]](function(_0x571bx21){remove(_0x571bx21[_0x10e1[29]],function(_0x571bx10){if(_0x571bx10){console[_0x10e1[51]](_0x571bx10);throw _0x571bx10}})})})})[_0x10e1[19]](function(){return _0x571bxf[_0x10e1[24]](204)})[_0x10e1[16]](function(_0x571bx10){return handleError(_0x571bxf,_0x571bx10)})};exports[_0x10e1[71]]=function(_0x571bxe,_0x571bxf){var _0x571bx24=decodeURI(_0x571bxe[_0x10e1[20]][_0x10e1[3]]);base64[_0x10e1[72]](_0x571bx24,function(_0x571bx10,_0x571bx25){if(_0x571bx10){return handleError(_0x571bxf,_0x571bx10)}else {return _0x571bxf[_0x10e1[18]](200)[_0x10e1[17]](_0x571bx25)}})};function handleError(_0x571bxf,_0x571bx10){console[_0x10e1[51]](_0x571bx10);return _0x571bxf[_0x10e1[18]](500)[_0x10e1[17]](_0x571bx10)}
\ No newline at end of file