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.
		
		
		
		
		
			
		
			
				
					
					
						
							21 lines
						
					
					
						
							893 B
						
					
					
				
			
		
		
	
	
							21 lines
						
					
					
						
							893 B
						
					
					
				| class StatisticSchoolReportTask
 | |
|   def call
 | |
|     School.find_each do |school|
 | |
|       evaluate_count = Game.joins(:challenge)
 | |
|                            .joins('LEFT JOIN members ON members.user_id = games.user_id')
 | |
|                            .joins('LEFT JOIN homework_commons_shixuns hcs ON hcs.shixun_id = challenges.shixun_id')
 | |
|                            .joins('LEFT JOIN homework_commons hc ON hcs.homework_common_id = hc.id AND hc.homework_type = 4')
 | |
|                            .joins('LEFT JOIN courses ON hc.course_id = courses.id AND members.course_id = courses.id')
 | |
|                            .where(courses: { school_id: school.id })
 | |
|                            .sum(:evaluate_count)
 | |
| 
 | |
|       report = SchoolReport.find_or_initialize_by(school_id: school.id)
 | |
| 
 | |
|       report.school_name = school.name
 | |
|       report.shixun_evaluate_count = evaluate_count
 | |
| 
 | |
|       report.save
 | |
|     end
 | |
|   end
 | |
| end
 |