Ejemplo n.º 1
0
 private void GetAllUser(object source, OnGetUserEventArgs args)
 {
     if (!args.Update)
     {
         foreach (string name in args.Users)
         {
             if (!OnlineUsers.Any(u => u.Name == name))
             {
                 MainDispatcher.Invoke(() => { OnlineUsers.Add(new User {
                         Name = name
                     }); });
             }
         }
     }
     else
     {
         if (args.AddUser)
         {
             MainDispatcher.Invoke(() => { OnlineUsers.Add(new User {
                     Name = args.User
                 }); });
         }
         else
         {
             try
             {
                 var user = OnlineUsers.FirstOrDefault(u => u.Name == args.User);
                 MainDispatcher.Invoke(() => { OnlineUsers.Remove(user); });
             }
             catch
             {
             }
         }
     }
 }
Ejemplo n.º 2
0
 public static void RemoveOnlineUser(string userID)
 {
     if (OnlineUsers != null)
     {
         var onlineUser = OnlineUsers.FirstOrDefault(p => p.ID == userID);
         if (onlineUser != null)
         {
             OnlineUsers.Remove(onlineUser);
         }
     }
 }
Ejemplo n.º 3
0
        public static void AddOnlineUser(HubUser hubUser)
        {
            if (OnlineUsers == null)
            {
                OnlineUsers = new List <HubUser>();
            }

            if (OnlineUsers.FirstOrDefault(p => p.ID == hubUser.ID) == null)
            {
                OnlineUsers.Add(hubUser);
            }
        }
Ejemplo n.º 4
0
        public async Task SendMessage(string message)
        {
            var user = OnlineUsers.FirstOrDefault(usr => usr.Id == Context.ConnectionId);
            var chat = Chats.FirstOrDefault(ch => ch.ChatId == user.ChatId);

            chat.Messages.Add(new Message {
                Sender = user.UserName, Content = message
            });
            foreach (var item in chat.ConnectedUsers)
            {
                await Clients.Client(item.Id).SendAsync("UpdateChat", chat);
            }
        }
Ejemplo n.º 5
0
        public async Task ConnectToChat(int chatId)
        {
            var user = OnlineUsers.FirstOrDefault(usr => usr.Id == usr.Id);

            if (user.ChatId.HasValue)
            {
                var chattmp = Chats.FirstOrDefault(ch => ch.ChatId == user.ChatId);
                chattmp.ConnectedUsers.Remove(user);
                user.ChatId = null;
            }
            var chat = Chats.FirstOrDefault(chat => chat.ChatId == chatId);

            chat.ConnectedUsers.Add(user);
            user.ChatId = chat == null? 1: chat.ChatId;
            if (chat != null)
            {
                await Clients.Caller.SendAsync("ConnectToChat", chat);
            }
        }
Ejemplo n.º 6
0
        public override Task OnDisconnectedAsync(Exception exception)
        {
            var disconectedUser = OnlineUsers.FirstOrDefault(usr => usr.Id == Context.ConnectionId);

            OnlineUsers.Remove(disconectedUser);
            if (disconectedUser == null)
            {
                return(null);
            }
            var chat = Chats.FirstOrDefault(ch => ch.ChatId == disconectedUser.ChatId);

            if (disconectedUser != null)
            {
                chat.ConnectedUsers.Remove(disconectedUser);
            }
            foreach (var item in chat.ConnectedUsers)
            {
                Clients.Client(item.Id).SendAsync("UpdateChat", chat);
            }
            Clients.All.SendAsync("UserConnected", GetOnlineUsers());
            return(base.OnDisconnectedAsync(exception));
        }
Ejemplo n.º 7
0
        public async Task Connect(UserViewModel user)
        {
            var newUser = new User {
                Id = Context.ConnectionId, UserName = user.Name
            };

            if (OnlineUsers.FirstOrDefault(usr => usr.Id == Context.ConnectionId) != null)
            {
                var old = OnlineUsers.FirstOrDefault(usr => usr.Id == Context.ConnectionId);
                old.UserName = user.Name;
                await Clients.All.SendAsync("UserConnected", GetOnlineUsers());
            }
            else
            {
                OnlineUsers.Add(newUser);
                await Clients.All.SendAsync("UserConnected", GetOnlineUsers());
            }
            var chat = Chats.FirstOrDefault(cht => cht.Name == "Global Chat");

            newUser.ChatId = chat.ChatId;
            chat.ConnectedUsers.Add(newUser); //бага тута
            //await Clients.Caller.SendAsync("ConnectToChat2", new { newUser.CurrentChat.Messages, Users = new[] { new User { UserName = "******" } } });
            //var costilniyChat = new Chat {
            //    ConnectedUsers = newUser.CurrentChat.ConnectedUsers.Select(usr => new User
            //    {
            //        UserName = usr.UserName,
            //        MessageBox = newUser.MessageBox,
            //        Id = newUser.Id,
            //        CurrentChat = null
            //    }).ToList(),
            //    ChatId = newUser.CurrentChat.ChatId,
            //    Messages = newUser.CurrentChat.Messages,
            //    Name = newUser.CurrentChat.Name
            //};
            await Clients.Caller.SendAsync("ConnectToChat", chat);
        }
Ejemplo n.º 8
0
 /// <summary>
 /// Finds user from Online Users list by its name
 /// </summary>
 /// <param name="username">Username to find</param>
 /// <returns>User object or null</returns>
 public User FindOnlineUser(string username)
 {
     return(OnlineUsers.FirstOrDefault(x => string.Equals(x.Username, username, StringComparison.OrdinalIgnoreCase)));
 }