public void removeFCMToken(FormCollection fc) { using (var db = new OZChatDbContext()) { var fcmToken = fc["fcmToken"]; if (fcmToken != null) { FcmConnection oFcmConnection = db.FcmConnection.Where(p => p.DeviceToken == fcmToken).FirstOrDefault(); if (oFcmConnection != null) { db.FcmConnection.Remove(oFcmConnection); db.SaveChanges(); } } } }
public void addDeviceTokenFCM(string deviceToken) { string id = Context.User.Identity.GetUserId(); string name = Context.User.Identity.Name; using (var db = new OZChatDbContext()) { var hubUser = db.HubUsers.FirstOrDefault(p => p.UserName == name); List <FcmConnection> listFcmConnection = db.FcmConnection.Where(p => p.DeviceToken == deviceToken).ToList(); if (hubUser != null && listFcmConnection.Count == 0) { FcmConnection oFcmConnection = new FcmConnection(); oFcmConnection.DeviceToken = deviceToken; oFcmConnection.UserID = hubUser.ID; db.FcmConnection.Add(oFcmConnection); db.SaveChanges(); } } }
//Thêm tin nhắn vào group public async Task addMessageToGroup(int groupId, string groupName, string message) { var userId = Context.User.Identity.GetUserId(); var username = Context.User.Identity.Name; var fullname = Context.User.Identity.GetUserFullName(); var avatar = Context.User.Identity.GetUserAvatar(); using (var _db = new OZChatDbContext()) { // Tạo mới 1 tin nhắn string strDateTime = String.Format("{0:dd/MM/yyyy HH:mm}", DateTime.Now); var newMessage = new MessageGroup { FromID = userId, GroupID = groupId, FromFullName = fullname, FromAvatar = avatar, Content = message, CreatedDate = DateTime.Now, StrDateTime = strDateTime, IsFile = false }; // Gửi tin nhắn tới nhóm await Clients.OthersInGroup(groupName).groupMessage(newMessage, false); await Clients.Caller.groupMessage(newMessage, true); //Lấy ra các thành viên trong nhóm var groupUsers = _db.HubUserGroups.Where(p => p.GroupID == groupId && p.UserID != userId).ToList(); Boolean saveChange = false; foreach (var item in groupUsers) { var onlineUser = CommonStatic.OnlineUsers.FirstOrDefault(p => p.ID == item.UserID); //Nếu user đang online if (onlineUser != null) { // Nếu user đang không tương tác với nhóm var listConnection = _db.Connection.Where(p => p.UserID == item.UserID).ToList(); if (CommonStatic.InteracGroups.FirstOrDefault(p => p.UserID == item.UserID && p.GroupID == groupId) == null) { //Lấy ra 1 NewMessageGroup thoa mãn điều kiện var messGroup = _db.NewMessageGroups.FirstOrDefault(p => p.UserID == item.UserID && p.GroupID == groupId); // Nếu đã tồn tại thì cộng thêm 1 if (messGroup != null) { messGroup.Count += 1; } else { // Chưa tồn tại thì thêm mới _db.NewMessageGroups.Add(new NewMessageGroup { UserID = item.UserID, GroupID = groupId, Count = 1 }); } saveChange = true; _db.MessageGroups.Add(newMessage); _db.SaveChanges(); // Cập nhật lại số tin nhắn chưa đọc for (int i = 0; i < listConnection.Count(); i++) { Clients.Client(listConnection[i].ConnectionID).addCountMessageGroup(groupId); } } } var oInteracGroup = CommonStatic.InteracGroups.FirstOrDefault(p => p.UserID == item.UserID && p.GroupID == groupId); if (oInteracGroup == null) { try { var listFcmConnection = _db.FcmConnection.Where(p => p.UserID == item.UserID).ToList(); for (var j = 0; j < listFcmConnection.Count; j++) { FcmConnection oFcmConnection = listFcmConnection[j]; fcmServer.pushNotificationToGroup(oFcmConnection.DeviceToken, fullname, message, groupId.ToString()); } } catch (Exception e) { } } } if (saveChange == false) { _db.MessageGroups.Add(newMessage); _db.SaveChanges(); } } }
public void addMessagePrivate(string userId, string message) { string id = Context.User.Identity.GetUserId(); string fullname = Context.User.Identity.GetUserFullName(); string avatar = Context.User.Identity.GetUserAvatar(); using (var db = new OZChatDbContext()) { string strDateTime = String.Format("{0:dd/MM/yyyy HH:mm}", DateTime.Now); var messagePrivate = new MessagePrivate() { FromID = id, ReceiveID = userId, Content = message, FromFullName = fullname, FromAvatar = avatar, CreatedDate = DateTime.Now, StrDateTime = strDateTime, IsFile = false }; //Lấy ra user trong list user đang online var onlineUser = CommonStatic.OnlineUsers.FirstOrDefault(p => p.ID == userId); //Nếu user đang online var listConnectionReceive = db.Connection.Where(p => p.UserID == userId).ToList(); var listConnectionSend = db.Connection.Where(p => p.UserID == id).ToList(); if (onlineUser != null) { // Nếu user đang online và đang tương tác với mình if (CommonStatic.Interactives.FirstOrDefault(p => p.FromID == userId && p.ReceiveID == id) != null) { for (int i = 0; i < listConnectionSend.Count(); i++) { Clients.Client(listConnectionSend[i].ConnectionID).messagePrivate(messagePrivate, true); } for (int i = 0; i < listConnectionReceive.Count; i++) { Clients.Client(listConnectionReceive[i].ConnectionID).messagePrivate(messagePrivate, false); } AddUserMessagePrivate(id, userId, false, listConnectionReceive); } // Nếu user đang online nhưng không tương tác với mình. else { for (int i = 0; i < listConnectionSend.Count(); i++) { Clients.Client(listConnectionSend[i].ConnectionID).messagePrivate(messagePrivate, true); } for (int i = 0; i < listConnectionReceive.Count; i++) { Clients.Client(listConnectionReceive[i].ConnectionID).notificationMessage(fullname, message); } List <FcmConnection> listFcmConnection = db.FcmConnection.Where(p => p.UserID == userId).ToList(); for (var i = 0; i < listFcmConnection.Count; i++) { FcmConnection oFcmConnection = listFcmConnection[i]; fcmServer.pushNotificationToUser(oFcmConnection.DeviceToken, fullname, message, id); } AddUserMessagePrivate(id, userId, true, listConnectionReceive); } } // Người mình nhắn tin đang ko online. else { for (int i = 0; i < listConnectionSend.Count(); i++) { Clients.Client(listConnectionSend[i].ConnectionID).messagePrivate(messagePrivate, true); } List <FcmConnection> listFcmConnection = db.FcmConnection.Where(p => p.UserID == userId).ToList(); for (var i = 0; i < listFcmConnection.Count; i++) { FcmConnection oFcmConnection = listFcmConnection[i]; fcmServer.pushNotificationToUser(oFcmConnection.DeviceToken, fullname, message, id); } var user = db.UserMessagePrivates.FirstOrDefault(p => p.FromUserID == id && p.RecieveUserID == userId); if (user == null) { db.UserMessagePrivates.Add(new UserMessagePrivate { FromUserID = id, RecieveUserID = userId, NewMessage = 0 }); } else { user.NewMessage += 1; } } db.MessagePrivates.Add(messagePrivate); db.SaveChanges(); //GetAllMessageUser(userId,listConnectionReceive); } }