mirror of
https://github.com/ENSL/ensl.org.git
synced 2024-12-30 14:31:12 +00:00
113 lines
3 KiB
Ruby
113 lines
3 KiB
Ruby
class MatchesController < ApplicationController
|
|
before_filter :get_match, except: [:index, :new, :create, :admin]
|
|
|
|
def index
|
|
@matches = Match.active
|
|
end
|
|
|
|
def show
|
|
@ownpred = @match.predictions.first conditions: {user_id: cuser.id} if cuser
|
|
@newpred = @match.predictions.build
|
|
end
|
|
|
|
def new
|
|
@match = Match.new
|
|
@match.contest = Contest.find params[:id]
|
|
raise AccessError unless @match.can_create? cuser
|
|
end
|
|
|
|
def admin
|
|
@matches = Match.active.includes(:contest, :contester1, :contester2, :map1, :map2, :referee).all.group_by {|t| t.week.to_s }.to_a.reverse
|
|
render :layout => "full"
|
|
end
|
|
|
|
def extra
|
|
end
|
|
|
|
def score
|
|
raise AccessError unless @match.can_update? cuser, [:matchers_attributes]
|
|
@contester = @match.contester1.team.is_leader?(cuser) ? @match.contester1 : @match.contester2
|
|
@n = 0
|
|
end
|
|
|
|
def ref
|
|
raise AccessError unless @match.can_update? cuser, [:report]
|
|
@n = 0
|
|
end
|
|
|
|
def edit
|
|
raise AccessError unless @match.can_update? cuser, [:contester1_id]
|
|
end
|
|
|
|
def create
|
|
@match = Match.new params[:match]
|
|
raise AccessError unless @match.can_create? cuser
|
|
|
|
if @match.save
|
|
flash[:notice] = t(:matches_create)
|
|
redirect_to controller: 'contests', action: 'edit', id: @match.contest
|
|
else
|
|
render :new
|
|
end
|
|
end
|
|
|
|
def update
|
|
raise AccessError unless @match.can_update? cuser, params[:match]
|
|
if params[:match][:matchers_attributes]
|
|
params[:match][:matchers_attributes].each do |key, matcher|
|
|
matcher['_destroy'] = matcher['_destroy'] == "keep" ? false : true
|
|
if matcher['user_id'] == ""
|
|
params[:match][:matchers_attributes].delete key
|
|
elsif matcher['user_id'].to_i == 0
|
|
matcher['user_id'] = User.find_by_username(matcher['user_id']).id
|
|
end
|
|
end
|
|
end
|
|
|
|
if @match.update_attributes params[:match]
|
|
respond_to do |format|
|
|
format.xml { head :ok }
|
|
format.html do
|
|
flash[:notice] = t(:matches_update)
|
|
if URI(request.referer).path.include?("admin")
|
|
redirect_to_back
|
|
else
|
|
redirect_to @match
|
|
end
|
|
end
|
|
end
|
|
else
|
|
render :edit
|
|
end
|
|
end
|
|
|
|
def hltv
|
|
raise AccessError unless @match.can_update? cuser, [:hltv]
|
|
|
|
if params[:commit].include? t(:hltv_send)
|
|
@match.hltv_record params[:addr], params[:pwd]
|
|
flash[:notice] = t(:hltv_recording)
|
|
elsif params[:commit].include? t(:hltv_move)
|
|
sleep(90) if params[:wait] == "1"
|
|
@match.hltv_move params[:addr], params[:pwd]
|
|
flash[:notice] = t(:hltv_moved)
|
|
elsif params[:commit].include? t(:hltv_stop)
|
|
sleep(90) if params[:wait] == "1"
|
|
@match.hltv_stop
|
|
flash[:notice] = t(:hltv_stopped)
|
|
end
|
|
redirect_to action: 'show'
|
|
end
|
|
|
|
def destroy
|
|
raise AccessError unless @match.can_destroy? cuser
|
|
@match.destroy
|
|
redirect_to controller: 'contests', action: 'edit', id: @match.contest
|
|
end
|
|
|
|
private
|
|
|
|
def get_match
|
|
@match = Match.find params[:id]
|
|
end
|
|
end
|