ensl.org/app/controllers/challenges_controller.rb
2014-03-31 22:37:38 +01:00

73 lines
1.6 KiB
Ruby

class ChallengesController < ApplicationController
before_filter :get_challenge, only: [:show, :edit, :update, :destroy]
def index
@challenges = Challenge.all
end
def show
return_here
end
def refresh
Challenge.past.pending.each do |c|
c.destroy
end
render text: t(:challenges_cleared)
end
def new
@challenge = Challenge.new
@challenge.user = cuser
@challenge.contester2 = Contester.active.find params[:id]
@challenge.get_contester1
raise AccessError unless @challenge.can_create? cuser
end
def create
@challenge = Challenge.new params[:challenge]
@challenge.user = cuser
raise AccessError unless @challenge.can_create? cuser
if @challenge.valid? and @challenge.save
flash[:notice] = t(:challenges_create)
redirect_to @challenge
else
render :new
end
end
def update
@challenge = Challenge.find params[:id]
raise AccessError unless @challenge.can_update? cuser
case params[:commit]
when "Accept"
@challenge.status = Challenge::STATUS_ACCEPTED
when "Default time"
@challenge.status = Challenge::STATUS_DEFAULT
when "Forfeit"
@challenge.status = Challenge::STATUS_FORFEIT
when "Decline"
@challenge.status = Challenge::STATUS_DECLINED
end
if @challenge.update_attributes params[:challenge]
flash[:notice] = t(:challenges_update)
end
render :show
end
def destroy
raise AccessError unless @challenge.can_destroy? cuser
@challenge.destroy
return_to
end
private
def get_challenge
@challenge = Challenge.find params[:id]
end
end