예제 #1
0
 //
 // GET: /Chat/MasterHistory
 public ActionResult MasterHistory()
 {
     ViewBag.title = "Master Chat History";
     using (ChatContext db = new ChatContext())
     {
         List<ChatMessage> messages = db.ChatMessages.ToList();
         ViewBag.messages = messages;
     }
     return View("ChatHistory");
 }
예제 #2
0
 //
 // GET: /Chat/MyHistory
 public ActionResult MyHistory()
 {
     ViewBag.title = "My Chat History";
     using (ChatContext db = new ChatContext())
     {
         List<ChatMessage> messages = new List<ChatMessage>();
         List<UserToChatMessage> utcms = db.UserToChatMessages.ToList().Where(t => t.FBID == (string)Session["FBID"]).OrderBy(t => t.ChatMessageID).ToList();
         foreach (UserToChatMessage utcm in utcms)
         {
             messages.Add(db.ChatMessages.ToList().Where(t => t.ChatMessageID == utcm.ChatMessageID).Last());
         }
         ViewBag.messages = messages;
     }
     return View("ChatHistory");
 }
예제 #3
0
 public ActionResult GetRecent()
 {
     List<ChatMessage> messages = new List<ChatMessage>();
     using (ChatContext db = new ChatContext())
     {
         List<UserToChatMessage> utcms = db.UserToChatMessages.ToList().Where(t => t.FBID == (string)Session["FBID"]).OrderBy(t => t.ChatMessageID).ToList();
         foreach (UserToChatMessage utcm in utcms)
         {
             ChatMessage c = db.ChatMessages.ToList().Where(t => t.ChatMessageID == utcm.ChatMessageID).Last();
             if(c.TimeSent.CompareTo(Session["LogInTime"]) > 0){
                 messages.Add(c);
             }
         }
     }
     String json = new JavaScriptSerializer().Serialize(messages);
     return new ContentResult { Content = json, ContentType = "application/json" };
 }
예제 #4
0
        public ActionResult SendMessage(String message, String username)
        {
            Debug.WriteLine(username);
            var pusher = new Pusher("72484", "e9473350e86cf2fd89ac", "3e1cbae89445267f362f");
            IGetResult<object> result = pusher.Get<object>("/channels/presence-channel/users");
            PusherUsers users = new JavaScriptSerializer().Deserialize<PusherUsers>(result.Body);
            pusher.Trigger("presence-channel", "my_event", new { message = message, user = Session["FBID"], username = username });

            // Database logging
            using (ChatContext db = new ChatContext())
            {
                // Insert chat message row
                ChatMessage c = new ChatMessage { FBID = (String)Session["FBID"], Message = message, UserName = username, TimeSent = DateTime.Now };
                db.ChatMessages.Add(c);
                db.SaveChanges();   // SaveChanges() is called to get a ChatMessageID value from the DB.
                // Insert user-to-chat rows for all connected users
                foreach(PusherUser user in users.users){
                    UserToChatMessage u = new UserToChatMessage { FBID = user.id.ToString(), ChatMessageID = c.ChatMessageID };
                    db.UserToChatMessages.Add(u);
                }
                db.SaveChanges();
            }

            return new HttpStatusCodeResult((int)HttpStatusCode.OK);
        }