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