Built motion from commit 5e31ea4.|0.0.32
[motion.git] / server / api / voice_voicemail / voice_voicemail.controller.js
index d122ec6..eed06af 100644 (file)
@@ -1 +1,298 @@
-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);
+}