diff options
author | Luke Shumaker <shumakl@purdue.edu> | 2014-04-22 15:50:21 -0400 |
---|---|---|
committer | Luke Shumaker <shumakl@purdue.edu> | 2014-04-22 15:50:21 -0400 |
commit | 9d226fcd27b6c2470edf718ad36a262348891470 (patch) | |
tree | bb17fce921d0017b6e9111bd81edc194c07f61d3 /app/models | |
parent | 136b86453000aa6ad3a099efb96d85232eb2eeb5 (diff) |
re-factor for tournament_stage's and separate scheduling modules
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/tournament.rb | 31 | ||||
-rw-r--r-- | app/models/tournament_stage.rb | 26 |
2 files changed, 30 insertions, 27 deletions
diff --git a/app/models/tournament.rb b/app/models/tournament.rb index 822e641..e21ccb1 100644 --- a/app/models/tournament.rb +++ b/app/models/tournament.rb @@ -1,15 +1,15 @@ class Tournament < ActiveRecord::Base belongs_to :game - has_many :matches + has_many :tournament_stages has_many :settings_raw, class_name: "TournamentSetting" has_and_belongs_to_many :players, class_name: "User", association_foreign_key: "player_id", join_table: "players_tournaments" has_and_belongs_to_many :hosts, class_name: "User", association_foreign_key: "host_id", join_table: "hosts_tournaments" - def matches_ordered + def stages_ordered h = {} i = 1 - matches.order(:id).each do |m| - h[i] = m + self.tournament_stages.order(:id).each do |s| + h[i] = s i += 1 end return h @@ -86,27 +86,4 @@ class Tournament < ActiveRecord::Base players.delete(user) end end - - def setup - num_teams = (self.players.count/self.min_players_per_team).floor - num_matches = num_teams - 1 - for i in 1..num_matches - self.matches.create(name: "Match #{i}", status: 0, submitted_peer_evaluations: 0) - end - match_num = num_matches-1 - team_num = 0 - #for each grouping of min_players_per_team - players.each_slice(min_players_per_team) do |players| - - #if the match is full, move to the next match, otherwise move to the next team - if (team_num == min_teams_per_match) - match_num -= 1 - team_num = 0 - else - team_num += 1 - end - #create a new team in the current match - self.matches[match_num].teams.push(Team.create(users: players)) - end - end end diff --git a/app/models/tournament_stage.rb b/app/models/tournament_stage.rb index 205c8cc..a24d7b9 100644 --- a/app/models/tournament_stage.rb +++ b/app/models/tournament_stage.rb @@ -1,3 +1,29 @@ class TournamentStage < ActiveRecord::Base belongs_to :tournament + has_many :matches + + def matches_ordered + h = {} + i = 1 + self.matches.order(:id).each do |m| + h[i] = m + i += 1 + end + return h + end + + def create_matches + set_scheduling + @scheduling.create_matches + end + + def to_svg + set_scheduling + return @scheduling.graph(self) + end + + private + def set_scheduling + @scheduling ||= "Scheduling::#{self.scheduling}".constantize.new(self) + end end |