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"));
            }
        }
Esempio n. 2
0
        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());
        }
Esempio n. 3
0
        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());
        }