class Admins::LaboratoriesController < Admins::BaseController def index default_sort('id', 'desc') laboratories = Admins::LaboratoryQuery.call(params) @laboratories = paginate laboratories.preload(:school, :laboratory_users) end def create Admins::CreateLaboratoryService.call(create_params) render_ok rescue Admins::CreateLaboratoryService::Error => ex render_error(ex.message) end def destroy current_laboratory.destroy! render_delete_success end def shixuns_for_select except_shixun_ids = current_laboratory.laboratory_shixuns.pluck(:shixun_id) shixuns = Shixun.where.not(id: except_shixun_ids) keyword = params[:keyword].to_s.strip if keyword.present? like_sql = 'shixuns.name LIKE :keyword OR CONCAT(users.lastname, users.firstname) LIKE :keyword '\ 'OR mirror_repositories.name LIKE :keyword' shixuns = shixuns.joins(:user, :mirror_repositories).where(like_sql, keyword: "%#{keyword}%") end @count = shixuns.count @shixuns = paginate(shixuns.includes(:user)) end def subjects_for_select except_subject_ids = current_laboratory.laboratory_subjects.pluck(:subject_id) subjects = Subject.where.not(id: except_subject_ids) keyword = params[:keyword].to_s.strip if keyword.present? like_sql = 'subjects.name LIKE :keyword OR CONCAT(users.lastname, users.firstname) LIKE :keyword' subjects = subjects.joins(:user).where(like_sql, keyword: "%#{keyword}%") end @count = subjects.count @subjects = paginate(subjects.includes(:user)) end def synchronize_user school = current_laboratory.school users = User.joins(:user_extension).where(user_extensions: {school_id: school.id}) users.update_all(laboratory_id: current_laboratory.id) end def update_sync_course current_laboratory.update!(sync_course: !current_laboratory.sync_course) @laboratory = current_laboratory end def update @laboratory = current_laboratory unless @laboratory.update_attributes!(setting_params) redirect_to admins_laboratories_path flash[:danger] = "更新失败" end end private def current_laboratory @_current_laboratory ||= Laboratory.find(params[:id]) end def create_params params.permit(:school_id) end def setting_params params.permit(:sync_course, :sync_subject, :sync_shixun) end end