mirror of
https://github.com/jcwimer/wrestlingApp
synced 2026-03-25 01:14:43 +00:00
Moved none database classes out of model folder. Still need to separate classes that are doing too much for bracket_advancement, for placement points, and for swapping wrestlers in pool/bracket.
This commit is contained in:
@@ -1,75 +0,0 @@
|
||||
class PoolAdvance
|
||||
|
||||
def initialize(wrestler,previousMatch)
|
||||
@wrestler = wrestler
|
||||
@previousMatch = previousMatch
|
||||
end
|
||||
|
||||
def advanceWrestler
|
||||
if @wrestler.weight.allPoolMatchesFinished(@wrestler.generatePoolNumber) && @wrestler.finishedBracketMatches.size == 0
|
||||
poolToBracketAdvancment
|
||||
end
|
||||
if @wrestler.finishedBracketMatches.size > 0
|
||||
bracketAdvancment
|
||||
end
|
||||
end
|
||||
|
||||
def poolToBracketAdvancment
|
||||
pool = @wrestler.generatePoolNumber
|
||||
if @wrestler.weight.wrestlers.size > 6
|
||||
poolOrder = @wrestler.weight.poolOrder(pool)
|
||||
#Take pool order and move winner and runner up to correct match based on w1_name and w2_name
|
||||
matches = @wrestler.weight.matches
|
||||
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
|
||||
winner = poolOrder.first
|
||||
runnerUp = poolOrder.second
|
||||
runnerUpMatch.replaceLoserNameWithWrestler(runnerUp,"Runner Up Pool #{pool}")
|
||||
winnerMatch.replaceLoserNameWithWrestler(winner,"Winner Pool #{pool}")
|
||||
end
|
||||
end
|
||||
|
||||
def bracketAdvancment
|
||||
if @previousMatch.winner_id == @wrestler.id
|
||||
winnerAdvance
|
||||
end
|
||||
if @previousMatch.winner_id != @wrestler.id
|
||||
loserAdvance
|
||||
end
|
||||
end
|
||||
|
||||
def winnerAdvance
|
||||
if @wrestler.lastMatch.bracket_position == "Quarter"
|
||||
new_match = Match.where("bracket_position = ? AND bracket_position_number = ? AND weight_id = ?","Semis",@wrestler.nextMatchPositionNumber.ceil,@wrestler.weight_id).first
|
||||
updateNewMatch(new_match)
|
||||
end
|
||||
if @wrestler.lastMatch.bracket_position == "Semis"
|
||||
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
|
||||
if @wrestler.lastMatch.bracket_position == "Conso Semis"
|
||||
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
|
||||
|
||||
def updateNewMatch(match)
|
||||
if @wrestler.nextMatchPositionNumber == @wrestler.nextMatchPositionNumber.ceil
|
||||
match.w2 = @wrestler.id
|
||||
match.save
|
||||
end
|
||||
if @wrestler.nextMatchPositionNumber != @wrestler.nextMatchPositionNumber.ceil
|
||||
match.w1 = @wrestler.id
|
||||
match.save
|
||||
end
|
||||
end
|
||||
|
||||
def loserAdvance
|
||||
bout = @wrestler.lastMatch.bout_number
|
||||
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
|
||||
next_match.first.replaceLoserNameWithWrestler(@wrestler,"Loser of #{bout}")
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,142 +0,0 @@
|
||||
class PoolBracketPlacementPoints
|
||||
def initialize(wrestler)
|
||||
@wrestler = wrestler
|
||||
@bracket = wrestler.weight.pool_bracket_type
|
||||
end
|
||||
|
||||
def calcPoints
|
||||
@points = 0
|
||||
whilePointsAreZero { @points = finalMatchPoints }
|
||||
if @bracket == "twoPoolsToSemi"
|
||||
whilePointsAreZero { @points = twoPoolsToSemi }
|
||||
end
|
||||
if @bracket == "fourPoolsToQuarter"
|
||||
whilePointsAreZero { @points = fourPoolsToQuarter }
|
||||
end
|
||||
if @bracket == "fourPoolsToSemi"
|
||||
whilePointsAreZero { @points = fourPoolsToSemi }
|
||||
end
|
||||
if @wrestler.weight.wrestlers.size <= 6 && @wrestler.weight.allPoolMatchesFinished(1)
|
||||
whilePointsAreZero { @points = onePool }
|
||||
end
|
||||
return @points
|
||||
end
|
||||
|
||||
def whilePointsAreZero
|
||||
if @points == 0
|
||||
yield
|
||||
end
|
||||
end
|
||||
|
||||
def bracket_position_size(bracket_position_name)
|
||||
@wrestler.allMatches.select{|m| m.bracket_position == bracket_position_name}.size
|
||||
end
|
||||
|
||||
def won_bracket_position_size(bracket_position_name)
|
||||
@wrestler.matchesWon.select{|m| m.bracket_position == bracket_position_name}.size
|
||||
end
|
||||
|
||||
def fourPoolsToQuarter
|
||||
if bracket_position_size("Semis") > 0
|
||||
return fourthPlace
|
||||
end
|
||||
if bracket_position_size("Quarter") > 0
|
||||
return eighthPlace
|
||||
end
|
||||
return 0
|
||||
end
|
||||
|
||||
def twoPoolsToSemi
|
||||
if bracket_position_size("Semis") > 0
|
||||
return fourthPlace
|
||||
end
|
||||
if bracket_position_size("Conso Semis") > 0
|
||||
return eighthPlace
|
||||
end
|
||||
return 0
|
||||
end
|
||||
|
||||
def fourPoolsToSemi
|
||||
if bracket_position_size("Semis") > 0
|
||||
return fourthPlace
|
||||
end
|
||||
if bracket_position_size("Conso Semis") > 0
|
||||
return eighthPlace
|
||||
end
|
||||
return 0
|
||||
end
|
||||
|
||||
def onePool
|
||||
poolOrder = @wrestler.weight.poolOrder(1)
|
||||
if @wrestler == poolOrder.first
|
||||
return firstPlace
|
||||
elsif @wrestler == poolOrder.second
|
||||
return secondPlace
|
||||
elsif @wrestler == poolOrder.third
|
||||
return thirdPlace
|
||||
elsif @wrestler == poolOrder.fourth
|
||||
return fourthPlace
|
||||
end
|
||||
return 0
|
||||
end
|
||||
|
||||
def finalMatchPoints
|
||||
if won_bracket_position_size("1/2") > 0
|
||||
return firstPlace
|
||||
end
|
||||
if won_bracket_position_size("3/4") > 0
|
||||
return thirdPlace
|
||||
end
|
||||
if won_bracket_position_size("5/6") > 0
|
||||
return fifthPlace
|
||||
end
|
||||
if won_bracket_position_size("7/8") > 0
|
||||
return seventhPlace
|
||||
end
|
||||
if bracket_position_size("1/2") > 0
|
||||
return secondPlace
|
||||
end
|
||||
if bracket_position_size("3/4") > 0
|
||||
return fourthPlace
|
||||
end
|
||||
if bracket_position_size("5/6") > 0
|
||||
return sixthPlace
|
||||
end
|
||||
if bracket_position_size("7/8") > 0
|
||||
return eighthPlace
|
||||
end
|
||||
return 0
|
||||
end
|
||||
|
||||
def firstPlace
|
||||
16
|
||||
end
|
||||
|
||||
def secondPlace
|
||||
12
|
||||
end
|
||||
|
||||
def thirdPlace
|
||||
10
|
||||
end
|
||||
|
||||
def fourthPlace
|
||||
9
|
||||
end
|
||||
|
||||
def fifthPlace
|
||||
7
|
||||
end
|
||||
|
||||
def sixthPlace
|
||||
6
|
||||
end
|
||||
|
||||
def seventhPlace
|
||||
4
|
||||
end
|
||||
|
||||
def eighthPlace
|
||||
3
|
||||
end
|
||||
end
|
||||
@@ -1,192 +0,0 @@
|
||||
class PoolOrder
|
||||
def initialize(wrestlers)
|
||||
@wrestlers = wrestlers
|
||||
end
|
||||
|
||||
def getPoolOrder
|
||||
setOriginalPoints
|
||||
while checkForTieBreakers == true
|
||||
breakTie
|
||||
end
|
||||
@wrestlers.sort_by{|w| w.poolAdvancePoints}.reverse!
|
||||
end
|
||||
|
||||
def setOriginalPoints
|
||||
@wrestlers.each do |w|
|
||||
w.poolAdvancePoints = w.poolWins.size
|
||||
end
|
||||
end
|
||||
|
||||
def checkForTieBreakers
|
||||
if wrestlersWithSamePoints.size > 1
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
def wrestlersWithSamePoints
|
||||
@wrestlers.each do |w|
|
||||
wrestlersWithSamePoints = @wrestlers.select{|wr| wr.poolAdvancePoints == w.poolAdvancePoints}
|
||||
if wrestlersWithSamePoints.size > 0
|
||||
return wrestlersWithSamePoints
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize)
|
||||
if wrestlersWithSamePoints.size == originalTieSize
|
||||
yield
|
||||
end
|
||||
end
|
||||
|
||||
def breakTie
|
||||
originalTieSize = wrestlersWithSamePoints.size
|
||||
ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize) { deductedPoints }
|
||||
if originalTieSize == 2
|
||||
ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize) { headToHead }
|
||||
end
|
||||
ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize) { teamPoints }
|
||||
ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize) { mostFalls }
|
||||
ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize) { mostTechs }
|
||||
ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize) { mostMajors }
|
||||
ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize) { mostDecisionPointsScored }
|
||||
ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize) { fastestPin }
|
||||
ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize) { coinFlip }
|
||||
end
|
||||
|
||||
|
||||
def headToHead
|
||||
wrestlersWithSamePoints.each do |wr|
|
||||
otherWrestler = wrestlersWithSamePoints.select{|w| w.id != wr.id}.first
|
||||
if wr.matchAgainst(otherWrestler).first.winner_id == wr.id
|
||||
addPointsToWrestlersAhead(wr)
|
||||
addPoints(wr)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def addPoints(wrestler)
|
||||
wrestler.poolAdvancePoints = wrestler.poolAdvancePoints + 1
|
||||
end
|
||||
|
||||
def addPointsToWrestlersAhead(wrestler)
|
||||
wrestlersAhead = @wrestlers.select{|w| w.poolAdvancePoints > wrestler.poolAdvancePoints}
|
||||
wrestlersAhead.each do |wr|
|
||||
wr.poolAdvancePoints = wr.poolAdvancePoints + 1
|
||||
end
|
||||
end
|
||||
|
||||
def deductedPoints
|
||||
pointsArray = []
|
||||
wrestlersWithSamePoints.each do |w|
|
||||
pointsArray << w.totalDeductedPoints
|
||||
end
|
||||
leastPoints = pointsArray.min
|
||||
wrestlersWithLeastDeductedPoints = wrestlersWithSamePoints.select{|w| w.totalDeductedPoints == leastPoints}
|
||||
addPointsToWrestlersAhead(wrestlersWithLeastDeductedPoints.first)
|
||||
wrestlersWithLeastDeductedPoints.each do |wr|
|
||||
addPoints(wr)
|
||||
end
|
||||
end
|
||||
|
||||
def mostDecisionPointsScored
|
||||
pointsArray = []
|
||||
wrestlersWithSamePoints.each do |w|
|
||||
pointsArray << w.decisionPointsScored
|
||||
end
|
||||
mostPoints = pointsArray.max
|
||||
wrestlersWithMostPoints = wrestlersWithSamePoints.select{|w| w.decisionPointsScored == mostPoints}
|
||||
addPointsToWrestlersAhead(wrestlersWithMostPoints.first)
|
||||
wrestlersWithMostPoints.each do |wr|
|
||||
addPoints(wr)
|
||||
end
|
||||
secondPoints = pointsArray.sort[-2]
|
||||
wrestlersWithSecondMostPoints = wrestlersWithSamePoints.select{|w| w.decisionPointsScored == secondPoints}
|
||||
addPointsToWrestlersAhead(wrestlersWithSecondMostPoints.first)
|
||||
wrestlersWithSecondMostPoints.each do |wr|
|
||||
addPoints(wr)
|
||||
end
|
||||
end
|
||||
|
||||
def fastestPin
|
||||
wrestlersWithSamePointsWithPins = []
|
||||
wrestlersWithSamePoints.each do |wr|
|
||||
if wr.pinWins.size > 0
|
||||
wrestlersWithSamePointsWithPins << wr
|
||||
end
|
||||
end
|
||||
if wrestlersWithSamePointsWithPins.size > 0
|
||||
fastest = wrestlersWithSamePointsWithPins.sort_by{|w| w.fastestPin.pinTime}.first.fastestPin
|
||||
secondFastest = wrestlersWithSamePointsWithPins.sort_by{|w| w.fastestPin.pinTime}.second.fastestPin
|
||||
wrestlersWithFastestPin = wrestlersWithSamePointsWithPins.select{|w| w.fastestPin.pinTime == fastest.pinTime}
|
||||
addPointsToWrestlersAhead(wrestlersWithFastestPin.first)
|
||||
wrestlersWithFastestPin.each do |wr|
|
||||
addPoints(wr)
|
||||
end
|
||||
|
||||
wrestlersWithSecondFastestPin = wrestlersWithSamePointsWithPins.select{|w| w.fastestPin.pinTime == secondFastest.pinTime}
|
||||
addPointsToWrestlersAhead(wrestlersWithSecondFastestPin.first)
|
||||
wrestlersWithSecondFastestPin.each do |wr|
|
||||
addPoints(wr)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def teamPoints
|
||||
pointsArray = []
|
||||
wrestlersWithSamePoints.each do |w|
|
||||
pointsArray << w.teamPointsEarned
|
||||
end
|
||||
mostPoints = pointsArray.max
|
||||
wrestlersWithLeastDeductedPoints = wrestlersWithSamePoints.select{|w| w.teamPointsEarned == mostPoints}
|
||||
addPointsToWrestlersAhead(wrestlersWithLeastDeductedPoints.first)
|
||||
wrestlersWithLeastDeductedPoints.each do |wr|
|
||||
addPoints(wr)
|
||||
end
|
||||
end
|
||||
|
||||
def mostFalls
|
||||
pointsArray = []
|
||||
wrestlersWithSamePoints.each do |w|
|
||||
pointsArray << w.pinWins.size
|
||||
end
|
||||
mostPoints = pointsArray.max
|
||||
wrestlersWithLeastDeductedPoints = wrestlersWithSamePoints.select{|w| w.pinWins.size == mostPoints}
|
||||
addPointsToWrestlersAhead(wrestlersWithLeastDeductedPoints.first)
|
||||
wrestlersWithLeastDeductedPoints.each do |wr|
|
||||
addPoints(wr)
|
||||
end
|
||||
end
|
||||
|
||||
def mostTechs
|
||||
pointsArray = []
|
||||
wrestlersWithSamePoints.each do |w|
|
||||
pointsArray << w.techWins.size
|
||||
end
|
||||
mostPoints = pointsArray.max
|
||||
wrestlersWithLeastDeductedPoints = wrestlersWithSamePoints.select{|w| w.techWins.size == mostPoints}
|
||||
addPointsToWrestlersAhead(wrestlersWithLeastDeductedPoints.first)
|
||||
wrestlersWithLeastDeductedPoints.each do |wr|
|
||||
addPoints(wr)
|
||||
end
|
||||
end
|
||||
|
||||
def mostMajors
|
||||
pointsArray = []
|
||||
wrestlersWithSamePoints.each do |w|
|
||||
pointsArray << w.majorWins.size
|
||||
end
|
||||
mostPoints = pointsArray.max
|
||||
wrestlersWithLeastDeductedPoints = wrestlersWithSamePoints.select{|w| w.majorWins.size == mostPoints}
|
||||
addPointsToWrestlersAhead(wrestlersWithLeastDeductedPoints.first)
|
||||
wrestlersWithLeastDeductedPoints.each do |wr|
|
||||
addPoints(wr)
|
||||
end
|
||||
end
|
||||
|
||||
def coinFlip
|
||||
wrestler = wrestlersWithSamePoints.sample
|
||||
addPointsToWrestlersAhead(wrestler)
|
||||
addPoints(wrestler)
|
||||
end
|
||||
end
|
||||
@@ -1,42 +0,0 @@
|
||||
class SwapWrestlers
|
||||
attr_accessor :wrestler1_id, :wrestler2_id
|
||||
|
||||
|
||||
def swapWrestlers(wrestler1_id,wrestler2_id)
|
||||
w1 = Wrestler.find(wrestler1_id)
|
||||
w2 = Wrestler.find(wrestler2_id)
|
||||
|
||||
#placeholder guy
|
||||
w3 = Wrestler.new
|
||||
w3.weight_id = w1.weight_id
|
||||
w3.original_seed = w1.original_seed
|
||||
w3.seed = w1.seed
|
||||
swapWrestlerMatches(w1.allMatches,w1.id,w3.id)
|
||||
|
||||
#Swap wrestler 1 and wrestler 2
|
||||
swapWrestlerMatches(w2.allMatches,w2.id,w1.id)
|
||||
w1.seed = w2.seed
|
||||
|
||||
|
||||
swapWrestlerMatches(w3.allMatches,w3.id,w2.id)
|
||||
w2.seed = w3.seed
|
||||
|
||||
|
||||
w1.save
|
||||
w2.save
|
||||
end
|
||||
|
||||
def swapWrestlerMatches(matchesToSwap,w1_id,w2_id)
|
||||
matchesToSwap.each do |m|
|
||||
if m.bracket_position == "Pool"
|
||||
if m.w1 == w1_id
|
||||
m.w1 = w2_id
|
||||
m.save
|
||||
elsif m.w2 == w1_id
|
||||
m.w2 = w2_id
|
||||
m.save
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user