public async Task JoinRoom(int id) { if (id == CurrentRoom.Id) { return; } if (CurrentRoom.Id != 0) { ChatFacade.LeaveChatRoom(CurrentRoom.Id, CurrentUser.Id); await Service.ChangeViewModelForConnectionsAsync( (ChatViewModel viewModel) => { viewModel.CurrentRoom.UserList = viewModel.CurrentRoom.UserList.Where(u => u.Id != CurrentUser.Id).ToList(); viewModel.Messages.Add(new ChatMessageDto { Message = "User has left", UserName = CurrentUser.Name, ChatRoomId = CurrentRoom.Id, Time = DateTime.Now, UserId = CurrentUser.Id }); }, ChatFacade .GetAllUsersFromChatRoom(CurrentRoom.Id) .Select(s => s.ConnectionId) .ToList()); } CurrentRoom = ChatFacade.GetChatRoomById(id); ChatFacade.AddUserToChatRoom(id, CurrentUser); Messages = ChatFacade.GetRecentMessagesFromRoom(id); IsInRoom = true; CurrentRoom.UserList.Add(CurrentUser); await Service.ChangeViewModelForConnectionsAsync( (ChatViewModel viewModel) => { viewModel.CurrentRoom.UserList.Add(CurrentUser); viewModel.Messages.Add(new ChatMessageDto { Message = "User has connected", UserName = CurrentUser.Name, ChatRoomId = CurrentRoom.Id, Time = DateTime.Now, UserId = CurrentUser.Id }); }, ChatFacade .GetAllUsersFromChatRoom(CurrentRoom.Id) .Select(s => s.ConnectionId) .ToList()); }
public async Task SendMessage() { if (!string.IsNullOrEmpty(NewMessage) && CurrentRoom.Id > 0) { var msg = new ChatMessageDto { UserId = CurrentUser.Id, ChatRoomId = CurrentRoom.Id, Message = NewMessage, Time = DateTime.Now, UserName = CurrentUser.Name }; msg.Id = ChatFacade.SendMessageToChatRoom(CurrentUser, msg); Messages.Add(msg); NewMessage = ""; await Service.ChangeViewModelForConnectionsAsync((ChatViewModel viewModel) => { viewModel.Messages.Add(msg); }, ChatFacade .GetAllUsersFromChatRoom(CurrentRoom.Id) .Select(s => s.ConnectionId) .ToList()); } }