-var _0x7e5e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x56\x6F\x69\x63\x65\x56\x6F\x69\x63\x65\x6D\x61\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x56\x6F\x69\x63\x65\x56\x6F\x69\x63\x65\x6D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65\x73","\x73\x74\x72\x65\x61\x6D","\x69\x6E\x64\x65\x78","\x6D\x61\x69\x6C\x62\x6F\x78","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x70\x65\x72\x5F\x70\x61\x67\x65","\x71\x75\x65\x72\x79","\x70\x61\x67\x65","\x6F\x72\x64\x65\x72","\x25\x73\x20\x25\x73","\x73\x6F\x72\x74\x5F\x62\x79","\x73\x6F\x72\x74\x5F\x6F\x72\x64\x65\x72","\x41\x53\x43","\x66\x6F\x72\x6D\x61\x74","\x24\x6F\x72","\x77\x68\x65\x72\x65","\x25","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x24","\x24\x6C\x69\x6B\x65","\x66\x6F\x72\x49\x6E","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\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","\x75\x6E\x69\x71\x75\x65\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64","\x67\x65\x74\x4D\x65\x73\x73\x61\x67\x65\x73","\x63\x6F\x6E\x74\x65\x78\x74","\x66\x69\x6E\x64\x41\x6C\x6C","\x6D\x61\x69\x6C\x62\x6F\x78\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x62\x6F\x64\x79","\x6C\x6F\x67","\x63\x72\x65\x61\x74\x65","\x6C\x65\x6E\x67\x74\x68","\x4D\x45\x53\x53\x41\x47\x45\x5F\x45\x58\x49\x53\x54\x5F\x4D\x41\x49\x4C\x42\x4F\x58","\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","\x64\x65\x73\x74\x72\x6F\x79\x4D\x65\x73\x73\x61\x67\x65","\x72\x65\x63\x6F\x72\x64\x69\x6E\x67","\x69\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x64\x6F\x77\x6E\x6C\x6F\x61\x64\x4D\x65\x73\x73\x61\x67\x65","\x6D\x73\x67\x5F\x69\x64","\x2E\x77\x61\x76","\x4F\x4B","\x61\x75\x64\x69\x6F\x2F\x77\x61\x76","\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x3B\x20\x66\x69\x6C\x65\x6E\x61\x6D\x65\x3D","\x77\x72\x69\x74\x65\x48\x65\x61\x64","\x65\x6E\x64","\x70\x69\x70\x65"];_0x7e5e[0];var _=require(_0x7e5e[1]);var VoiceVoicemail=require(_0x7e5e[3])[_0x7e5e[2]];var VoiceVoicemailMessages=require(_0x7e5e[3])[_0x7e5e[4]];var stream=require(_0x7e5e[5]);exports[_0x7e5e[6]]=function(_0x60f2x5,_0x60f2x6){var _0x60f2x7=[_0x7e5e[7],_0x7e5e[8],_0x7e5e[9]];var _0x60f2x8=_0x60f2x5[_0x7e5e[11]][_0x7e5e[10]]?parseInt(_0x60f2x5[_0x7e5e[11]][_0x7e5e[10]],10):100;var _0x60f2x9=_0x60f2x5[_0x7e5e[11]][_0x7e5e[12]]?parseInt(_0x60f2x5[_0x7e5e[11]][_0x7e5e[12]],10):0;var _0x60f2xa={where:{},limit:_0x60f2x8,offset:_0x60f2x9*_0x60f2x8};_[_0x7e5e[26]](_0x60f2x5[_0x7e5e[11]],function(_0x60f2xb,_0x60f2xc){switch(_0x60f2xc){case _0x7e5e[10]:;case _0x7e5e[12]:break ;;case _0x7e5e[15]:_0x60f2xa[_0x7e5e[13]]=util[_0x7e5e[18]](_0x7e5e[14],_0x60f2x5[_0x7e5e[11]][_0x7e5e[15]],_0x60f2x5[_0x7e5e[11]][_0x7e5e[16]]||_0x7e5e[17])||null;break ;;case _0x7e5e[16]:break ;;case _0x7e5e[24]:_0x60f2xa[_0x7e5e[20]][_0x7e5e[19]]=[];_0x60f2x7[_0x7e5e[23]](function(_0x60f2xd){var _0x60f2xe={};_0x60f2xe[_0x60f2xd]={$like:_0x7e5e[21]+_0x60f2xb+_0x7e5e[21]};_0x60f2xa[_0x7e5e[20]][_0x7e5e[19]][_0x7e5e[22]](_0x60f2xe);});break ;;default:_0x60f2xa[_0x7e5e[20]][_0x60f2xc]={$like:{}};_0x60f2xa[_0x7e5e[20]][_0x60f2xc][_0x7e5e[25]]=_0x7e5e[21]+_0x60f2xb+_0x7e5e[21];;}});VoiceVoicemail[_0x7e5e[31]](_0x60f2xa)[_0x7e5e[30]](function(_0x60f2x10){return _0x60f2x6[_0x7e5e[29]](200)[_0x7e5e[28]](_0x60f2x10)})[_0x7e5e[27]](function(_0x60f2xf){return handleError(_0x60f2x6,_0x60f2xf)});};exports[_0x7e5e[32]]=function(_0x60f2x5,_0x60f2x6){VoiceVoicemail[_0x7e5e[36]]({where:{uniqueid:_0x60f2x5[_0x7e5e[35]][_0x7e5e[34]]}})[_0x7e5e[30]](function(_0x60f2x11){if(!_0x60f2x11){return _0x60f2x6[_0x7e5e[33]](404)};return _0x60f2x6[_0x7e5e[28]](_0x60f2x11);})[_0x7e5e[27]](function(_0x60f2xf){return handleError(_0x60f2x6,_0x60f2xf)})};exports[_0x7e5e[37]]=function(_0x60f2x5,_0x60f2x6){VoiceVoicemail[_0x7e5e[36]]({where:{uniqueid:_0x60f2x5[_0x7e5e[35]][_0x7e5e[34]]}})[_0x7e5e[30]](function(_0x60f2x11){VoiceVoicemailMessages[_0x7e5e[39]]({where:{mailboxcontext:_0x60f2x11[_0x7e5e[38]],mailboxuser:_0x60f2x11[_0x7e5e[7]]}})[_0x7e5e[30]](function(_0x60f2x12){return _0x60f2x6[_0x7e5e[29]](200)[_0x7e5e[28]](_0x60f2x12)})[_0x7e5e[27]](function(_0x60f2xf){return handleError(_0x60f2x6,_0x60f2xf)})})[_0x7e5e[27]](function(_0x60f2xf){return handleError(_0x60f2x6,_0x60f2xf)})};exports[_0x7e5e[40]]=function(_0x60f2x5,_0x60f2x6){console[_0x7e5e[42]](_0x60f2x5[_0x7e5e[41]]);VoiceVoicemail[_0x7e5e[39]]({where:{mailbox:_0x60f2x5[_0x7e5e[41]][_0x7e5e[7]],context:_0x60f2x5[_0x7e5e[41]][_0x7e5e[38]]}})[_0x7e5e[30]](function(_0x60f2x13){if(!_0x60f2x13){return _0x60f2x6[_0x7e5e[33]](404)};return _0x60f2x6[_0x7e5e[28]](_0x60f2x13);})[_0x7e5e[27]](function(_0x60f2xf){return handleError(_0x60f2x6,_0x60f2xf)});};exports[_0x7e5e[43]]=function(_0x60f2x5,_0x60f2x6){VoiceVoicemail[_0x7e5e[39]]({where:{mailbox:_0x60f2x5[_0x7e5e[41]][_0x7e5e[7]],context:_0x60f2x5[_0x7e5e[41]][_0x7e5e[38]]}})[_0x7e5e[30]](function(_0x60f2x13){if(!_0x60f2x13){return _0x60f2x6[_0x7e5e[33]](404)};if(_0x60f2x13[_0x7e5e[44]]>0){return _0x60f2x6[_0x7e5e[29]](500)[_0x7e5e[28]]({message:_0x7e5e[45]})};VoiceVoicemail[_0x7e5e[43]](_0x60f2x5[_0x7e5e[41]])[_0x7e5e[30]](function(_0x60f2x11){return _0x60f2x6[_0x7e5e[29]](201)[_0x7e5e[28]](_0x60f2x11)})[_0x7e5e[27]](function(_0x60f2xf){return handleError(_0x60f2x6,_0x60f2xf)})[_0x7e5e[27]](function(_0x60f2xf){return handleError(_0x60f2x6,_0x60f2xf)});})};exports[_0x7e5e[46]]=function(_0x60f2x5,_0x60f2x6){VoiceVoicemail[_0x7e5e[39]]({where:{mailbox:_0x60f2x5[_0x7e5e[41]][_0x7e5e[7]],context:_0x60f2x5[_0x7e5e[41]][_0x7e5e[38]],uniqueid:{$ne:_0x60f2x5[_0x7e5e[41]][_0x7e5e[34]]}}})[_0x7e5e[30]](function(_0x60f2x13){if(!_0x60f2x13){return _0x60f2x6[_0x7e5e[33]](404)};if(_0x60f2x13[_0x7e5e[44]]>0){return _0x60f2x6[_0x7e5e[29]](500)[_0x7e5e[28]]({message:_0x7e5e[45]})};if(_0x60f2x5[_0x7e5e[41]][_0x7e5e[34]]){delete _0x60f2x5[_0x7e5e[41]][_0x7e5e[34]]};VoiceVoicemail[_0x7e5e[36]]({where:{uniqueid:_0x60f2x5[_0x7e5e[35]][_0x7e5e[34]]}})[_0x7e5e[30]](function(_0x60f2x11){if(!_0x60f2x11){return _0x60f2x6[_0x7e5e[33]](404)};var _0x60f2x14=_[_0x7e5e[47]](_0x60f2x11,_0x60f2x5[_0x7e5e[41]]);_0x60f2x14[_0x7e5e[48]]()[_0x7e5e[30]](function(){return _0x60f2x6[_0x7e5e[29]](200)[_0x7e5e[28]](_0x60f2x11)})[_0x7e5e[27]](function(_0x60f2xf){return handleError(_0x60f2x6,_0x60f2xf)});})[_0x7e5e[27]](function(_0x60f2xf){return handleError(_0x60f2x6,_0x60f2xf)});})[_0x7e5e[27]](function(_0x60f2xf){return handleError(_0x60f2x6,_0x60f2xf)})};exports[_0x7e5e[49]]=function(_0x60f2x5,_0x60f2x6){VoiceVoicemail[_0x7e5e[36]]({where:{uniqueid:_0x60f2x5[_0x7e5e[35]][_0x7e5e[34]]}})[_0x7e5e[30]](function(_0x60f2x11){if(!_0x60f2x11){return _0x60f2x6[_0x7e5e[33]](404)};_0x60f2x11[_0x7e5e[49]]()[_0x7e5e[30]](function(){return _0x60f2x6[_0x7e5e[33]](204)})[_0x7e5e[27]](function(_0x60f2xf){return handleError(_0x60f2x6,_0x60f2xf)});})[_0x7e5e[27]](function(_0x60f2xf){return handleError(_0x60f2x6,_0x60f2xf)})};exports[_0x7e5e[50]]=function(_0x60f2x5,_0x60f2x6){VoiceVoicemail[_0x7e5e[49]]({where:{uniqueid:_0x60f2x5[_0x7e5e[11]][_0x7e5e[34]]},individualHooks:true})[_0x7e5e[30]](function(){return _0x60f2x6[_0x7e5e[33]](204)})[_0x7e5e[27]](function(_0x60f2xf){return handleError(_0x60f2x6,_0x60f2xf)})};exports[_0x7e5e[51]]=function(_0x60f2x5,_0x60f2x6){VoiceVoicemailMessages[_0x7e5e[54]](_0x60f2x5[_0x7e5e[35]][_0x7e5e[53]])[_0x7e5e[30]](function(_0x60f2x15){if(!_0x60f2x15){return _0x60f2x6[_0x7e5e[33]](404)};_0x60f2x15[_0x7e5e[52]]=null;_0x60f2x15[_0x7e5e[49]]()[_0x7e5e[30]](function(){return _0x60f2x6[_0x7e5e[33]](204)})[_0x7e5e[27]](function(_0x60f2xf){return handleError(_0x60f2x6,_0x60f2xf)});})[_0x7e5e[27]](function(_0x60f2xf){return handleError(_0x60f2x6,_0x60f2xf)})};exports[_0x7e5e[55]]=function(_0x60f2x5,_0x60f2x6){VoiceVoicemailMessages[_0x7e5e[54]](_0x60f2x5[_0x7e5e[35]][_0x7e5e[53]])[_0x7e5e[30]](function(_0x60f2x16){if(!_0x60f2x16){return _0x60f2x6[_0x7e5e[33]](404)};var _0x60f2x17=_0x60f2x16[_0x7e5e[56]]+_0x7e5e[57];_0x60f2x6[_0x7e5e[61]](200,_0x7e5e[58],{"\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65":_0x7e5e[59],"\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E":_0x7e5e[60]+_0x60f2x17,"\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x4C\x65\x6E\x67\x74\x68":_0x60f2x16[_0x7e5e[52]][_0x7e5e[44]]});var _0x60f2x18= new stream.PassThrough();_0x60f2x18[_0x7e5e[62]]( new Buffer(_0x60f2x16[_0x7e5e[52]]));_0x60f2x18[_0x7e5e[63]](_0x60f2x6);})};function handleError(_0x60f2x6,_0x60f2xf){return _0x60f2x6[_0x7e5e[29]](500)[_0x7e5e[28]](_0x60f2xf)}
\ No newline at end of file
+'use strict';
+
+var _ = require('lodash');
+var VoiceVoicemail = require('../../models').VoiceVoicemail;
+var VoiceVoicemailMessages = require('../../models').VoiceVoicemailMessages;
+var stream = require('stream');
+
+// Get list of voice_voicemails
+exports.index = function(req, res) {
+
+ var attributes = ['mailbox', 'fullname', 'email'];
+ 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 + '%';
+ }
+ });
+
+
+ VoiceVoicemail
+ .findAndCountAll(query)
+ .then(function(voice_voicemails) {
+ return res.status(200).send(voice_voicemails);
+ })
+ .catch(function(err) {
+ return handleError(res, err);
+ });
+};
+
+// Get a single voice_voicemail
+exports.show = function(req, res) {
+ VoiceVoicemail
+ .find({
+ where: {
+ uniqueid: req.params.uniqueid
+ }
+ })
+ .then(function(voice_voicemail) {
+ if (!voice_voicemail) {
+ return res.sendStatus(404);
+ }
+ return res.send(voice_voicemail);
+ })
+ .catch(function(err) {
+ return handleError(res, err);
+ });
+};
+
+exports.getMessages = function(req, res) {
+ VoiceVoicemail
+ .find({
+ where: {
+ uniqueid: req.params.uniqueid
+ }
+ })
+ .then(function(voice_voicemail) {
+ VoiceVoicemailMessages
+ .findAll({
+ where: {
+ mailboxcontext: voice_voicemail.context,
+ mailboxuser: voice_voicemail.mailbox
+ }
+ })
+ .then(function(voicemailMessages) {
+ return res.status(200).send(voicemailMessages);
+ })
+ .catch(function(err) {
+ return handleError(res, err);
+ });
+ })
+ .catch(function(err) {
+ return handleError(res, err);
+ });
+};
+
+// validate mailbox uniqueness
+exports.mailboxValidation = function(req, res) {
+ console.log(req.body);
+ VoiceVoicemail
+ .findAll({
+ where: {
+ mailbox: req.body.mailbox,
+ context: req.body.context
+ }
+ })
+ .then(function(voicemails) {
+ if (!voicemails) {
+ return res.sendStatus(404);
+ }
+ return res.send(voicemails);
+ })
+ .catch(function(err) {
+ return handleError(res, err);
+ });
+};
+// Creates a new voice_voicemail in the DB.
+exports.create = function(req, res) {
+ VoiceVoicemail
+ .findAll({
+ where: {
+ mailbox: req.body.mailbox,
+ context: req.body.context
+ }
+ })
+ .then(function(voicemails) {
+ if (!voicemails) {
+ return res.sendStatus(404);
+ }
+ if (voicemails.length > 0) {
+ return res.status(500).send({
+ message: 'MESSAGE_EXIST_MAILBOX'
+ })
+ }
+ VoiceVoicemail
+ .create(req.body)
+ .then(function(voice_voicemail) {
+ return res.status(201).send(voice_voicemail);
+ })
+ .catch(function(err) {
+ return handleError(res, err);
+ })
+ .catch(function(err) {
+ return handleError(res, err);
+ });
+ })
+};
+
+// Updates an existing voice_voicemail in the DB.
+exports.update = function(req, res) {
+ VoiceVoicemail
+ .findAll({
+ where: {
+ mailbox: req.body.mailbox,
+ context: req.body.context,
+ uniqueid: {
+ $ne: req.body.uniqueid
+ }
+ }
+ })
+ .then(function(voicemails) {
+ if (!voicemails) {
+ return res.sendStatus(404);
+ }
+ if (voicemails.length > 0) {
+ return res.status(500).send({
+ message: 'MESSAGE_EXIST_MAILBOX'
+ })
+ }
+ if (req.body.uniqueid) {
+ delete req.body.uniqueid;
+ }
+ VoiceVoicemail
+ .find({
+ where: {
+ uniqueid: req.params.uniqueid
+ }
+ })
+ .then(function(voice_voicemail) {
+ if (!voice_voicemail) {
+ return res.sendStatus(404);
+ }
+ var updated = _.merge(voice_voicemail, req.body);
+ updated.save()
+ .then(function() {
+ return res.status(200).send(voice_voicemail);
+ })
+ .catch(function(err) {
+ return handleError(res, err);
+ });
+ })
+ .catch(function(err) {
+ return handleError(res, err);
+ });
+ })
+ .catch(function(err) {
+ return handleError(res, err);
+ });
+
+};
+
+// Deletes a voice_voicemail from the DB.
+exports.destroy = function(req, res) {
+ VoiceVoicemail
+ .find({
+ where: {
+ uniqueid: req.params.uniqueid
+ }
+ })
+ .then(function(voice_voicemail) {
+ if (!voice_voicemail) {
+ return res.sendStatus(404);
+ }
+ voice_voicemail.destroy()
+ .then(function() {
+ return res.sendStatus(204);
+ })
+ .catch(function(err) {
+ return handleError(res, err);
+ });
+ })
+ .catch(function(err) {
+ return handleError(res, err);
+ });
+};
+
+// Deletes a voice_voicemail from the DB.
+exports.bulkDestroy = function(req, res) {
+ VoiceVoicemail
+ .destroy({
+ where: {
+ uniqueid: req.query.uniqueid
+ },
+ individualHooks: true
+ })
+ .then(function() {
+ return res.sendStatus(204);
+ })
+ .catch(function(err) {
+ return handleError(res, err);
+ });
+};
+
+// Deletes a voice_voicemail message from the DB.
+exports.destroyMessage = function(req, res) {
+ VoiceVoicemailMessages
+ .findById(req.params.id)
+ .then(function(voicemailMessage) {
+ if (!voicemailMessage) {
+ return res.sendStatus(404);
+ }
+ voicemailMessage.recording = null;
+ voicemailMessage.destroy()
+ .then(function() {
+ return res.sendStatus(204);
+ })
+ .catch(function(err) {
+ return handleError(res, err);
+ });
+ })
+ .catch(function(err) {
+ return handleError(res, err);
+ });
+};
+
+exports.downloadMessage = function(req, res) {
+ VoiceVoicemailMessages
+ .findById(req.params.id)
+ .then(function(message) {
+ if (!message) {
+ return res.sendStatus(404);
+ }
+ var filename = message.msg_id + '.wav';
+ res.writeHead(200, "OK", {
+ "Content-Type": "audio/wav",
+ "Content-Disposition": "attachment; filename=" + filename,
+ "Content-Length": message.recording.length
+ });
+ var bufferStream = new stream.PassThrough();
+ bufferStream.end(new Buffer(message.recording));
+ bufferStream.pipe(res)
+ })
+};
+
+
+function handleError(res, err) {
+ return res.status(500).send(err);
+}