1
0
mirror of https://github.com/jcwimer/wrestlingApp synced 2026-04-10 15:50:50 +00:00

Wrestler pool number is now saved in db. Pool number generation moved to it's own class.

This commit is contained in:
2017-03-02 18:11:21 +00:00
parent 8fa529dc5f
commit 3f72a912b6
12 changed files with 177 additions and 106 deletions

View File

@@ -130,7 +130,7 @@ class Match < ActiveRecord::Base
end
def poolNumber
if self.w1?
wrestler1.generatePoolNumber
wrestler1.pool
end
end

View File

@@ -17,8 +17,13 @@ class Weight < ActiveRecord::Base
# self.tournament.destroyAllMatches
end
def wrestlersForPool(pool)
self.wrestlers.select{|w| w.generatePoolNumber == pool}
def wrestlersForPool(poolNumber)
#For some reason this does not work
# wrestlers.select{|w| w.pool == poolNumber}
#This does...
weightWrestlers = Wrestler.where(:weight_id => self.id)
weightWrestlers.select{|w| w.pool == poolNumber}
end
def allPoolMatchesFinished(pool)
@@ -43,7 +48,8 @@ class Weight < ActiveRecord::Base
end
def poolSeedOrder(pool)
wrestlersForPool(pool).sort_by{|w| [w.original_seed ? 0 : 1, w.original_seed || 0]}
# wrestlersForPool(pool).sort_by{|w| [w.original_seed ? 0 : 1, w.original_seed || 0]}
return wrestlersForPool(pool).sort_by{|w|w.seed}
end
@@ -51,79 +57,6 @@ class Weight < ActiveRecord::Base
SwapWrestlers.new.swapWrestlers(wrestler1_id,wrestler2_id)
end
def returnPoolNumber(wrestler)
if self.pools == 4
@wrestlers = fourPoolNumbers(self.wrestlers)
elsif self.pools == 2
@wrestlers = twoPoolNumbers(self.wrestlers)
elsif self.pools == 1
@wrestlers = onePoolNumbers(self.wrestlers)
end
@wrestler = @wrestlers.select{|w| w.id == wrestler.id}.first
return @wrestler.poolNumber
end
def onePoolNumbers(poolWrestlers)
poolWrestlers.sort_by{|x| x.seed }.each do |w|
w.poolNumber = 1
end
return poolWrestlers
end
def twoPoolNumbers(poolWrestlers)
pool = 1
poolWrestlers.sort_by{|x| x.seed }.reverse.each do |w|
if w.seed == 1
w.poolNumber = 1
elsif w.seed == 2
w.poolNumber = 2
elsif w.seed == 3
w.poolNumber = 2
elsif w.seed == 4
w.poolNumber = 1
else
w.poolNumber = pool
end
if pool < 2
pool = pool + 1
else
pool = 1
end
end
return poolWrestlers
end
def fourPoolNumbers(poolWrestlers)
pool = 1
poolWrestlers.sort_by{|x| x.seed }.reverse.each do |w|
if w.seed == 1
w.poolNumber = 1
elsif w.seed == 2
w.poolNumber = 2
elsif w.seed == 3
w.poolNumber = 3
elsif w.seed == 4
w.poolNumber = 4
elsif w.seed == 8
w.poolNumber = 1
elsif w.seed == 7
w.poolNumber = 2
elsif w.seed == 6
w.poolNumber = 3
elsif w.seed == 5
w.poolNumber = 4
else
w.poolNumber = pool
end
if pool < 4
pool = pool + 1
else
pool = 1
end
end
return poolWrestlers
end
def bracket_size
wrestlers.size

View File

