diff options
author | AndrewMurrell <amurrel@purdue.edu> | 2014-03-25 17:38:38 -0400 |
---|---|---|
committer | AndrewMurrell <amurrel@purdue.edu> | 2014-03-25 17:38:38 -0400 |
commit | 53b4f8028fc987b0cf26a7a073fec7064b4b6d8a (patch) | |
tree | d277b31519df83e8a1c060b04c6ea6cf50b5c361 /app/models/tournament.rb | |
parent | 0c22c4bd9a0b4a0b0ff5840c1af41c0b320e3529 (diff) |
revert Guntas
Diffstat (limited to 'app/models/tournament.rb')
-rw-r--r-- | app/models/tournament.rb | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/app/models/tournament.rb b/app/models/tournament.rb index cc915a0..69bedf5 100644 --- a/app/models/tournament.rb +++ b/app/models/tournament.rb @@ -1,3 +1,42 @@ class Tournament < ActiveRecord::Base - belongs_to :game + belongs_to :game + has_many :matches + 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 open? + return true + end + + def joinable_by?(user) + return ((not user.nil?) and user.in_group?(:player) and open?) + end + + def join(user) + unless joinable_by?(user) + return false + end + players.push(user) + end + + def setup(tournament) + num_teams = (self.players.count/self.max_players_per_team).floor + num_matches = num_teams - 1 + for i in 1..num_matches + self.matches.create(name: "Match #{i}") + end + match_num = 0 + team_num = 0 + self.players.each_slice(tournament.max_players_per_team) do |players| + self.matches[match_num].teams.push(Team.create(users: players)) + if (team_num != 0 and team_num % tournament.max_teams_per_match == 0) + match_num += 1 + team_num = 0 + else + team_num += 1 + end + end + end + + end |