Switch to side-by-side view

--- a/backend/webserver/api/c2net/controller.js
+++ b/backend/webserver/api/c2net/controller.js
@@ -1,158 +1,133 @@
 'use strict';
 
-var logger;
-var core;
-var user = require('./db/user.js');
+var mongoose = require('mongoose');
+var logger, core, user, saveNotif, notificationChannel;
 var socket = require('../../../ws/mobile.js');
-
-function sayHello (req, res) {
+var context = require('../../../../../../context');
+function sayHello(req, res) {
   logger.info('Welcome to c2net!');
   return res.json(200, {message: core.getMessage()});
 }
 
-function sendNotification (req, res) {
+function createUserNotification(notification){
+  
+  for(var i=0; i<notification.userEmail.length; i++){
+    console.log(notification.userEmail[i]);
+    user.findByEmail(notification.userEmail[i],function(err, u){
+      if(!u || err)
+      {
+        logger.info('User not found ...');
+        logger.debug(err);
+        return;
+      }
+      u.objectType = 'user';
+      logger.info("ID found by Email :" + u._id)
+      var data = {
+        title: notification.title,
+        author: u.id,
+        action: notification.body.substring(0,25)+'...',
+        object: notification.body,
+        link: notification.link,
+        level: "notification.level",
+        timestamps: new Date(),
+        target: [u],
+        data: {},
+        context: "context",
+        icon : notification.icon
+      };
+      saveNotif.save(data,function(err,notifData){
+        if(err)
+        {
+          console.log(err);
+          return;
+        }  
+      });
+      var notif = {
+        title : notification.title,
+        body : notification.body,
+        component : notification.component,
+        link : notification.link,
+        userEmail : notification.userEmail[i],
+        icon : notification.icon,
+        type : notification.type
+        };
+      try{socket.emit(u._id, notif);
+        console.log("notification Handled by controller and emmited to socket.")
+      }
+      catch(err){
+        console.log("----emiter error:-----")
+        console.log(err)
+      }
+    });
+  }
+}
+
+
+function sendNotification(req, res){
+
+  
+		createUserNotification(req.body);  
+  
+	
+	
+	
+	  
+	  
+	  //console.log(User.findById(req.user._id));
+	  
+	  //console.log(saveNotif);
+	  
+	 /* 
   var notif = {
-    title: req.body.title,
+    title:req.body.title,
     msg: req.body.msg,
     status: 'unread',
     type: req.body.type
   };
-  user.newNotification(req.body.userId, notif);
-  socket.emit(req.body.userId, notif);
-  return res.json(204, { message: 'User is notified!' });
+  user.newNotification(req.user._id, notif);
+  socket.emit(req.user._id, notif);
+  return res.json(204, {message:"User is notified!"});
+  */
+  return res.json(204, {message:"User is notified!"});
 }
 
-module.exports = function (dependencies) {
+module.exports = function(dependencies) {
   var PubSub = dependencies('pubsub').local;
   var PubSubG = dependencies('pubsub').global;
+  saveNotif = dependencies('notification').notification;
+  user = dependencies('user');
+  logger = context.logger;
+  core = require('./core')(dependencies);
+  
+  notificationChannel = context.requires.send_notifications;
+  console.log(notificationChannel);
+  
+  notificationChannel.subscribe('C2NET_Notification');
+  notificationChannel.on('message', function(data){
+	  createUserNotification(JSON.parse(data.toString()));
+  });
+  
 
   // User login ------------------------------------------------------------------------------
-  PubSub.topic('login:success').subscribe(function (data) {
-    logger.info('Login successfully!');
-
-    // var notif = {
-    //   title: 'Login successfully',
-    //   msg: 'Welcome to C2NET!',
-    //   status: 'unread',
-    //   type: 'login'
-    // };
-
+  PubSub.topic('login:success').subscribe(function(data) {
+    logger.info("Login successfully!");
+    
+    var notif = {
+      title:'Login successfully',
+      msg: 'Welcome to C2NET!',
+      status: 'unread',
+      type: 'login'
+    };
+    // console.log(data)
     // user.newNotification(data._id, notif);
     // socket.emit(data._id, notif);
+    
   });
 
-  PubSub.topic('login:failure').subscribe(function (data) {
-    logger.info('Login failure!');
+  
 
-    // var notif = {
-    //   title: 'Login failure',
-    //   msg: 'You or someone was attempting to login with wrong password!',
-    //   status: 'unread',
-    //   type: 'login'
-    // };
-
-    // user.newNotification(data._id, notif);
-    // socket.emit(data._id,notif);
-  });
-
-  // Community -------------------------------------------------------------------------------------------
-  PubSub.topic('community:join').subscribe(function (data) {
-    logger.info('Join community successfully!');
-  });
-
-  PubSub.topic('community:leave').subscribe(function (data) {
-    logger.info('Leave community successfully!');
-  });
-
-  PubSub.topic('community:membership:invitation:cancel').subscribe(function (data) {
-    logger.info('Cancel invitation of joining into the community!');
-  });
-
-  PubSub.topic('community:membership:invitation:decline').subscribe(function (data) {
-    logger.info('Invitation of membership in the community is declined!');
-  });
-
-  PubSub.topic('community:membership:request:refuse').subscribe(function (data) {
-    logger.info('The request of membership in the communicty is refused!');
-  });
-
-  PubSub.topic('community:membership:request:cancel').subscribe(function (data) {
-    logger.info('The request of membership in the community is cannceled');
-  });
-
-  PubSub.topic('community:membership:invite').subscribe(function (data) {
-    logger.info('There is an invitation of being a member in the community!');
-  });
-
-  PubSub.topic('community:membership:request').subscribe(function (data) {
-    logger.info('There is a request of being a member in the community!');
-  });
-
-  // Notification -----------------------------------------------------------------------------
-  PubSub.topic('notification:external').subscribe(function (data) {
-    logger.info('notification!');
-  });
-
-  // message -------------------------------------------------------------------------
-  PubSub.topic('message:activity').subscribe(function (data) {
-    logger.info('Activity from message!');
-  });
-
-  PubSub.topic('message:stored').subscribe(function (data) {
-    logger.info('Message stored!');
-  });
-
-  // invitation -------------------------------------------------------------------------
-  PubSub.topic('invitation:init:failure').subscribe(function (data) {
-    logger.info('Failure from initation of invitation!');
-  });
-
-  PubSub.topic('invitation:init:success').subscribe(function (data) {
-    logger.info('Success from initation of invitation!');
-  });
-
-  PubSub.topic('invitation:finalize:failure').subscribe(function (data) {
-    logger.info('Failure from finalization of invitation!');
-  });
-
-  PubSub.topic('invitation:finalize:success').subscribe(function (data) {
-    logger.info('Success from finalization of invitation!');
-  });
-
-  PubSub.topic('invitation:process:failure').subscribe(function (data) {
-    logger.info('Failure from process of invitation!');
-  });
-
-  PubSub.topic('invitation:process:success').subscribe(function (data) {
-    logger.info('Success from process of invitation!');
-  });
-
-  // -----------------------------------------------------------------------------------------
-  PubSubG.topic('usernotification:created').subscribe(function (data) {
-    logger.info('usernotification:created');
-  });
-
-  // -----------------------------------------------------------------------------------------
-  PubSubG.topic('message:activity').subscribe(function (data) {
-    logger.info('message:activity');
-  });
-
-  // -----------------------------------------------------------------------------------------
-  PubSubG.topic('message:stored').subscribe(function (data) {
-    logger.info('message:stored');
-  });
-
-  // -----------------------------------------------------------------------------------------
-  PubSub.topic('graceperiod:done').subscribe(function (data) {
-    logger.info('************************************************');
-    logger.info('graceperiod:done');
-    logger.info(data);
-  });
-
-  logger = dependencies('logger');
-  core = require('./core')(dependencies);
   return {
     sayHello: sayHello,
-    sendNotification: sendNotification
-  };
+    sendNotification:sendNotification
+  }
 };