public async Task AddWhitelistUser(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 whitelist users."); } ChatHubWhitelistUser whitelistUser = this.chatHubRepository.AddChatHubWhitelistUser(targetUser); ChatHubRoomChatHubWhitelistUser room_whitelistuser = new ChatHubRoomChatHubWhitelistUser() { ChatHubRoomId = roomId, ChatHubWhitelistUserId = whitelistUser.Id, }; this.chatHubRepository.AddChatHubRoomChatHubWhitelistUser(room_whitelistuser); var targetWhitelistUserClientModel = this.chatHubService.CreateChatHubWhitelistUserClientModel(whitelistUser); await Clients.Group(roomId.ToString()).SendAsync("AddWhitelistUser", targetWhitelistUserClientModel, roomId); } } catch (Exception ex) { throw new HubException(ex.Message); } }
public static void AddWhitelistUser(this List <ChatHubRoom> rooms, ChatHubWhitelistUser whitelistUser, int roomId) { var room = rooms.FirstOrDefault(item => item.Id == roomId); if (room != null && !room.WhitelistUsers.Any(item => item.Id == whitelistUser.Id)) { room.WhitelistUsers.Add(whitelistUser); } }
public ChatHubWhitelistUser CreateChatHubWhitelistUserClientModel(ChatHubWhitelistUser whitelistUser) { return(new ChatHubWhitelistUser() { Id = whitelistUser.Id, WhitelistUserDisplayName = whitelistUser.WhitelistUserDisplayName, ChatHubUserId = whitelistUser.ChatHubUserId, }); }
public void DeleteChatHubWhitelistUser(int WhitelistUserId) { try { ChatHubWhitelistUser ChatHubWhitelistUser = db.ChatHubWhitelistUser.Where(item => item.Id == WhitelistUserId).FirstOrDefault(); db.ChatHubWhitelistUser.Remove(ChatHubWhitelistUser); db.SaveChanges(); } catch { throw; } }
public static void RemoveWhitelistUser(this List <ChatHubRoom> rooms, ChatHubWhitelistUser whitelistUser, int roomId) { var room = rooms.FirstOrDefault(item => item.Id == roomId); if (room != null) { var user = room.WhitelistUsers.FirstOrDefault(item => item.Id == whitelistUser.Id); if (user != null) { room.WhitelistUsers.Remove(user); } } }
public ChatHubWhitelistUser AddChatHubWhitelistUser(ChatHubUser targetUser) { try { ChatHubWhitelistUser ChatHubWhitelistUser = this.GetChatHubWhitelistUser(targetUser.UserId); if (ChatHubWhitelistUser == null) { ChatHubWhitelistUser = new ChatHubWhitelistUser() { ChatHubUserId = targetUser.UserId, WhitelistUserDisplayName = targetUser.DisplayName, }; db.ChatHubWhitelistUser.Add(ChatHubWhitelistUser); db.SaveChanges(); } return(ChatHubWhitelistUser); } 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("Whitelist user command can be executed from room creator only.", callerContext.RoomId, callerContext.ConnectionId, caller, ChatHubMessageType.System); return; } if (callerRoom.Public() || callerRoom.Protected() || callerRoom.Private()) { ChatHubWhitelistUser chatHubWhitelistUser = context.ChatHubRepository.AddChatHubWhitelistUser(targetUser); ChatHubRoomChatHubWhitelistUser room_whitelistuser = new ChatHubRoomChatHubWhitelistUser() { ChatHubRoomId = callerRoom.Id, ChatHubWhitelistUserId = chatHubWhitelistUser.Id, }; context.ChatHubRepository.AddChatHubRoomChatHubWhitelistUser(room_whitelistuser); foreach (var connection in caller.Connections.Active()) { await context.ChatHub.SendClientNotification("Command whitelist user succeeded.", callerContext.RoomId, connection.ConnectionId, caller, ChatHubMessageType.System); } } }