public async Task <Deck> UpdateDeck(Guid deckId, Guid cardId)
    {
        int j = 0;

        FilterDefinition <Deck> deckFilter = Builders <Deck> .Filter.Eq(deck => deck.Id, deckId);

        FilterDefinition <Player> playerFilter = Builders <Player> .Filter.ElemMatch(player => player.DecksOwned, deckFilter);

        Player player = await _playerCollection.Find(playerFilter).FirstAsync();

        if (player == null)
        {
            throw new NotFoundException();
        }

        var  cardCreation = new CardMethods();
        Card newcard      = cardCreation.AddANewCard();

        for (int i = 0; i < player.DecksOwned.Count; i++)
        {
            foreach (var deck in player.DecksOwned)
            {
                if (deck.Id == deckId)
                {
                    foreach (var card in deck.Cards_InDeck)
                    {
                        if (card.Id == cardId)
                        {
                            player.DecksOwned[i].Cards_InDeck.RemoveAt(j);
                            player.DecksOwned[i].Cards_InDeck.Add(newcard);

                            player = await _playerCollection.FindOneAndReplaceAsync(playerFilter, player);

                            return(player.DecksOwned[i]);
                        }
                        j++;
                    }
                }
            }
        }
        return(null);
    }