public async Task <IActionResult> RoomChat(string id) { try { var room = roomService.FindRoomById(id); if (!room.UserChatRooms.Any(x => x.User.UserName == User.Identity.Name)) { var user = await userManager.FindByNameAsync(User.Identity.Name); roomService.AddUserToRoom(user, room); } var users = roomService.GetAllUserNamesInRoomById(id); RoomChatModelView model = new RoomChatModelView() { Id = id, Users = users, Movies = db.Movies.ToList() }; return(View(model)); } catch { return(RedirectToAction("Index")); } }
public async Task <SimpleRoomResponse> Handle(JoinRoomRequest request, CancellationToken cancellationToken) { var user = await _userService.GetById(request.UserId); var room = await _roomService.GetByName(request.RoomName); await _roomService.AddUserToRoom(user, room); return((await _roomService.GetById(room.Id)).MapTo().SimpleResponse()); }
public async Task Handle(SignalingLoginNotification request, CancellationToken cancellationToken) { var user = await _userService.GetById(request.UserId); var room = await _roomService.GetByName(request.RoomName); await _roomService.AddUserToRoom(user, room); await _signalingHub.Groups.AddToGroupAsync(user.Connection.ConnectionId, room.Name); await _signalingHub.Clients.Client(user.Connection.ConnectionId) .SendAsync(SignalingEvent.UserLoggedIn, user.MapTo().SimpleResponse()); await _signalingHub.Clients.GroupExcept(room.Name, user.Connection.ConnectionId) .SendAsync(SignalingEvent.UserAdded, user.MapTo().SimpleResponse()); }