parent
b3eefa2779
commit
c2d15e1aa7
@ -0,0 +1,29 @@
|
|||||||
|
module Report
|
||||||
|
class MeasureByGrade
|
||||||
|
def self.create_report(schools:, academic_years: AcademicYear.all, measures: ::Measure.all.order(measure_id: :ASC), filename: "measure_by_grade.csv")
|
||||||
|
data = to_csv(schools:, academic_years:, measures:)
|
||||||
|
FileUtils.mkdir_p Rails.root.join("tmp", "reports")
|
||||||
|
filepath = Rails.root.join("tmp", "reports", filename)
|
||||||
|
write_csv(data:, filepath:)
|
||||||
|
data
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.to_csv(schools:, academic_years:, measures:)
|
||||||
|
::School.all.map do |school|
|
||||||
|
::AcademicYear.all.map do |academic_year|
|
||||||
|
::Measure.all.map do |measure|
|
||||||
|
next 0 if measure.student_survey_items.count.zero?
|
||||||
|
|
||||||
|
measure.student_survey_items.map do |survey_item|
|
||||||
|
::SurveyItemResponse.where(survey_item:, school: school, academic_year: academic_year).average(:likert_score).to_f.round(2)
|
||||||
|
end.remove_blanks.average
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.write_csv(data:, filepath:)
|
||||||
|
File.write(filepath, csv)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Loading…
Reference in new issue