|  |  |  | @ -13,7 +13,7 @@ class CoursesController < ApplicationController | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   before_action :require_login, except: [:index, :show, :students, :teachers, :board_list, :mine, :all_course_groups, :left_banner, :top_banner] | 
			
		
	
		
			
				
					|  |  |  |  |   before_action :set_course, :user_course_identity, only: [:show, :update, :destroy, :settings, :set_invite_code_halt, | 
			
		
	
		
			
				
					|  |  |  |  |                                                            :set_public_or_private, :search_teacher_candidate, :teachers, | 
			
		
	
		
			
				
					|  |  |  |  |                                                            :set_public_or_private, :search_teacher_candidate, :teachers, :apply_teachers, | 
			
		
	
		
			
				
					|  |  |  |  |                                                            :top_banner, :left_banner, :add_teacher_popup, :add_teacher, | 
			
		
	
		
			
				
					|  |  |  |  |                                                            :graduation_group_list, :create_graduation_group, :join_graduation_group, | 
			
		
	
		
			
				
					|  |  |  |  |                                                            :course_group_list, :set_course_group, :change_course_admin, :change_course_teacher, | 
			
		
	
	
		
			
				
					|  |  |  | @ -26,10 +26,10 @@ class CoursesController < ApplicationController | 
			
		
	
		
			
				
					|  |  |  |  |                                          :transfer_to_course_group, :delete_from_course, | 
			
		
	
		
			
				
					|  |  |  |  |                                          :search_users, :add_students_by_search, :get_historical_courses, :add_teacher_popup, :add_teacher] | 
			
		
	
		
			
				
					|  |  |  |  |   before_action :admin_allowed, only: [:set_invite_code_halt, :set_public_or_private, :change_course_admin, | 
			
		
	
		
			
				
					|  |  |  |  |                                        :set_course_group, :delete_course_teacher, :teacher_application_review, | 
			
		
	
		
			
				
					|  |  |  |  |                                        :create_group_by_importing_file] | 
			
		
	
		
			
				
					|  |  |  |  |                                        :set_course_group, :delete_course_teacher, :create_group_by_importing_file] | 
			
		
	
		
			
				
					|  |  |  |  |   before_action :teacher_or_admin_allowed, only: [:graduation_group_list, :create_graduation_group, :join_graduation_group, | 
			
		
	
		
			
				
					|  |  |  |  |                                                   :change_course_teacher, :export_member_scores_excel, :course_group_list] | 
			
		
	
		
			
				
					|  |  |  |  |                                                   :change_course_teacher, :export_member_scores_excel, :course_group_list, | 
			
		
	
		
			
				
					|  |  |  |  |                                                   :teacher_application_review, :apply_teachers] | 
			
		
	
		
			
				
					|  |  |  |  |   before_action :validate_course_name, only: [:create, :update] | 
			
		
	
		
			
				
					|  |  |  |  |   before_action :find_board, only: :board_list | 
			
		
	
		
			
				
					|  |  |  |  |   before_action :validate_page_size, only: :mine | 
			
		
	
	
		
			
				
					|  |  |  | @ -251,46 +251,53 @@ class CoursesController < ApplicationController | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     if @course.try(:id) != 1309 || current_user.admin? || current_user.try(:id) == 15582 | 
			
		
	
		
			
				
					|  |  |  |  |       @teacher_list = @course.course_members.joins(:user).where("course_members.role in (1, 2, 3) | 
			
		
	
		
			
				
					|  |  |  |  |                                                      and LOWER(concat(users.lastname, users.firstname)) LIKE '%#{@search_str}%'") | 
			
		
	
		
			
				
					|  |  |  |  |                                                      and LOWER(concat(users.lastname, users.firstname)) LIKE ?", "%#{@search_str}%") | 
			
		
	
		
			
				
					|  |  |  |  |     else | 
			
		
	
		
			
				
					|  |  |  |  |       @teacher_list = @course.course_members.joins(:user).where("(course_members.role in (1, 3) or (course_members.user_id = #{current_user.id} | 
			
		
	
		
			
				
					|  |  |  |  |                                           and course_members.role = 2)) and LOWER(concat(users.lastname, users.firstname)) | 
			
		
	
		
			
				
					|  |  |  |  |                                           LIKE '%#{@search_str}%'") | 
			
		
	
		
			
				
					|  |  |  |  |                                           LIKE ?", "%#{@search_str}%") | 
			
		
	
		
			
				
					|  |  |  |  |     end | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     @teacher_list_size = @teacher_list.size | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     @has_graduation_design = @course.course_modules.graduation_module_not_hidden.any? | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     sort = params[:sort] || "desc" | 
			
		
	
		
			
				
					|  |  |  |  |     @order = params[:order].to_i | 
			
		
	
		
			
				
					|  |  |  |  |     if @order.present? | 
			
		
	
		
			
				
					|  |  |  |  |       case @order | 
			
		
	
		
			
				
					|  |  |  |  |       when 1 | 
			
		
	
		
			
				
					|  |  |  |  |         @teacher_list = @teacher_list.includes(:user).order("CONVERT(CONCAT(users.lastname, users.firstname) USING gbk) COLLATE gbk_chinese_ci asc") | 
			
		
	
		
			
				
					|  |  |  |  |         @teacher_list = @teacher_list.order("role #{sort}") | 
			
		
	
		
			
				
					|  |  |  |  |       when 2 | 
			
		
	
		
			
				
					|  |  |  |  |         @teacher_list = @teacher_list.order("created_at") | 
			
		
	
		
			
				
					|  |  |  |  |         @teacher_list = @teacher_list.includes(:user).order("CONVERT(CONCAT(users.lastname, users.firstname) USING gbk) COLLATE gbk_chinese_ci #{sort}") | 
			
		
	
		
			
				
					|  |  |  |  |       when 3 | 
			
		
	
		
			
				
					|  |  |  |  |         @teacher_list = @teacher_list.includes(:course, :graduation_group).order("graduation_groups.name") | 
			
		
	
		
			
				
					|  |  |  |  |         @teacher_list = @teacher_list.includes(:course, :graduation_group).order("graduation_groups.name #{sort}") | 
			
		
	
		
			
				
					|  |  |  |  |       else | 
			
		
	
		
			
				
					|  |  |  |  |         @teacher_list = @teacher_list.order("created_at") | 
			
		
	
		
			
				
					|  |  |  |  |         @teacher_list = @teacher_list.order("role #{sort}") | 
			
		
	
		
			
				
					|  |  |  |  |       end | 
			
		
	
		
			
				
					|  |  |  |  |     else | 
			
		
	
		
			
				
					|  |  |  |  |       if @has_graduation_design | 
			
		
	
		
			
				
					|  |  |  |  |         @teacher_list = @teacher_list.includes(:course, :graduation_group).order("graduation_groups.name") | 
			
		
	
		
			
				
					|  |  |  |  |       else | 
			
		
	
		
			
				
					|  |  |  |  |         @teacher_list = @teacher_list.order("created_at") | 
			
		
	
		
			
				
					|  |  |  |  |       end | 
			
		
	
		
			
				
					|  |  |  |  |       @teacher_list = @teacher_list.order("role #{sort}") | 
			
		
	
		
			
				
					|  |  |  |  |     end | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     @is_admin = @user_course_identity < Course::PROFESSOR | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     @applications = @is_admin ? CourseMessage.unhandled_join_course_requests_by_course(@course) : CourseMessage.none | 
			
		
	
		
			
				
					|  |  |  |  |     @applications_size = CourseMessage.unhandled_join_course_requests_by_course(@course).size | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     page = params[:page] || 1 | 
			
		
	
		
			
				
					|  |  |  |  |     limit = params[:limit] || 20 | 
			
		
	
		
			
				
					|  |  |  |  |     @teacher_list = @teacher_list.page(page).per(limit) | 
			
		
	
		
			
				
					|  |  |  |  |   end | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   def apply_teachers | 
			
		
	
		
			
				
					|  |  |  |  |     search_str = params[:search].present? ? params[:search].strip : "" | 
			
		
	
		
			
				
					|  |  |  |  |     @applications = CourseMessage.unhandled_join_course_requests_by_course(@course). | 
			
		
	
		
			
				
					|  |  |  |  |         joins("join users on course_messages.course_message_id=users.id"). | 
			
		
	
		
			
				
					|  |  |  |  |         where("LOWER(concat(users.lastname, users.firstname)) LIKE ?", "%#{search_str}%") | 
			
		
	
		
			
				
					|  |  |  |  |     @teacher_list_size = @course.teachers.size | 
			
		
	
		
			
				
					|  |  |  |  |     @applications_size = CourseMessage.unhandled_join_course_requests_by_course(@course).size | 
			
		
	
		
			
				
					|  |  |  |  |     @is_admin = @user_course_identity < Course::PROFESSOR | 
			
		
	
		
			
				
					|  |  |  |  |   end | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   # 打开添加教师或助教弹窗时访问的接口(需要返回该课堂所有答辩组和所有) | 
			
		
	
		
			
				
					|  |  |  |  |   def add_teacher_popup | 
			
		
	
		
			
				
					|  |  |  |  |     @graduation_groups = @course.graduation_groups | 
			
		
	
	
		
			
				
					|  |  |  | @ -577,6 +584,18 @@ class CoursesController < ApplicationController | 
			
		
	
		
			
				
					|  |  |  |  |           end | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |           new_teacher.save! | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |           # 课堂管理员才有分配权限,且课堂分班数大于0 | 
			
		
	
		
			
				
					|  |  |  |  |           if @user_course_identity < Course::PROFESSOR && @course.course_groups_count > 0 && params[:group_id] && params[:group_id].size > 0 | 
			
		
	
		
			
				
					|  |  |  |  |             # 分班全选则是不限,不需要做处理 | 
			
		
	
		
			
				
					|  |  |  |  |             unless @course.course_groups.where(id: params[:group_id]).size == @course.course_groups_count | 
			
		
	
		
			
				
					|  |  |  |  |               @course.course_groups.where(id: params[:group_id]).each do |group| | 
			
		
	
		
			
				
					|  |  |  |  |                 unless TeacherCourseGroup.where(course_id: @course.id, user_id: applier_user.id, course_group_id: group.id, course_member_id: new_teacher.id).exists? | 
			
		
	
		
			
				
					|  |  |  |  |                   TeacherCourseGroup.create(course_id: @course.id, user_id: applier_user.id, course_member_id: new_teacher.id, course_group_id: group.id) | 
			
		
	
		
			
				
					|  |  |  |  |                 end | 
			
		
	
		
			
				
					|  |  |  |  |               end | 
			
		
	
		
			
				
					|  |  |  |  |             end | 
			
		
	
		
			
				
					|  |  |  |  |           end | 
			
		
	
		
			
				
					|  |  |  |  |         elsif approval == 2 | 
			
		
	
		
			
				
					|  |  |  |  |           course_message.reject! | 
			
		
	
		
			
				
					|  |  |  |  |         else | 
			
		
	
	
		
			
				
					|  |  |  | 
 |