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.
		
		
		
		
		
			
		
			
				
					
					
						
							76 lines
						
					
					
						
							2.7 KiB
						
					
					
				
			
		
		
	
	
							76 lines
						
					
					
						
							2.7 KiB
						
					
					
				| class Ecs::EcCoursesController < Ecs::BaseController
 | |
|   before_action :check_major_manager_permission!, only: [:create, :import, :destroy]
 | |
| 
 | |
|   def index
 | |
|     ec_courses = current_year.ec_courses
 | |
| 
 | |
|     @count = ec_courses.count
 | |
| 
 | |
|     @ec_courses = paginate ec_courses.includes(:course_managers)
 | |
| 
 | |
|     course_ids = @ec_courses.map(&:id)
 | |
|     # 课程目标数
 | |
|     @target_count_map             = EcCourseTarget.where(ec_course_id: course_ids).group(:ec_course_id).count
 | |
|     # 考核方式数
 | |
|     @evaluation_count_map         = EcCourseEvaluation.where(ec_course_id: course_ids).group(:ec_course_id).count
 | |
|     # 评价方法数
 | |
|     @achievement_method_count_map = EcCourseAchievementMethod.where(ec_course_id: course_ids).group(:ec_course_id).count
 | |
|     # 毕业目标数
 | |
|     @graduation_subitem_count_map = EcGraduationSubitemCourseTarget.joins(:ec_course_target)
 | |
|                                       .where(ec_course_targets: { ec_course_id: course_ids })
 | |
|                                       .group('ec_course_targets.ec_course_id')
 | |
|                                       .count('distinct ec_graduation_subitem_id')
 | |
|     # 已达成毕业目标数
 | |
|     @completed_subitem_count_map = EcCourseSupport.joins(:ec_graduation_requirement_calculation)
 | |
|                                      .where(ec_course_id: course_ids)
 | |
|                                      .where(ec_graduation_requirement_calculations: { status: 1 })
 | |
|                                      .group('ec_course_supports.ec_course_id')
 | |
|                                      .count('distinct ec_graduation_subitem_id')
 | |
|   end
 | |
| 
 | |
|   def search
 | |
|     ec_courses = current_year.ec_courses
 | |
| 
 | |
|     search = params[:search].to_s.strip
 | |
|     if search
 | |
|       ec_courses = ec_courses.where('name LIKE ?', "%#{search}%")
 | |
|     end
 | |
| 
 | |
|     @count      = ec_courses.count
 | |
|     @ec_courses = paginate ec_courses
 | |
|   end
 | |
| 
 | |
|   def create
 | |
|     create_params = params.permit(:name)
 | |
|     @ec_course = Ecs::CreateCourseService.call(current_year, create_params)
 | |
|   rescue Ecs::CreateCourseService::Error => ex
 | |
|     render_error(ex.message)
 | |
|   end
 | |
| 
 | |
|   def destroy
 | |
|     current_course.destroy!
 | |
|     render_ok
 | |
|   end
 | |
| 
 | |
|   def import
 | |
|     success_count = Ecs::ImportCourseService.call(current_year, params[:attachment_id])
 | |
|     render_ok(success_count: success_count)
 | |
|   rescue Ecs::ImportCourseService::Error => ex
 | |
|     render_error(ex.message)
 | |
|   end
 | |
| 
 | |
|   def link_course
 | |
|     link_params = params.permit(:course_id)
 | |
|     Ecs::LinkCourseService.call(current_course, link_params)
 | |
|     render_ok
 | |
|   rescue Ecs::LinkCourseService::Error => ex
 | |
|     render_error(ex.message)
 | |
|   end
 | |
| 
 | |
|   private
 | |
| 
 | |
|   def current_course
 | |
|     @_current_course ||= current_year.ec_courses.find(params[:id])
 | |
|   end
 | |
| end
 |