1
0
mirror of https://github.com/jcwimer/wrestlingApp synced 2026-04-21 06:22:00 +00:00

Fixed bug in pooladvance and refactored

This commit is contained in:
2015-12-03 20:27:38 +00:00
parent b334c1fad3
commit 5898393fac
3 changed files with 61 additions and 47 deletions

View File

@@ -5,7 +5,7 @@ class Match < ActiveRecord::Base
has_many :wrestlers, :through => :weight has_many :wrestlers, :through => :weight
after_save do after_save do
if self.finished == 1 if self.finished == 1 && self.winner_id != nil
advance_wrestlers advance_wrestlers
calcSchoolPoints calcSchoolPoints
end end
@@ -14,7 +14,7 @@ class Match < ActiveRecord::Base
WIN_TYPES = ["Decision", "Major", "Tech Fall", "Pin", "Forfeit", "Injury Default", "Default", "DQ"] WIN_TYPES = ["Decision", "Major", "Tech Fall", "Pin", "Forfeit", "Injury Default", "Default", "DQ"]
def calcSchoolPoints def calcSchoolPoints
if self.w1? && self.w2? if self.w1 && self.w2
wrestler1.school.calcScore wrestler1.school.calcScore
wrestler2.school.calcScore wrestler2.school.calcScore
end end
@@ -29,7 +29,7 @@ class Match < ActiveRecord::Base
end end
def advance_wrestlers def advance_wrestlers
if self.w1? && self.w2? if self.w1 && self.w2
@w1 = wrestler1 @w1 = wrestler1
@w2 = wrestler2 @w2 = wrestler2
@w1.advanceInBracket @w1.advanceInBracket
@@ -56,7 +56,7 @@ class Match < ActiveRecord::Base
end end
def w1_name def w1_name
if self.w1 if self.w1 != nil
wrestler1.name wrestler1.name
else else
self.loser1_name self.loser1_name
@@ -64,7 +64,7 @@ class Match < ActiveRecord::Base
end end
def w2_name def w2_name
if self.w2 if self.w2 != nil
wrestler2.name wrestler2.name
else else
self.loser2_name self.loser2_name

View File

