public async Task <ResponseStatus> BlockUser(RedisUserModel requestingUser) { if (requestingUser.HasClaim(UserClaim.Admin) || HasClaim(UserClaim.Admin)) { return(ResponseFactory.createResponse(ResponseType.PERMISSION_DENIED)); } // When blocking a player we need to: // Remove players as friends if they were // Remove any pending friend requests if (await IsFriend(requestingUser)) { await RemoveFriend(requestingUser); } if (await HasFriendRequestFrom(requestingUser)) { await RemoveFriendRequestFrom(requestingUser); } if (await requestingUser.HasFriendRequestFrom(this)) { await requestingUser.RemoveFriendRequestFrom(this); } await RedisConnector.Redis.SetAddAsync($"user:{UserModel.Id}:blocks", requestingUser.UserModel.Id); return(ResponseFactory.createResponse(ResponseType.SUCCESS)); }
public async Task <List <GroupChatModel> > GetPlayerGroupChats(RedisUserModel user) { // Get all group chats List <GroupChatModel> groupChatList = new List <GroupChatModel>(); HashEntry[] groupChats = await RedisConnector.Redis.HashGetAllAsync(GameRoomChatListKey()); foreach (var groupChat in groupChats) { GroupChatModel model = new GroupChatModel(this, groupChat.Value); // Admins can see all group chats. if (user.HasClaim(UserClaim.Admin)) { groupChatList.Add(model); } else if (model.IsPlayerInGroup(user)) { groupChatList.Add(model); } } return(groupChatList); }