Example #1
0
        public async Task JoinRoom(string roomId, string group)
        {
            await _chatService.SetUserCurrentRoomByUserId(Context.User.Identity.Name, Guid.Parse(roomId));

            GetUserAndCurrentRoomChatView user = await _chatService.GetUserAndCurrentRoomByUserId(Context.User.Identity.Name);

            GetAllMessagesChatView room = await _chatService.GetAllMessagesByRoomId(Guid.Parse(roomId));

            GetAllUsersChatView usersInRoom = _chatService.GetAllUsersByRoomId(user.CurrentRoomId);

            await Groups.AddToGroupAsync(Context.ConnectionId, group);

            await Clients.Group(group).SendAsync("UserConnected", $"{user.FirstName} {user.LastName} join to conversation", user, usersInRoom);

            await Clients.Group(group).SendAsync("ReceiveRoomMessages", room);
        }
        public GetAllUsersChatView GetAllUsersByRoomId(Guid roomId)
        {
            var users = _userManager.Users
                        .Where(x => x.CurrentRoomId == roomId)
                        .ToList();

            if (!users.Any())
            {
                throw new Exception("Users is not find");
            }

            var response = new GetAllUsersChatView();

            response.Users = _mapper.Map(users, response.Users);
            return(response);
        }
Example #3
0
        public override async Task OnConnectedAsync()
        {
            GetUserAndCurrentRoomChatView user = await _chatService.GetUserAndCurrentRoomByUserId(Context.User.Identity.Name);

            GetAllRoomsChatView userRooms = await _chatService.GetByUserId(Context.User.Identity.Name);

            List <string> roomNames = userRooms.Rooms
                                      .Where(x => x.Id == user.CurrentRoomId)
                                      .Select(x => x.Name)
                                      .ToList();

            GetAllUsersChatView usersInRoom = _chatService.GetAllUsersByRoomId(user.CurrentRoomId);
            await Clients.Groups(roomNames).SendAsync("UserConnected", $"{user.FirstName} {user.LastName} join to conversation", user, usersInRoom);

            await base.OnConnectedAsync();
        }