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.
sqm-dashboards/app/models/report/gps.rb

47 lines
2.4 KiB

module Report
class Gps
def self.to_csv
headers = ["School", "Pillar", "Indicator", "Period", "HALS Category", "Ref.", "Score", "Zone"]
attributes = %w[school_name pillar indicator period category measure_ids score zone]
pillars = generate_pillars
CSV.generate(headers: true) do |csv|
csv << headers
pillars.each do |gps|
csv << attributes.map { |attr| gps.send(attr) }
end
end
end
def self.generate_pillars
schools = School.all
academic_years = AcademicYear.order(range: :desc).first(2)
periods = %w[Current Previous]
[].tap do |pillars|
academic_years.zip(periods).each do |academic_year, period|
schools.each do |school|
INDICATORS.each do |indicator, measures|
pillars << Pillar.new(school:, measures:, indicator:, period:, academic_year:)
end
end
end
end
end
INDICATORS =
{ "Teaching Environment": [::Measure.includes(%i[subcategory admin_data_items]).find_by_measure_id("1A-iii"), ::Measure.includes(%i[subcategory admin_data_items]).find_by_measure_id("1B-ii")],
"Safety": ::Subcategory.find_by_subcategory_id("2A").measures.includes(:admin_data_items),
"Relationships": ::Subcategory.find_by_subcategory_id("2B").measures.includes(:admin_data_items),
"Academic Orientation": ::Subcategory.find_by_subcategory_id("2C").measures.includes(:admin_data_items),
"Facilities & Personnel": ::Subcategory.find_by_subcategory_id("3A").measures.includes(:admin_data_items),
"Family-School Relationships": [::Measure.includes(%i[subcategory
admin_data_items]).find_by_measure_id("3C-i")],
"Community Involvement & External Partners": [::Measure.includes(%i[subcategory
admin_data_items]).find_by_measure_id("3C-ii")],
"Perception of Performance": ::Subcategory.find_by_subcategory_id("4A").measures.includes(:admin_data_items),
"Student Commitment To Learning": ::Subcategory.find_by_subcategory_id("4B").measures.includes(:admin_data_items),
"Critical Thinking": ::Subcategory.find_by_subcategory_id("4C").measures.includes(:admin_data_items),
"College & Career Readiness": ::Subcategory.find_by_subcategory_id("4D").measures.includes(:admin_data_items) }
end
end