From 5c71d98998619ddd54863db3f824075731a7aff9 Mon Sep 17 00:00:00 2001 From: jcwimer Date: Fri, 22 Jan 2016 19:00:15 +0000 Subject: [PATCH] Move two highest pool seeds match to last pool round --- app/models/generates_tournament_matches.rb | 7 +++- app/models/tournament.rb | 38 ++++++++++++++++++++++ app/models/weight.rb | 25 ++++++++++++++ 3 files changed, 69 insertions(+), 1 deletion(-) diff --git a/app/models/generates_tournament_matches.rb b/app/models/generates_tournament_matches.rb index b140878..43f4fc7 100644 --- a/app/models/generates_tournament_matches.rb +++ b/app/models/generates_tournament_matches.rb @@ -18,6 +18,7 @@ module GeneratesTournamentMatches destroyAllMatches buildTournamentWeights generateMatches + movePoolSeedsToFinalPoolRound end def buildTournamentWeights @@ -51,6 +52,10 @@ module GeneratesTournamentMatches end end - + def movePoolSeedsToFinalPoolRound + self.weights.each do |w| + w.setOriginalSeedsToWrestleLastPoolRound + end + end end diff --git a/app/models/tournament.rb b/app/models/tournament.rb index 6fe5f1d..0ed3e4d 100644 --- a/app/models/tournament.rb +++ b/app/models/tournament.rb @@ -136,4 +136,42 @@ class Tournament < ActiveRecord::Base end end + def swapWrestlers(wrestler1_id,wrestler2_id) + w1 = Wrestler.find(wrestler1_id) + w2 = Wrestler.find(wrestler2_id) + + #placeholder guy + w3 = Wrestler.new + w3.name = w1.name + w3.school_id = w1.school_id + w3.weight_id = w1.weight_id + w3.season_win = w1.season_win + w3.season_loss = w1.season_loss + w3.criteria = w1.criteria + w3.original_seed = w1.original_seed + w3.seed = w1.seed + + #Swap wrestler 1 and wrestler 2 + w1.name = w2.name + w1.school_id = w2.school_id + w1.weight_id = w2.weight_id + w1.season_win = w2.season_win + w1.season_loss = w2.season_loss + w1.criteria = w2.criteria + w1.original_seed = w2.original_seed + w1.seed = w2.seed + + w2.name = w3.name + w2.school_id = w3.school_id + w2.weight_id = w3.weight_id + w2.season_win = w3.season_win + w2.season_loss = w3.season_loss + w2.criteria = w3.criteria + w2.original_seed = w3.original_seed + w2.seed = w3.seed + + w1.save + w2.save + end + end diff --git a/app/models/weight.rb b/app/models/weight.rb index ca5bb0c..0a1ff5e 100644 --- a/app/models/weight.rb +++ b/app/models/weight.rb @@ -41,6 +41,31 @@ class Weight < ActiveRecord::Base self.pools = 4 end end + + def poolSeedOrder(pool) + wrestlersForPool(pool).sort_by{|w| [w.original_seed ? 0 : 1, w.original_seed || 0]} + end + + def setOriginalSeedsToWrestleLastPoolRound + pool = 1 + until pool > self.pools + wrestler1 = poolSeedOrder(pool).first + wrestler2 = poolSeedOrder(pool).second + match = wrestler1.poolMatches.sort_by{|m| m.round}.last + if match.w1 != wrestler2.id or match.w2 != wrestler2.id + if match.w1 == wrestler1.id + swapWrestlers(match.w2,wrestler2.id) + elsif match.w2 == wrestler1.id + swapWrestlers(match.w1,wrestler2.id) + end + end + pool += 1 + end + end + + def swapWrestlers(wrestler1_id,wrestler2_id) + self.tournament.swapWrestlers(wrestler1_id,wrestler2_id) + end def returnPoolNumber(wrestler) if self.pools == 4