diff --git a/app/models/poolbracket.rb b/app/models/poolbracket.rb index cf42bc2..cdfc969 100644 --- a/app/models/poolbracket.rb +++ b/app/models/poolbracket.rb @@ -1,76 +1,80 @@ class Poolbracket - def generateBracketMatches(matches, weight, highest_round) - if weight.pool_bracket_type == "twoPoolsToSemi" - return twoPoolsToSemi(matches, weight, highest_round) - elsif weight.pool_bracket_type == "twoPoolsToFinal" - return twoPoolsToFinal(matches, weight, highest_round) - elsif weight.pool_bracket_type == "fourPoolsToQuarter" - return fourPoolsToQuarter(matches, weight, highest_round) - elsif weight.pool_bracket_type == "fourPoolsToSemi" - return fourPoolsToSemi(matches, weight, highest_round) - end - return matches - end + def initialize(weight, highest_round) + @weight = weight + @tournament = @weight.tournament + @pool_bracket_type = @weight.pool_bracket_type + @round = highest_round + 1 + end - def twoPoolsToSemi(matches, weight, round) - round += 1 - matches = createMatchup(matches, weight, round, "Winner Pool 1", "Runner Up Pool 2", "Semis", 1) - matches = createMatchup(matches, weight, round, "Winner Pool 2", "Runner Up Pool 1", "Semis", 2) - round += 1 - matches = matches.select{|m| m.weight_id == weight.id} - matches = createMatchup(matches, weight, round,"","","1/2",1) - matches = createMatchup(matches, weight, round,"","","3/4",1) - end + def next_round + @round += 1 + end - def twoPoolsToFinal(matches,weight,round) - round += 1 - matches = createMatchup(matches, weight, round, "Winner Pool 1", "Winner Pool 2", "1/2", 1) - matches = createMatchup(matches, weight, round, "Runner Up Pool 1", "Runner Up Pool 2", "3/4", 1) + def generateBracketMatches() + if @pool_bracket_type == "twoPoolsToSemi" + return twoPoolsToSemi() + elsif @pool_bracket_type == "twoPoolsToFinal" + return twoPoolsToFinal() + elsif @pool_bracket_type == "fourPoolsToQuarter" + return fourPoolsToQuarter() + elsif @pool_bracket_type == "fourPoolsToSemi" + return fourPoolsToSemi() end + return [] + end - def fourPoolsToQuarter(matches,weight,round) - round += 1 - matches = createMatchup(matches, weight, round, "Winner Pool 1", "Runner Up Pool 2", "Quarter", 1) - matches = createMatchup(matches, weight, round, "Winner Pool 4", "Runner Up Pool 3", "Quarter", 2) - matches = createMatchup(matches, weight, round, "Winner Pool 2", "Runner Up Pool 1", "Quarter", 3) - matches = createMatchup(matches, weight, round, "Winner Pool 3", "Runner Up Pool 4", "Quarter", 4) - round += 1 - matches = createMatchup(matches, weight, round, "", "", "Semis", 1) - matches = createMatchup(matches, weight, round, "", "", "Semis", 2) - matches = createMatchup(matches, weight, round, "", "", "Conso Semis", 1) - matches = createMatchup(matches, weight, round, "", "", "Conso Semis", 2) - round += 1 - matches = createMatchup(matches, weight, round, "", "", "1/2", 1) - matches = createMatchup(matches, weight, round, "", "", "3/4", 1) - matches = createMatchup(matches, weight, round, "", "", "5/6", 1) - matches = createMatchup(matches, weight, round, "", "", "7/8", 1) - end + def twoPoolsToSemi() + createMatchup("Winner Pool 1", "Runner Up Pool 2", "Semis", 1) + createMatchup("Winner Pool 2", "Runner Up Pool 1", "Semis", 2) + next_round + createMatchup("","","1/2",1) + createMatchup("","","3/4",1) + end - def fourPoolsToSemi(matches,weight,round) - round += 1 - matches = createMatchup(matches, weight, round, "Winner Pool 1", "Winner Pool 4", "Semis", 1) - matches = createMatchup(matches, weight, round, "Winner Pool 2", "Winner Pool 3", "Semis", 2) - matches = createMatchup(matches, weight, round, "Runner Up Pool 1", "Runner Up Pool 4", "Conso Semis", 1) - matches = createMatchup(matches, weight, round, "Runner Up Pool 2", "Runner Up Pool 3", "Conso Semis", 2) - round += 1 - matches = createMatchup(matches, weight, round, "", "", "1/2", 1) - matches = createMatchup(matches, weight, round, "", "", "3/4", 1) - matches = createMatchup(matches, weight, round, "", "", "5/6", 1) - matches = createMatchup(matches, weight, round, "", "", "7/8", 1) - end + def twoPoolsToFinal() + createMatchup("Winner Pool 1", "Winner Pool 2", "1/2", 1) + createMatchup("Runner Up Pool 1", "Runner Up Pool 2", "3/4", 1) + end - def createMatchup(matches, weight, round, w1_name, w2_name, bracket_position, bracket_position_number) - tournament = weight.tournament - match = tournament.matches.create( - loser1_name: w1_name, - loser2_name: w2_name, - weight_id: weight.id, - round: round, - bracket_position: bracket_position, - bracket_position_number: bracket_position_number - ) - matches << match - end + def fourPoolsToQuarter() + createMatchup("Winner Pool 1", "Runner Up Pool 2", "Quarter", 1) + createMatchup("Winner Pool 4", "Runner Up Pool 3", "Quarter", 2) + createMatchup("Winner Pool 2", "Runner Up Pool 1", "Quarter", 3) + createMatchup("Winner Pool 3", "Runner Up Pool 4", "Quarter", 4) + next_round + createMatchup("", "", "Semis", 1) + createMatchup("", "", "Semis", 2) + createMatchup("", "", "Conso Semis", 1) + createMatchup("", "", "Conso Semis", 2) + next_round + createMatchup("", "", "1/2", 1) + createMatchup("", "", "3/4", 1) + createMatchup("", "", "5/6", 1) + createMatchup("", "", "7/8", 1) + end + + def fourPoolsToSemi() + createMatchup("Winner Pool 1", "Winner Pool 4", "Semis", 1) + createMatchup("Winner Pool 2", "Winner Pool 3", "Semis", 2) + createMatchup("Runner Up Pool 1", "Runner Up Pool 4", "Conso Semis", 1) + createMatchup("Runner Up Pool 2", "Runner Up Pool 3", "Conso Semis", 2) + next_round + createMatchup("", "", "1/2", 1) + createMatchup("", "", "3/4", 1) + createMatchup("", "", "5/6", 1) + createMatchup("", "", "7/8", 1) + end + + def createMatchup(w1_name, w2_name, bracket_position, bracket_position_number) + @tournament.matches.create( + loser1_name: w1_name, + loser2_name: w2_name, + weight_id: @weight.id, + round: @round, + bracket_position: bracket_position, + bracket_position_number: bracket_position_number + ) + end end diff --git a/app/models/tournamentmatchgen.rb b/app/models/tournamentmatchgen.rb index f28b107..4e35bc4 100644 --- a/app/models/tournamentmatchgen.rb +++ b/app/models/tournamentmatchgen.rb @@ -30,8 +30,10 @@ class Tournamentmatchgen matches = Pool.new(weight).generatePools() last_match = matches.sort_by{|m| m.round}.last highest_round = last_match.round - @matches += Poolbracket.new.generateBracketMatches(matches, weight, highest_round) + Poolbracket.new(weight, highest_round).generateBracketMatches() end + @tournament.save! + @matches = @tournament.matches end def generateMatches