public void SetChatUserStatusToIdle(int status) { System.Web.HttpContextBase httpContext = Context.Request.GetHttpContext(); int UserId = 0; HttpCookie auth_cookie = httpContext.Request.Cookies[Cookies.UserId]; if (auth_cookie != null) { UserId = Convert.ToInt32(auth_cookie.Value); } if (SingletonUserChatGroups.Instance.ActiveUsers? .Where(m => m.UserId == UserId) .Any() == true) { SingletonUserChatGroups.Instance.ActiveUsers .Where(m => m.UserId == UserId) .FirstOrDefault() .Status = status; if (status == (int)ChatUserStatus.Active) { SingletonUserChatGroups.Instance.ActiveUsers .Where(m => m.UserId == UserId) .FirstOrDefault() .LastActivityAt = DateTime.UtcNow; } SingletonUserChatGroups.Instance.ActiveUsers .Where(m => m.UserId == UserId) .FirstOrDefault() .Status = status; } ChatMessageActiveUser obj = new ChatMessageActiveUser(); if (SingletonUserChatGroups.Instance.ActiveUsers != null) { obj.ActiveUsers = SingletonUserChatGroups.Instance.ActiveUsers.OrderByDescending(m => m.LastMessageAt).ToList(); Clients.All.SetChatUserStatusToIdleCallback(new ActionOutput <ChatMessageActiveUser> { Status = ActionStatus.Successfull, Object = obj }); } }
private void ChatUserStatusToIdleTimer(object state) { if (SingletonUserChatGroups.Instance.ActiveUsers != null) { var IdleUsers = SingletonUserChatGroups.Instance.ActiveUsers .Where(m => m.LastActivityAt < DateTime.UtcNow.AddMinutes(-IdleUserTimeout)) .ToList(); SingletonUserChatGroups.Instance.ActiveUsers .Where(m => m.LastActivityAt < DateTime.UtcNow.AddMinutes(-IdleUserTimeout)) .ToList() .ForEach(m => m.Status = (int)ChatUserStatus.Idle); ChatMessageActiveUser obj = new ChatMessageActiveUser(); obj.ActiveUsers = SingletonUserChatGroups.Instance.ActiveUsers.OrderBy(m => m.Status).ToList(); _chatHub.Clients.All.SetChatUserStatusToIdleCallback(new ActionOutput <ChatMessageActiveUser> { Message = "ChatUserStatusToIdleTimer: " + DateTime.UtcNow.ToString(), Status = ActionStatus.Successfull, Object = obj }); } }