class Sorare::Rewards::Cards::PickForLeague

PickForLeague picks the rewards for a given league Receive a game week object And a league allocations

{
  'D1' => {
    'rare' => { 'tier_0' => 1, 'tier_1' => 2 }
  }
}

Public Instance Methods

add_pickers!() click to toggle source
# File lib/sorare/rewards/interactors/cards/pick_for_league.rb, line 34
def add_pickers!
  league.supply.keys.index_with do |rarity|
    pickers[rarity] = {}
    qualify_and_add!(rarity)
  end
end
call() click to toggle source
# File lib/sorare/rewards/interactors/cards/pick_for_league.rb, line 23
def call
  context.pickers = {}
  add_pickers!

  context.cards_picked = allocations.keys.index_with do |division|
    PickForDivision.call!(
      **context.to_h, pickers: pickers, allocations: allocations[division]
    ).cards_picked
  end
end
initialize_tier_picker(players, rarity, tier) click to toggle source
# File lib/sorare/rewards/interactors/cards/pick_for_league.rb, line 50
def initialize_tier_picker(players, rarity, tier)
  pickers[rarity][tier] = Picker.new(game_week.public_seed, salt)

  players.each do |slug, _|
    pickers[rarity][tier].add_player(slug, player_supply(rarity, slug))
  end
end
player_supply(rarity, slug) click to toggle source
# File lib/sorare/rewards/interactors/cards/pick_for_league.rb, line 58
def player_supply(rarity, slug)
  game_week.player(slug).overall_supply(league, rarity)
end
qualify_and_add!(rarity) click to toggle source
# File lib/sorare/rewards/interactors/cards/pick_for_league.rb, line 41
def qualify_and_add!(rarity)
  sorted_supply = league.supply[rarity]
  qualified_players = Tiers::QualifyPlayers.call!(sorted_supply: sorted_supply).players
  qualified_players.each_with_index.map do |players, tier|
    transformed_tier = Sorare::Rewards.configuration.transform_tier.call(tier)
    initialize_tier_picker(players, rarity, transformed_tier)
  end
end