mirror of
https://github.com/edcommonwealth/sqm-dashboards.git
synced 2026-03-07 21:48:16 -08:00
Extract SurveyItemResponse.score_for_subcategory method from SubcategoryPresenter
This commit is contained in:
parent
2abf2d352a
commit
fa3241da65
2 changed files with 11 additions and 6 deletions
|
|
@ -6,10 +6,13 @@ class SurveyItemResponse < ActiveRecord::Base
|
|||
belongs_to :school
|
||||
belongs_to :survey_item
|
||||
|
||||
scope :for_measures, ->(measures) { joins(:survey_item).where('survey_items.measure_id': measures.map(&:id)) }
|
||||
scope :for_measure, ->(measure) { joins(:survey_item).where('survey_items.measure_id': measure.id) }
|
||||
scope :teacher_responses_for_measure, ->(measure) { for_measure(measure).where("survey_items.survey_item_id LIKE 't-%'") }
|
||||
scope :student_responses_for_measure, ->(measure) { for_measure(measure).where("survey_items.survey_item_id LIKE 's-%'") }
|
||||
|
||||
def self.score_for_subcategory(subcategory:, school:, academic_year:)
|
||||
SurveyItemResponse.for_measures(subcategory.measures)
|
||||
.where(academic_year: academic_year, school: school)
|
||||
.average(:likert_score)
|
||||
end
|
||||
|
||||
def self.score_for_measure(measure:, school:, academic_year:)
|
||||
return nil unless SurveyItemResponse.sufficient_data?(measure: measure, school: school, academic_year: academic_year)
|
||||
|
|
@ -21,6 +24,10 @@ class SurveyItemResponse < ActiveRecord::Base
|
|||
|
||||
private
|
||||
|
||||
scope :for_measures, ->(measures) { joins(:survey_item).where('survey_items.measure_id': measures.map(&:id)) }
|
||||
scope :teacher_responses_for_measure, ->(measure) { for_measure(measure).where("survey_items.survey_item_id LIKE 't-%'") }
|
||||
scope :student_responses_for_measure, ->(measure) { for_measure(measure).where("survey_items.survey_item_id LIKE 's-%'") }
|
||||
|
||||
def self.sufficient_data?(measure:, school:, academic_year:)
|
||||
meets_teacher_threshold = true
|
||||
meets_student_threshold = true
|
||||
|
|
|
|||
|
|
@ -22,9 +22,7 @@ class SubcategoryPresenter
|
|||
end
|
||||
|
||||
def average_score
|
||||
SurveyItemResponse.for_measures(measures)
|
||||
.where(academic_year: @academic_year, school: @school)
|
||||
.average(:likert_score)
|
||||
@average_score ||= SurveyItemResponse.score_for_subcategory(subcategory: @subcategory, school: @school, academic_year: @academic_year)
|
||||
end
|
||||
|
||||
def measure_presenters
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue