linagora/openpaas-esn

View on GitHub
modules/linagora.esn.messaging.email/lib/handlers/whatsup.js

Summary

Maintainability
A
2 hrs
Test Coverage
'use strict';

var async = require('async');

module.exports = function(lib, dependencies) {

  var userModule = dependencies('user');

  function sendMessageAsEMail(from, user, message, context, callback) {
    var mail = dependencies('email');
    var data = {
      message: message.content,
      firstname: user.firstname,
      lastname: user.lastname
    };

    if (context && context.url) {
      data.url = context.url;
    }

    return mail.sendHTML(from, user.emails[0], message.title || 'New Message', 'core.new-message-notification', data, callback);
  }

  function sendResponseAsEmail(from, user, message, callback) {
    return callback(new Error('Not implemented'));
  }

  function generateReplyMessage(user, message) {
    return {
      content: message.body.text,
      author: user._id,
      source: 'email',
      attachments: message.attachments
    };
  }

  function getUsersForMessage(collaboration, message, options, callback) {
    async.map(collaboration.members, function(member, done) {
      return userModule.get(member.member.id, function(err, user) {
        if (!err && user) {
          return done(null, {
            user: user,
            member: member
          });
        }
        return done();
      });
    }, callback);
  }

  function getReplyObjectType() {
    return 'whatsup';
  }

  return {
    sendMessageAsEMail: sendMessageAsEMail,
    sendResponseAsEmail: sendResponseAsEmail,
    generateReplyMessage: generateReplyMessage,
    getUsersForMessage: getUsersForMessage,
    getReplyObjectType: getReplyObjectType
  };
};