Example #1
0
        public void Send(string token, string message)
        {
            try
            {
                using (BlogAngularEntities db = new BlogAngularEntities())
                {
                    var oldToken = db.Token.Find(token);
                    if (oldToken != null)
                    {
                        var user = db.User.Find(oldToken.userId);
                        oldToken.expires = DateTime.Now.AddMinutes(35);
                        Util.RemoveTokens(db);

                        storeMessage(db, user, message);

                        // Call the broadcastMessage method to update clients.
                        Clients.All.broadcastMessage(new ChatMessage()
                        {
                            Username = user.username,
                            Message  = message,
                            Hour     = DateTime.Now.ToString("h:mm:ss"),
                            Avatar   = user.avatar,
                        });

                        db.SaveChanges();
                    }
                    else
                    {
                    }
                }
            }
            catch (Exception e)
            {
            }
        }
Example #2
0
        public static void storeOldChat(BlogAngularEntities db, DateTime now)
        {
            var yesterdayChats = db.ChatMessage.ToList().Where(c => c.Created.Year < now.Year ||
                                                               c.Created.DayOfYear < now.DayOfYear)
                                 .OrderBy(c => c.Created).ToList();

            if (yesterdayChats.Count > 0)
            {
                yesterdayChats.ForEach(c => db.ChatMessage.Remove(c));
                string root = HttpContext.Current.Server.MapPath("~/App_Data");
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(root + "/" + now.AddDays(-1).ToString("yyyy_MM_dd") + ".txt"))
                {
                    foreach (var item in yesterdayChats)
                    {
                        var itemUser = db.User.Find(item.UserId);
                        file.WriteLine(JsonConvert.SerializeObject(new ChatMessage
                        {
                            Message  = item.Message,
                            Username = itemUser.username,
                            Avatar   = itemUser.avatar,
                            Hour     = item.Created.ToString("h:mm:ss")
                        }));
                    }
                }
            }
        }
Example #3
0
        private void storeMessage(BlogAngularEntities db, User user, string message)
        {
            var now  = DateTime.Now;
            var chat = new Models.ChatMessage()
            {
                uid     = Guid.NewGuid(),
                Created = now,
                User    = user,
                UserId  = user.id,
                Message = message.Length <= 150 ? message : message.Substring(0, 150)
            };

            db.ChatMessage.Add(chat);

            db.Entry(user).State = EntityState.Unchanged;
            db.Entry(chat).State = EntityState.Added;

            storeOldChat(db, now);
        }
Example #4
0
        public void enterChat(string token)
        {
            try
            {
                using (BlogAngularEntities db = new BlogAngularEntities())
                {
                    var oldToken = db.Token.Find(token);
                    if (oldToken != null)
                    {
                        var user = db.User.Find(oldToken.userId);
                        oldToken.expires = DateTime.Now.AddMinutes(35);
                        Util.RemoveTokens(db);

                        Clients.Others.userEnter(new EnteredMessage()
                        {
                            Username = user.username,
                            Avatar   = user.avatar
                        });

                        users.ForEach(u => Clients.Caller.userEnter(new EnteredMessage()
                        {
                            Username = u.user.username,
                            Avatar   = u.user.avatar
                        }));

                        users.Add(new ChatUser()
                        {
                            user  = user,
                            token = oldToken,
                            Id    = Context.ConnectionId
                        });
                    }
                    else
                    {
                    }
                }
            }
            catch (Exception e)
            {
            }
        }
Example #5
0
 public static void RemoveTokens(BlogAngularEntities db)
 {
     db.Token.Where(t => t.expires < DateTime.Now).ToList().ForEach(t => db.Token.Remove(t));
 }