chore: init commit
in worker.../repo/GITFOLDER.zip is the .git folder.
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Admin
|
||||
class TeachersController < BaseController
|
||||
include SoftDeletableFiltering
|
||||
|
||||
before_action :set_teacher, only: %i[show edit update destroy]
|
||||
before_action :require_deactivated, only: %i[destroy]
|
||||
|
||||
def index
|
||||
@teachers = apply_sorting(scoped_by_discard_status(Teacher), default: "username")
|
||||
|
||||
@breadcrumbs = [
|
||||
{ label: "Teachers" }
|
||||
]
|
||||
end
|
||||
|
||||
def show
|
||||
@breadcrumbs = [
|
||||
{ label: "Teachers", path: admin_teachers_path },
|
||||
{ label: @teacher.username }
|
||||
]
|
||||
end
|
||||
|
||||
def new
|
||||
@teacher = Teacher.new
|
||||
set_form_data
|
||||
|
||||
@breadcrumbs = [
|
||||
{ label: "Teachers", path: admin_teachers_path },
|
||||
{ label: "New Teacher" }
|
||||
]
|
||||
end
|
||||
|
||||
def edit
|
||||
set_form_data
|
||||
@breadcrumbs = [
|
||||
{ label: "Teachers", path: admin_teachers_path },
|
||||
{ label: @teacher.username, path: admin_teacher_path(@teacher) },
|
||||
{ label: "Edit" }
|
||||
]
|
||||
end
|
||||
|
||||
def create
|
||||
temp_password = Devise.friendly_token.first(20)
|
||||
classroom_ids = teacher_params[:classroom_ids]&.reject(&:blank?)
|
||||
|
||||
@teacher = Teacher.new(teacher_params.except(:classroom_ids).merge(password: temp_password))
|
||||
@teacher.classroom_ids = classroom_ids if classroom_ids.present?
|
||||
|
||||
if @teacher.save
|
||||
@teacher.send_reset_password_instructions
|
||||
redirect_to admin_teacher_path(@teacher), notice: t(".notice")
|
||||
else
|
||||
set_form_data
|
||||
@breadcrumbs = [
|
||||
{ label: "Teachers", path: admin_teachers_path },
|
||||
{ label: "New Teacher" }
|
||||
]
|
||||
render :new, status: :unprocessable_content
|
||||
end
|
||||
end
|
||||
|
||||
def update
|
||||
classroom_ids = teacher_params[:classroom_ids]&.reject(&:blank?)
|
||||
update_params = teacher_params.except(:classroom_ids)
|
||||
update_params[:classroom_ids] = classroom_ids if classroom_ids.present?
|
||||
|
||||
if @teacher.update(update_params)
|
||||
redirect_to admin_teacher_path(@teacher), notice: t(".notice")
|
||||
else
|
||||
set_form_data
|
||||
@breadcrumbs = [
|
||||
{ label: "Teachers", path: admin_teachers_path },
|
||||
{ label: @teacher.username, path: admin_teacher_path(@teacher) },
|
||||
{ label: "Edit" }
|
||||
]
|
||||
render :edit, status: :unprocessable_content
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
username = @teacher.username
|
||||
@teacher.really_destroy!
|
||||
redirect_to admin_teachers_path, notice: t(".notice", username: username)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_teacher
|
||||
@teacher = Teacher.find(params.expect(:id))
|
||||
end
|
||||
|
||||
def require_deactivated
|
||||
return if @teacher.discarded?
|
||||
|
||||
redirect_to edit_admin_teacher_path(@teacher), alert: t("admin.teachers.destroy.must_be_deactivated")
|
||||
end
|
||||
|
||||
def teacher_params
|
||||
params.expect(teacher: [:email, :name, { classroom_ids: [] }])
|
||||
end
|
||||
|
||||
def set_form_data
|
||||
active_years = Year.current_school_year(Date.current)
|
||||
@schools = School.joins(:school_years).where(school_years: { year_id: active_years.ids }).distinct.order(:name)
|
||||
|
||||
@selected_school_id = params[:school_id] || @teacher.classrooms.first&.school&.id
|
||||
|
||||
@classrooms = Classroom.active.joins(:school_year).where(school_years: { year_id: active_years.ids })
|
||||
@classrooms = @classrooms.where(school_years: { school_id: @selected_school_id }) if @selected_school_id.present?
|
||||
@classrooms = @classrooms.order(:name)
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user