84 lines
2.2 KiB
Ruby
84 lines
2.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Admin
|
|
class ClassroomsController < BaseController
|
|
before_action :set_classroom, only: %i[show edit update toggle_archive]
|
|
|
|
def index
|
|
@classrooms = apply_sorting(Classroom.all, default: "name")
|
|
|
|
@breadcrumbs = [
|
|
{ label: "Classrooms" }
|
|
]
|
|
end
|
|
|
|
def show
|
|
@breadcrumbs = [
|
|
{ label: "Classrooms", path: admin_classrooms_path },
|
|
{ label: @classroom.name }
|
|
]
|
|
end
|
|
|
|
def new
|
|
@classroom = Classroom.new
|
|
|
|
@breadcrumbs = [
|
|
{ label: "Classrooms", path: admin_classrooms_path },
|
|
{ label: "New Classroom" }
|
|
]
|
|
end
|
|
|
|
def edit
|
|
@breadcrumbs = [
|
|
{ label: "Classrooms", path: admin_classrooms_path },
|
|
{ label: @classroom.name, path: admin_classroom_path(@classroom) },
|
|
{ label: "Edit" }
|
|
]
|
|
end
|
|
|
|
def create
|
|
@classroom = Classroom.new(classroom_params)
|
|
|
|
if @classroom.save
|
|
redirect_to admin_classroom_path(@classroom), notice: t(".notice")
|
|
else
|
|
@breadcrumbs = [
|
|
{ label: "Classrooms", path: admin_classrooms_path },
|
|
{ label: "New Classroom" }
|
|
]
|
|
render :new, status: :unprocessable_content
|
|
end
|
|
end
|
|
|
|
def update
|
|
if @classroom.update(classroom_params)
|
|
redirect_to admin_classroom_path(@classroom), notice: t(".notice")
|
|
else
|
|
@breadcrumbs = [
|
|
{ label: "Classrooms", path: admin_classrooms_path },
|
|
{ label: @classroom.name, path: admin_classroom_path(@classroom) },
|
|
{ label: "Edit" }
|
|
]
|
|
render :edit, status: :unprocessable_content
|
|
end
|
|
end
|
|
|
|
def toggle_archive
|
|
authorize @classroom, :toggle_archive?
|
|
@classroom.update!(archived: !@classroom.archived)
|
|
flash[:notice] = @classroom.archived? ? "Classroom has been archived." : "Classroom has been activated."
|
|
redirect_to admin_classroom_path(@classroom)
|
|
end
|
|
|
|
private
|
|
|
|
def set_classroom
|
|
@classroom = Classroom.find(params.expect(:id))
|
|
end
|
|
|
|
def classroom_params
|
|
params.expect(classroom: [:name, :trading_enabled, :school_year_id, { grade_ids: [] }])
|
|
end
|
|
end
|
|
end
|