Class: Sorare::Rewards::Tiers::QualifyPlayers
- Inherits:
-
Object
- Object
- Sorare::Rewards::Tiers::QualifyPlayers
- Includes:
- Interactor
- Defined in:
- lib/sorare/rewards/interactors/tiers/qualify_players.rb
Overview
QualifyPlayers qualifies a list of sorted supply in tiers based on its rank or a provided tier Returns an array of tiers (array) containing the list of slugs for that tier
Instance Method Summary collapse
- #by_rank ⇒ Object
- #call ⇒ Object
- #nb_of_tiers ⇒ Object
-
#qualified_players_by_rank ⇒ Object
Use the rank in the array.
-
#qualified_players_by_tier ⇒ Object
Use the tier specified within the data.
- #tier_depth ⇒ Object
- #tier_index(tier) ⇒ Object
- #tier_size(tier) ⇒ Object
Instance Method Details
#by_rank ⇒ Object
62 63 64 |
# File 'lib/sorare/rewards/interactors/tiers/qualify_players.rb', line 62 def by_rank @by_rank ||= sorted_supply.values.first&.dig('tier').nil? end |
#call ⇒ Object
16 17 18 |
# File 'lib/sorare/rewards/interactors/tiers/qualify_players.rb', line 16 def call context.players = by_rank ? qualified_players_by_rank : qualified_players_by_tier end |
#nb_of_tiers ⇒ Object
40 41 42 43 44 45 46 47 |
# File 'lib/sorare/rewards/interactors/tiers/qualify_players.rb', line 40 def nb_of_tiers @nb_of_tiers ||= begin default = Sorare::Rewards.configuration.tiers default -= 1 while ((default**2) - 1) > sorted_supply.keys.length default end end |
#qualified_players_by_rank ⇒ Object
Use the rank in the array
30 31 32 33 34 |
# File 'lib/sorare/rewards/interactors/tiers/qualify_players.rb', line 30 def qualified_players_by_rank nb_of_tiers.times.map do |tier| sorted_supply.keys[tier_index(tier)..tier_index(tier + 1) - 1] end end |
#qualified_players_by_tier ⇒ Object
Use the tier specified within the data
21 22 23 24 25 26 27 |
# File 'lib/sorare/rewards/interactors/tiers/qualify_players.rb', line 21 def qualified_players_by_tier Sorare::Rewards.configuration.tiers.times.map do |tier| sorted_supply.keys.filter do |slug| sorted_supply.dig(slug, 'tier') == tier end end end |
#tier_depth ⇒ Object
36 37 38 |
# File 'lib/sorare/rewards/interactors/tiers/qualify_players.rb', line 36 def tier_depth @tier_depth ||= sorted_supply.keys.length / ((nb_of_tiers**2) - 1) end |
#tier_index(tier) ⇒ Object
49 50 51 52 53 54 |
# File 'lib/sorare/rewards/interactors/tiers/qualify_players.rb', line 49 def tier_index(tier) return 0 unless tier.positive? return sorted_supply.keys.length if tier == nb_of_tiers tier_index(tier - 1) + (tier_depth * tier_size(tier - 1)) end |
#tier_size(tier) ⇒ Object
56 57 58 59 60 |
# File 'lib/sorare/rewards/interactors/tiers/qualify_players.rb', line 56 def tier_size(tier) return 1 unless tier.positive? tier_size(tier - 1) * 2 end |