class Match < ActiveRecord::Base belongs_to :tournament, touch: true belongs_to :weight, touch: true belongs_to :mat, touch: true has_many :wrestlers, :through => :weight after_update :after_finished_actions, :if => :finished_changed? after_update :after_finished_actions, :if => :winner_id_changed? def after_finished_actions if self.finished == 1 && self.winner_id != nil if self.w1 && self.w2 wrestler1.touch wrestler2.touch end if self.mat self.mat.assignNextMatch end advance_wrestlers calcSchoolPoints end end WIN_TYPES = ["Decision", "Major", "Tech Fall", "Pin", "Forfeit", "Injury Default", "Default", "DQ"] def calcSchoolPoints if self.w1 && self.w2 wrestler1.school.calcScore wrestler2.school.calcScore end end def mat_assigned if self.mat "Mat #{self.mat.name}" else "" end end def pinTime if self.win_type == "Pin" time = self.score.delete("") minInSeconds = time.partition(':').first.to_i * 60 sec = time.partition(':').last.to_i return minInSeconds + sec else nil end end def advance_wrestlers if self.w1 && self.w2 AdvanceWrestler.new(wrestler1).advance AdvanceWrestler.new(wrestler2).advance end end def bracketScore if self.finished != 1 return "" end if self.finished == 1 if self.win_type == "Default" return "Def" elsif self.win_type == "Injury Default" return "Inj" elsif self.win_type == "DQ" return "DQ" elsif self.win_type == "Forfeit" return "For" else return "(#{self.score})" end end end def wrestler1 wrestlers.select{|w| w.id == self.w1}.first end def wrestler2 wrestlers.select{|w| w.id == self.w2}.first end def w1_name if self.w1 != nil wrestler1.name else self.loser1_name end end def w2_name if self.w2 != nil wrestler2.name else self.loser2_name end end def winnerName if self.finished != 1 return "" end if self.winner_id == self.w1 return self.w1_name end if self.winner_id == self.w2 return self.w2_name end end def weight_max self.weight.max end def replaceLoserNameWithWrestler(w,loserName) if self.loser1_name == loserName self.w1 = w.id self.save end if self.loser2_name == loserName self.w2 = w.id self.save end end def poolNumber if self.w1? wrestler1.pool end end def list_w2_stats "#{w2_name}: #{w2_stat}" end def list_w1_stats "#{w1_name}: #{w1_stat}" end end