mirror of
https://github.com/jcwimer/wrestlingApp
synced 2026-03-25 01:14:43 +00:00
139 lines
3.0 KiB
Ruby
139 lines
3.0 KiB
Ruby
class Wrestler < ActiveRecord::Base
|
|
belongs_to :school
|
|
belongs_to :weight
|
|
has_one :tournament, through: :weight
|
|
has_many :matches, through: :weight
|
|
has_many :deductedPoints, class_name: "Teampointadjust"
|
|
attr_accessor :poolNumber, :poolAdvancePoints
|
|
|
|
before_save do
|
|
self.tournament.destroyAllMatches
|
|
end
|
|
|
|
def lastFinishedMatch
|
|
allMatches.select{|m| m.finished == 1}.sort_by{|m| m.bout_number}.last
|
|
end
|
|
|
|
def totalTeamPoints
|
|
teamPointsEarned - totalDeductedPoints
|
|
end
|
|
|
|
def teamPointsEarned
|
|
points = 0.0
|
|
points = points + (poolWins.size * 1) + (pinWins.size * 2) + (techWins.size * 1.5) + (majorWins.size * 1) + placementPoints
|
|
end
|
|
|
|
def placementPoints
|
|
Poolbracketplacementpoints.new(self).calcPoints
|
|
end
|
|
|
|
def totalDeductedPoints
|
|
points = 0
|
|
self.deductedPoints.each do |d|
|
|
points = points + d.points
|
|
end
|
|
points
|
|
end
|
|
|
|
def resultByBout(bout)
|
|
@match = allMatches.select{|m| m.bout_number == bout and m.finished == 1}
|
|
if @match.size == 0
|
|
return ""
|
|
end
|
|
if @match.first.winner_id == self.id
|
|
return "W #{@match.first.score}"
|
|
end
|
|
if @match.first.winner_id != self.id
|
|
return "L #{@match.first.score}"
|
|
end
|
|
end
|
|
|
|
def matchAgainst(opponent)
|
|
allMatches.select{|m| m.w1 == opponent.id or m.w2 == opponent.id}
|
|
end
|
|
|
|
def isWrestlingThisRound(matchRound)
|
|
if allMatches.blank?
|
|
return false
|
|
else
|
|
return true
|
|
end
|
|
end
|
|
|
|
def generatePoolNumber
|
|
@pool = self.weight.returnPoolNumber(self)
|
|
end
|
|
|
|
def boutByRound(round)
|
|
@match = allMatches.select{|m| m.round == round}.first
|
|
if @match.blank?
|
|
return "BYE"
|
|
else
|
|
return @match.bout_number
|
|
end
|
|
end
|
|
|
|
def allMatches
|
|
@matches = matches.select{|m| m.w1 == self.id or m.w2 == self.id}
|
|
return @matches
|
|
end
|
|
|
|
def poolMatches
|
|
@poolMatches = allMatches.select{|m| m.bracket_position == "Pool"}
|
|
@poolMatches.select{|m| m.poolNumber == self.generatePoolNumber}
|
|
end
|
|
|
|
def finishedMatches
|
|
allMatches.select{|m| m.finished == 1}
|
|
end
|
|
|
|
def finishedBracketMatches
|
|
finishedMatches.select{|m| m.bracket_position != "Pool"}
|
|
end
|
|
|
|
def finishedPoolMatches
|
|
finishedMatches.select{|m| m.bracket_position == "Pool"}
|
|
end
|
|
|
|
def matchesWon
|
|
allMatches.select{|m| m.winner_id == self.id}
|
|
end
|
|
|
|
def poolWins
|
|
matchesWon.select{|m| m.bracket_position == "Pool"}
|
|
end
|
|
|
|
def pinWins
|
|
matchesWon.select{|m| m.win_type == "Pin" || m.win_type == "Forfeit" || m.win_type == "Injury Default" || m.win_type == "Default" || m.win_type == "DQ"}
|
|
end
|
|
|
|
def techWins
|
|
matchesWon.select{|m| m.win_type == "Tech Fall" }
|
|
end
|
|
|
|
def majorWins
|
|
matchesWon.select{|m| m.win_type == "Major" }
|
|
end
|
|
|
|
def seasonWinPercentage
|
|
@win = self.season_win.to_f
|
|
@loss = self.season_loss.to_f
|
|
if @win > 0 and @loss != nil
|
|
@matchTotal = @win + @loss
|
|
@percentageDec = @win / @matchTotal
|
|
@percentage = @percentageDec * 100
|
|
return @percentage.to_i
|
|
elsif self.season_win == 0
|
|
return 0
|
|
elsif self.season_win == nil or self.season_loss == nil
|
|
return 0
|
|
end
|
|
end
|
|
|
|
def advanceInBracket
|
|
@advance = Pooladvance.new
|
|
@advance.wrestler = self
|
|
@advance.advanceWrestler
|
|
end
|
|
end
|