public static void AddModerator(this List <ChatHubRoom> rooms, ChatHubModerator moderator, int roomId)
        {
            var room = rooms.FirstOrDefault(item => item.Id == roomId);

            if (room != null && !room.Moderators.Any(item => item.Id == moderator.Id))
            {
                room.Moderators.Add(moderator);
            }
        }
 public ChatHubModerator CreateChatHubModeratorClientModel(ChatHubModerator moderator)
 {
     return(new ChatHubModerator()
     {
         Id = moderator.Id,
         ModeratorDisplayName = moderator.ModeratorDisplayName,
         ChatHubUserId = moderator.ChatHubUserId,
     });
 }
Esempio n. 3
0
 public void DeleteChatHubModerator(int ModeratorId)
 {
     try
     {
         ChatHubModerator ChatHubModerator = db.ChatHubModerator.Where(item => item.Id == ModeratorId).FirstOrDefault();
         db.ChatHubModerator.Remove(ChatHubModerator);
         db.SaveChanges();
     }
     catch
     {
         throw;
     }
 }
Esempio n. 4
0
 public ChatHubModerator AddChatHubModerator(ChatHubModerator ChatHubModerator)
 {
     try
     {
         db.ChatHubModerator.Add(ChatHubModerator);
         db.SaveChanges();
         return(ChatHubModerator);
     }
     catch
     {
         throw;
     }
 }
        public static void RemoveModerator(this List <ChatHubRoom> rooms, ChatHubModerator moderator, int roomId)
        {
            var room = rooms.FirstOrDefault(item => item.Id == roomId);

            if (room != null)
            {
                var modi = room.Moderators.FirstOrDefault(item => item.Id == moderator.Id);
                if (modi != null)
                {
                    room.Moderators.Remove(modi);
                }
            }
        }
Esempio n. 6
0
        public async Task AddModerator(int userId, int roomId)
        {
            try
            {
                ChatHubUser user = await this.GetChatHubUserAsync();

                ChatHubUser targetUser = await this.chatHubRepository.GetUserByIdAsync(userId);

                if (user != null && targetUser != null)
                {
                    var room = this.chatHubRepository.GetChatHubRoom(roomId);
                    if (user.UserId != room.CreatorId && !Context.User.HasClaim(ClaimTypes.Role, RoleNames.Admin))
                    {
                        throw new HubException("Only room creators and administrators can add moderations.");
                    }

                    ChatHubModerator moderator = this.chatHubRepository.GetChatHubModerator(targetUser.UserId);
                    if (moderator == null)
                    {
                        moderator = new ChatHubModerator()
                        {
                            ChatHubUserId        = targetUser.UserId,
                            ModeratorDisplayName = targetUser.DisplayName
                        };
                        moderator = this.chatHubRepository.AddChatHubModerator(moderator);
                    }

                    ChatHubRoomChatHubModerator room_moderator = new ChatHubRoomChatHubModerator()
                    {
                        ChatHubRoomId      = roomId,
                        ChatHubModeratorId = moderator.Id,
                    };
                    this.chatHubRepository.AddChatHubRoomChatHubModerator(room_moderator);

                    var targetModeratorClientModel = this.chatHubService.CreateChatHubModeratorClientModel(moderator);
                    await Clients.Group(roomId.ToString()).SendAsync("AddModerator", targetModeratorClientModel, roomId);
                }
            }
            catch (Exception ex)
            {
                throw new HubException(ex.Message);
            }
        }