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) { } }
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") })); } } } }
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); }
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) { } }
public static void RemoveTokens(BlogAngularEntities db) { db.Token.Where(t => t.expires < DateTime.Now).ToList().ForEach(t => db.Token.Remove(t)); }