ensl.org/app/models/bracket.rb

82 lines
1.6 KiB
Ruby
Raw Normal View History

# == Schema Information
#
# Table name: brackets
#
# id :integer not null, primary key
# contest_id :integer
# slots :integer
# created_at :datetime
# updated_at :datetime
# name :string(255)
#
class Bracket < ActiveRecord::Base
include Extra
attr_protected :id, :created_at, :updated_at
belongs_to :contest
has_many :bracketers
def to_s
"#" + self.id.to_s
end
def get_bracketer row, col
b = bracketers.pos(row, col).first
unless b
b = bracketers.build
b.row = row.to_i
b.column = col.to_i
b.save
end
return b
end
def options
["-- Matches"] \
+ contest.matches.collect{|c| [c, "match_#{c.id}"]} \
+ ["-- Teams"] \
+ contest.contesters.collect{|c| [c, "contester_#{c.id}"]}
end
def default row, col
if b = bracketers.pos(row, col).first
if b.match
return "match_#{b.match_id}"
elsif b.contester
return "contester_#{b.team_id}"
end
end
end
def update_cells params
params.each do |row, cols|
cols.each do |col, val|
unless val.include? "--"
b = get_bracketer(row, col)
if m = val.match(/match_(\d*)/)
b.update_attribute :match_id, m[1].to_i
b.update_attribute :team_id, nil
elsif m = val.match(/contester_(\d*)/)
b.update_attribute :team_id, m[1].to_i
b.update_attribute :match_id, nil
end
end
end
end
end
def can_create? cuser
cuser and cuser.admin?
end
def can_update? cuser
cuser and cuser.admin?
end
def can_destroy? cuser
cuser and cuser.admin?
end
end