Class: TournamentParticipation

Inherits:
Sequel::Model
  • Object
show all
Defined in:
lib/opensprints-core/tournament_participation.rb

Instance Method Summary collapse

Instance Method Details

#best_timeObject



5
6
7
8
9
# File 'lib/opensprints-core/tournament_participation.rb', line 5

def best_time
  best = self.db[:race_participations].filter(:racer_id => racer.id).exclude(:finish_time => nil).join(:races, :tournament_id => tournament.id).filter(:raced => true).order(:finish_time).select(:finish_time).first

  best[:finish_time] if best
end

#eliminateObject



23
24
25
# File 'lib/opensprints-core/tournament_participation.rb', line 23

def eliminate
  self.update(:eliminated => true)
end

#lossesObject



16
17
18
19
20
21
# File 'lib/opensprints-core/tournament_participation.rb', line 16

def losses
  RaceParticipation.filter(:racer_id => racer.id).join(:races, :tournament_id => tournament.id).group(:id).all.select do |rp|
    winner = rp.race ? rp.race.winner : nil
    winner && (winner.racer.pk != self.racer.pk)
  end.length
end

#race_participationsObject



27
28
29
# File 'lib/opensprints-core/tournament_participation.rb', line 27

def race_participations
  RaceParticipation.filter(:racer_id => racer.id).join(:races, :tournament_id => tournament.id).group(:id).all
end

#rankObject



11
12
13
14
# File 'lib/opensprints-core/tournament_participation.rb', line 11

def rank
  standings = self.tournament.tournament_participations.sort_by{|tp|tp.best_time||Infinity}
  standings.index(self)+1
end