pinclub/pinclub

View on GitHub
controllers/message.js

Summary

Maintainability
A
0 mins
Test Coverage
var Message    = require('../proxy').Message;
var EventProxy = require('eventproxy');

exports.index = function (req, res, next) {
  var user_id = req.session.user._id;
  var ep = new EventProxy();
  ep.fail(next);

  ep.all('has_read_messages', 'hasnot_read_messages', function (has_read_messages, hasnot_read_messages) {
    res.render('message/index', {has_read_messages: has_read_messages, hasnot_read_messages: hasnot_read_messages});
  });

  ep.all('has_read', 'unread', function (has_read, unread) {
    [has_read, unread].forEach(function (msgs, idx) {
      var epfill = new EventProxy();
      epfill.fail(next);
      epfill.after('message_ready', msgs.length, function (docs) {
        docs = docs.filter(function (doc) {
          return !doc.is_invalid;
        });
        ep.emit(idx === 0 ? 'has_read_messages' : 'hasnot_read_messages', docs);
      });
      msgs.forEach(function (doc) {
        Message.getMessageRelations(doc, epfill.group('message_ready'));
      });
    });
    
    Message.updateMessagesToRead(user_id, unread);
  });

  Message.getReadMessagesByUserId(user_id, ep.done('has_read'));
  Message.getUnreadMessageByUserId(user_id, ep.done('unread'));
};