I thought about how to create a Battle Pass like in the game Brawl Stars. For example, the Battle Pass contains 70 levels. Each level contains 2 rewards. One is free, the other is for those who bought the Battle Pass.
1) We create a bundle for each reward. The bundle contains an item or currency. 70 levels * 2 rewards = 140 bundles. Mark them with the tag "BattlePassSeason1".
2) Added a currency that is used to level up the Battle Pass - "Tokens" for example or "TokensSeason1". Tokens are earned for completing quests. Each new season starts with 0 tokens.
3) When the player opens the reward, we make three checks:
a) does the player own the Battle Pass?
b) does the player have enough tokens?
c) has the player already received this reward?
But how to store a list of already received rewards?
I'm thinking about an array in player Objects. Array with 140 elements: [1,1,0,1,0,0,0.....] (1 - reward is open). And every new season of the Battle Pass reset the values in this array. Is this a bad solution?