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);
        }