You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
educoder/app/controllers/ecs/ec_years_controller.rb

57 lines
2.0 KiB

6 years ago
class Ecs::EcYearsController < Ecs::BaseController
before_action :check_major_manager_permission!, only: [:create, :destroy]
def index
ec_years = current_major_school.ec_years
search = params[:search].to_s.strip
if search.present?
ec_years = ec_years.where('year LIKE ?', "%#{search}%")
end
@count = ec_years.count
@ec_years = paginate ec_years
return if @ec_years.blank?
# 防止N+1手动查询数量
year_ids = @ec_years.pluck(:id)
@student_count_map = EcYearStudent.where(ec_year_id: year_ids).group(:ec_year_id).count
@training_subitem_count_map = EcTrainingSubitem.joins(:ec_training_objective)
.where(ec_training_objectives: { ec_year_id: year_ids }).group('ec_year_id').count
@graduation_requirement_count_map = EcGraduationRequirement.where(ec_year_id: year_ids).group(:ec_year_id).count
@course_count_map = EcCourse.where(ec_year_id: year_ids).group(:ec_year_id).count
@course_target_count_map = EcCourseTarget.joins(:ec_course).where(ec_courses: { ec_year_id: year_ids })
.group('ec_year_id').count
@graduation_subitem_count_map = EcGraduationSubitem.joins(:ec_graduation_requirement)
.where(ec_graduation_requirements: { ec_year_id: year_ids }).group('ec_year_id').count
end
def create
if current_major_school.ec_years.exists?(year: params[:year].to_i)
render_error('届别已存在')
return
end
@ec_year = CopyEcYearService.call(current_major_school, params[:year].to_i)
end
def destroy
current_year.destroy!
render_ok
end
private
def current_year
@_current_year ||= current_major_school.ec_years.find(params[:id])
end
def current_major_school
@_ec_major_school ||= EcMajorSchool.find(params[:ec_major_school_id])
end
def current_school
@_current_school ||= current_major_school.school
end
end