Files
puzzle-scoreboard/app/controllers/events_controller.rb
sto 4a4c79ad8a
Some checks failed
CI / scan_ruby (push) Has been cancelled
CI / scan_js (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / test (push) Has been cancelled
Events: kickstart shared scoreboard
2026-07-30 08:33:55 +02:00

78 lines
1.6 KiB
Ruby

class EventsController < ApplicationController
before_action :set_event, only: %i[ destroy show edit update ]
def index
authorize :event
@events = current_user.events.order(created_at: :desc)
@contests_without_event = current_user.contests.where(event: nil).size
@title = I18n.t("events.index.title", username: current_user.username)
end
def new
authorize :event
@event = Event.new
@title = I18n.t("events.new.title")
@nonav = true
end
def create
authorize :event
@event = Event.new(event_params)
@event.lang = @current_user.lang
@event.user_id = current_user.id
if @event.save
redirect_to "/events/#{@event.id}", notice: t("events.new.notice")
else
@title = I18n.t("events.new.title")
@nonav = true
render :new, status: :unprocessable_entity
end
end
def show
authorize @event
@contests = @event.contests.includes([ :contestants, :puzzles ])
@title = @event.name
end
def edit
authorize @event
@title = I18n.t("events.edit.title")
@nonav = true
end
def update
authorize @event
if @event.update(event_params)
redirect_to event_path(@event), notice: t("events.edit.notice")
else
@title = I18n.t("events.edit.title")
@nonav = true
render :edit, status: :unprocessable_entity
end
end
def destroy
authorize @event
@event.destroy
redirect_to events_path, notice: t("events.destroy.notice")
end
private
def set_event
@event = Event.find(params[:id])
end
def event_params
params.expect(event: [ :lang, :name, :shared_scoreboard ])
end
end