public async Task AddBlacklistUser(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 blacklist users."); } ChatHubBlacklistUser blacklistUser = this.chatHubRepository.AddChatHubBlacklistUser(targetUser); ChatHubRoomChatHubBlacklistUser room_blacklistuser = new ChatHubRoomChatHubBlacklistUser() { ChatHubRoomId = roomId, ChatHubBlacklistUserId = blacklistUser.Id, }; this.chatHubRepository.AddChatHubRoomChatHubBlacklistUser(room_blacklistuser); var targetBlacklistUserClientModel = this.chatHubService.CreateChatHubBlacklistUserClientModel(blacklistUser); await Clients.Group(roomId.ToString()).SendAsync("AddBlacklistUser", targetBlacklistUserClientModel, roomId); } } catch (Exception ex) { throw new HubException(ex.Message); } }
public static void AddBlacklistUser(this List <ChatHubRoom> rooms, ChatHubBlacklistUser blacklistUser, int roomId) { var room = rooms.FirstOrDefault(item => item.Id == roomId); if (room != null && !room.BlacklistUsers.Any(item => item.Id == blacklistUser.Id)) { room.BlacklistUsers.Add(blacklistUser); } }
public ChatHubBlacklistUser CreateChatHubBlacklistUserClientModel(ChatHubBlacklistUser blacklistUser) { return(new ChatHubBlacklistUser() { Id = blacklistUser.Id, BlacklistUserDisplayName = blacklistUser.BlacklistUserDisplayName, ChatHubUserId = blacklistUser.ChatHubUserId, }); }
public void DeleteChatHubBlacklistUser(int BlacklistUserId) { try { ChatHubBlacklistUser ChatHubBlacklistUser = db.ChatHubBlacklistUser.Where(item => item.Id == BlacklistUserId).FirstOrDefault(); db.ChatHubBlacklistUser.Remove(ChatHubBlacklistUser); db.SaveChanges(); } catch { throw; } }
public static void RemoveBlacklistUser(this List <ChatHubRoom> rooms, ChatHubBlacklistUser blacklistUser, int roomId) { var room = rooms.FirstOrDefault(item => item.Id == roomId); if (room != null) { var user = room.BlacklistUsers.FirstOrDefault(item => item.Id == blacklistUser.Id); if (user != null) { room.BlacklistUsers.Remove(user); } } }
public ChatHubBlacklistUser AddChatHubBlacklistUser(ChatHubUser targetUser) { try { ChatHubBlacklistUser ChatHubBlacklistUser = this.GetChatHubBlacklistUser(targetUser.UserId); if (ChatHubBlacklistUser == null) { ChatHubBlacklistUser = new ChatHubBlacklistUser() { ChatHubUserId = targetUser.UserId, BlacklistUserDisplayName = targetUser.DisplayName, }; db.ChatHubBlacklistUser.Add(ChatHubBlacklistUser); db.SaveChanges(); } return(ChatHubBlacklistUser); } catch { throw; } }
public override async Task Execute(CommandServicesContext context, CommandCallerContext callerContext, string[] args, ChatHubUser caller) { if (args.Length == 0) { await context.ChatHub.SendClientNotification("No arguments found.", callerContext.RoomId, callerContext.ConnectionId, caller, ChatHubMessageType.System); return; } string targetUserName = args[0]; ChatHubUser targetUser = await context.ChatHubRepository.GetUserByDisplayName(targetUserName); targetUser = targetUser == null ? await context.ChatHubRepository.GetUserByUserNameAsync(targetUserName) : targetUser; if (targetUser == null) { await context.ChatHub.SendClientNotification("No user found.", callerContext.RoomId, callerContext.ConnectionId, caller, ChatHubMessageType.System); return; } if (!targetUser.Online()) { await context.ChatHub.SendClientNotification("User not online.", callerContext.RoomId, callerContext.ConnectionId, caller, ChatHubMessageType.System); return; } if (caller.UserId == targetUser.UserId) { await context.ChatHub.SendClientNotification("Calling user can not be target user.", callerContext.RoomId, callerContext.ConnectionId, caller, ChatHubMessageType.System); return; } string msg = null; if (args.Length > 1) { msg = String.Join(" ", args.Skip(1)).Trim(); } var callerRoom = context.ChatHubRepository.GetChatHubRoom(callerContext.RoomId); if (caller.UserId != callerRoom.CreatorId) { await context.ChatHub.SendClientNotification("Blacklist user command can be executed from room creator only.", callerContext.RoomId, callerContext.ConnectionId, caller, ChatHubMessageType.System); return; } if (callerRoom.Public() || callerRoom.Protected() || callerRoom.Private()) { ChatHubBlacklistUser chatHubBlacklistUser = context.ChatHubRepository.AddChatHubBlacklistUser(targetUser); ChatHubRoomChatHubBlacklistUser room_blacklistuser = new ChatHubRoomChatHubBlacklistUser() { ChatHubRoomId = callerRoom.Id, ChatHubBlacklistUserId = chatHubBlacklistUser.Id, }; context.ChatHubRepository.AddChatHubRoomChatHubBlacklistUser(room_blacklistuser); foreach (var connection in caller.Connections.Active()) { await context.ChatHub.SendClientNotification("Command blacklist user succeeded.", callerContext.RoomId, connection.ConnectionId, caller, ChatHubMessageType.System); } } }