@@ -1,22 +1,24 @@
class Pooladvance class Pooladvance
attr_accessor :wrestler def initialize(wrestler)
@wrestler = wrestler
end
def advanceWrestler def advanceWrestler
if self.wrestler.weight.allPoolMatchesFinished(self.wrestler.generatePoolNumber) && self.wrestler.finishedBracketMatches.size == 0 if @wrestler.weight.allPoolMatchesFinished(@wrestler.generatePoolNumber) && @wrestler.finishedBracketMatches.size == 0
poolToBracketAdvancment poolToBracketAdvancment
end end
if self.wrestler.finishedBracketMatches.size != 0 if @wrestler.finishedBracketMatches.size > 0
bracketAdvancment bracketAdvancment
end end
end end
def poolToBracketAdvancment def poolToBracketAdvancment
pool = self.wrestler.generatePoolNumber pool = @wrestler.generatePoolNumber
if self.wrestler.weight.wrestlers.size > 6 if @wrestler.weight.wrestlers.size > 6
poolOrder = self.wrestler.weight.poolOrder(pool) poolOrder = @wrestler.weight.poolOrder(pool)
#Take pool order and move winner and runner up to correct match based on w1_name and w2_name #Take pool order and move winner and runner up to correct match based on w1_name and w2_name
matches = self.wrestler.weight.matches matches = @wrestler.weight.matches
winnerMatch = matches.select{|m| m.loser1_name == "Winner Pool #{pool}" || m.loser2_name == "Winner Pool #{pool}"}.first winnerMatch = matches.select{|m| m.loser1_name == "Winner Pool #{pool}" || m.loser2_name == "Winner Pool #{pool}"}.first
runnerUpMatch = matches.select{|m| m.loser1_name == "Runner Up Pool #{pool}" || m.loser2_name == "Runner Up Pool #{pool}"}.first runnerUpMatch = matches.select{|m| m.loser1_name == "Runner Up Pool #{pool}" || m.loser2_name == "Runner Up Pool #{pool}"}.first
winner = poolOrder.first winner = poolOrder.first
@@ -27,49 +29,46 @@ class Pooladvance
end end
def bracketAdvancment def bracketAdvancment
#Move to next correct spot in bracket if @wrestler.winnerOfLastMatch?
matches = self.wrestler.finishedMatches.sort_by{|m| m.round}.reverse winnerAdvance
last_match = matches.first
if last_match.winner_id == self.wrestler.id
winnerAdvance(last_match)
end end
if last_match.winner_id != self.wrestler.id if !@wrestler.winnerOfLastMatch?
loserAdvance(last_match) loserAdvance
end end
end end
def winnerAdvance(last_match) def winnerAdvance
#Quarter to Semis if @wrestler.lastMatch.bracket_position == "Quarter"
#Semis to 1/2 new_match = Match.where("bracket_position = ? AND bracket_position_number = ? AND weight_id = ?","Semis",@wrestler.nextMatchPositionNumber.ceil,@wrestler.weight_id).first
#Conso Semis to 5/6 updateNewMatch(new_match)
pos = last_match.bracket_position_number
new_pos = (pos/2.0)
if last_match.bracket_position == "Quarter"
new_match = Match.where("bracket_position = ? AND bracket_position_number = ?","Semis",new_pos.ceil).first
end end
if last_match.bracket_position == "Semis" if @wrestler.lastMatch.bracket_position == "Semis"
new_match = Match.where("bracket_position = ? AND bracket_position_number = ?","1/2",new_pos.ceil).first new_match = Match.where("bracket_position = ? AND bracket_position_number = ? AND weight_id = ?","1/2",@wrestler.nextMatchPositionNumber.ceil,@wrestler.weight_id).first
updateNewMatch(new_match)
end end
if last_match.bracket_position == "Conso Semis" if @wrestler.lastMatch.bracket_position == "Conso Semis"
new_match = Match.where("bracket_position = ? AND bracket_position_number = ?","5/6",new_pos.ceil).first new_match = Match.where("bracket_position = ? AND bracket_position_number = ? AND weight_id = ?","5/6",@wrestler.nextMatchPositionNumber.ceil,@wrestler.weight_id).first
updateNewMatch(new_match)
end end
if new_match
if new_pos == new_pos.ceil end
new_match.w2 = self.wrestler.id
new_match.save def updateNewMatch(match)
if @wrestler.nextMatchPositionNumber == @wrestler.nextMatchPositionNumber.ceil
match.w2 = @wrestler.id
match.update
end end
if new_pos != new_pos.ceil if @wrestler.nextMatchPositionNumber != @wrestler.nextMatchPositionNumber.ceil
new_match.w1 = self.wrestler.id match.w1 = @wrestler.id
new_match.save match.update
end end
end
end end
def loserAdvance(last_match) def loserAdvance
bout = last_match.bout_number bout = @wrestler.lastMatch.bout_number
next_match = Match.where("loser1_name = ? or loser2_name = ?","Loser of #{bout}","Loser of #{bout}") next_match = Match.where("loser1_name = ? OR loser2_name = ? AND weight_id = ?","Loser of #{bout}","Loser of #{bout}",@wrestler.weight_id)
if next_match.size > 0 if next_match.size > 0
next_match.first.replaceLoserNameWithWrestler(self.wrestler,"Loser of #{bout}") next_match.first.replaceLoserNameWithWrestler(@wrestler,"Loser of #{bout}")
end end
end end
end end

View File

@@ -39,6 +39,23 @@ class Wrestler < ActiveRecord::Base
unfinishedMatches.first unfinishedMatches.first
end end
def nextMatchPositionNumber
pos = lastMatch.bracket_position_number
return (pos/2.0)
end
def lastMatch
finishedMatches.sort_by{|m| m.round}.reverse.first
end
def winnerOfLastMatch?
if lastMatch.winner_id == self.id
return true
else
return false
end
end
def nextMatchBoutNumber def nextMatchBoutNumber
if nextMatch if nextMatch
nextMatch.bout_number nextMatch.bout_number
@@ -155,8 +172,6 @@ class Wrestler < ActiveRecord::Base
end end
def advanceInBracket def advanceInBracket
@advance = Pooladvance.new Pooladvance.new(self).advanceWrestler
@advance.wrestler = self
@advance.advanceWrestler
end end
end end