Esempio n. 1
0
        // ------------  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();
        }
Esempio n. 2
0
        public void removeInteracPrivate()
        {
            string userId = Context.User.Identity.GetUserId();

            Clients.Caller.userInteractive(userId, false);
            CommonStatic.RemoveInteractives(userId);
        }
Esempio n. 3
0
        // 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();
        }