Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
        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());
            }
        }