@@ -4,7 +4,7 @@ class Wrestler < ActiveRecord::Base
has_one :tournament, through: :weight
has_many :matches, through: :weight
has_many :deductedPoints, class_name: "Teampointadjust"
attr_accessor :poolNumber, :poolAdvancePoints, :originalId, :swapId
attr_accessor :poolAdvancePoints, :originalId, :swapId
validates :name, :weight_id, :school_id, presence: true
@@ -103,10 +103,6 @@ class Wrestler < ActiveRecord::Base
end
end
def generatePoolNumber
self.weight.returnPoolNumber(self)
end
def boutByRound(round)
round_match = allMatches.select{|m| m.round == round}.first
if round_match.blank?
@@ -122,7 +118,7 @@ class Wrestler < ActiveRecord::Base
def poolMatches
pool_matches = allMatches.select{|m| m.bracket_position == "Pool"}
pool_matches.select{|m| m.poolNumber == self.generatePoolNumber}
pool_matches.select{|m| m.poolNumber == self.pool}
end
def hasAPoolBye

View File

@@ -6,7 +6,7 @@ class PoolAdvance
end
def advanceWrestler
if @wrestler.weight.allPoolMatchesFinished(@wrestler.generatePoolNumber) && @wrestler.finishedBracketMatches.size == 0
if @wrestler.weight.allPoolMatchesFinished(@wrestler.pool) && @wrestler.finishedBracketMatches.size == 0
poolToBracketAdvancment
end
if @wrestler.finishedBracketMatches.size > 0
@@ -15,7 +15,7 @@ class PoolAdvance
end
def poolToBracketAdvancment
pool = @wrestler.generatePoolNumber
pool = @wrestler.pool
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

View File

@@ -6,12 +6,13 @@ class PoolGeneration
end
def generatePools
GeneratePoolNumbers.new(@weight).savePoolNumbers
pools = @weight.pools
while @pool <= pools
roundRobin
@pool += 1
end
end
end
def roundRobin
wrestlers = @weight.wrestlersForPool(@pool)

View File

@@ -0,0 +1,77 @@
class GeneratePoolNumbers
def initialize( weight )
@weight = weight
end
def savePoolNumbers
if @weight.pools == 4
saveFourPoolNumbers(@weight.wrestlers)
elsif @weight.pools == 2
saveTwoPoolNumbers(@weight.wrestlers)
elsif @weight.pools == 1
saveOnePoolNumbers(@weight.wrestlers)
end
end
def saveOnePoolNumbers(poolWrestlers)
poolWrestlers.sort_by{|x| x.seed }.each do |w|
w.pool = 1
w.save
end
end
def saveTwoPoolNumbers(poolWrestlers)
pool = 1
poolWrestlers.sort_by{|x| x.seed }.reverse.each do |w|
if w.seed == 1
w.pool = 1
elsif w.seed == 2
w.pool = 2
elsif w.seed == 3
w.pool = 2
elsif w.seed == 4
w.pool = 1
else
w.pool = pool
end
if pool < 2
pool = pool + 1
else
pool = 1
end
w.save
end
end
def saveFourPoolNumbers(poolWrestlers)
pool = 1
poolWrestlers.sort_by{|x| x.seed }.reverse.each do |w|
if w.seed == 1
w.pool = 1
elsif w.seed == 2
w.pool = 2
elsif w.seed == 3
w.pool = 3
elsif w.seed == 4
w.pool = 4
elsif w.seed == 8
w.pool = 1
elsif w.seed == 7
w.pool = 2
elsif w.seed == 6
w.pool = 3
elsif w.seed == 5
w.pool = 4
else
w.pool = pool
end
if pool < 4
pool = pool + 1
else
pool = 1
end
w.save
end
end
end

View File

@@ -1,6 +1,6 @@
<% @round = 1 %>
<% @pool = 1 %>
<% until @wrestlers.select{|w| w.generatePoolNumber == @pool}.blank? %>
<% until @wrestlers.select{|w| w.pool == @pool}.blank? %>
<h5>Pool <%= @pool %></h5>
<table class="table table-striped table-bordered table-condensed">
<thead>
@@ -15,7 +15,7 @@
</tr>
</thead>
<tbody>
<% @wrestlers.select{|w| w.generatePoolNumber == @pool}.sort_by{|w| w.seed}.each do |w| %>
<% @wrestlers.select{|w| w.pool == @pool}.sort_by{|w| w.seed}.each do |w| %>
<tr>
<td><%= w.original_seed %> <%= w.name %> <%= w.season_win %>-<%= w.season_loss %> <%= w.school.name %></td>
<% @round = 1 %>