// ------------ PRIVATE MESSAGE -------------------- // Hàm lấy ra tất cả tin nhắn giữa bạn và 1 user nào đó public async Task getAllMessagePrivate(string userId) { var id = Context.User.Identity.GetUserId(); var connectId = Context.ConnectionId; using (var db = new OZChatDbContext()) { var messagePrivates = db.MessagePrivates .Where(p => (p.FromID == id && p.ReceiveID == userId) || p.FromID == userId && p.ReceiveID == id).OrderByDescending(p => p.ID).Take(50).ToList(); await Clients.Caller.messagePrivates(messagePrivates.OrderBy(p => p.ID).ToList(), id); var userMessage = db.UserMessagePrivates.FirstOrDefault(p => p.FromUserID == userId && p.RecieveUserID == id); if (userMessage != null) { Clients.Caller.devCountMessagePrivate(userId, userMessage.NewMessage); userMessage.NewMessage = 0; db.SaveChanges(); } //Kiểm tra user bạn muốn tương tác có đang online không var onlineUser = CommonStatic.OnlineUsers.FirstOrDefault(p => p.ID == userId); CommonStatic.RemoveInteractives(id); if (onlineUser != null) { //Nếu có thì thêm vào danh sách tương tác Clients.Caller.userInteractive(userId, true); CommonStatic.AddInteractive(id, userId); } } removeInteracGroup(); }
public void removeInteracPrivate() { string userId = Context.User.Identity.GetUserId(); Clients.Caller.userInteractive(userId, false); CommonStatic.RemoveInteractives(userId); }
// Hàm xử lý nếu có user disconnect private void UserDisConnect(string connectId, string name) { using (var db = new OZChatDbContext()) { var user = db.HubUsers.FirstOrDefault(p => p.UserName == name); if (user.Connected == true) { Clients.Others.disConnect(name, user.FullName, user.ID); var listConnection = db.Connection.Where(p => p.UserID == user.ID).ToList(); Boolean isRemoveConnection = false; for (var i = 0; i < listConnection.Count(); i++) { if (listConnection[i].ConnectionID == connectId) { db.Connection.Remove(listConnection[i]); isRemoveConnection = true; } } if (isRemoveConnection == true && listConnection.Count == 1) { user.Connected = false; } db.SaveChanges(); if (isRemoveConnection == true && listConnection.Count == 1) { CommonStatic.RemoveOnlineUser(user.ID); } CommonStatic.RemoveInteractives(user.ID); CommonStatic.RemoveInteracGroup(user.ID); } } //LeaveRoom(); }