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:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user