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/services/survey_response_aggregator.rb

18 lines
765 B

class SurveyResponseAggregator
# Returns an average score for all SurveyItemResponses for the given AcademicYear, School, and Measure
def self.score(academic_year:, school:, measure:)
SurveyItemResponse
.where(academic_year: academic_year, school: school)
.joins(:survey_item).where('survey_items.measure_id': measure.id)
.map { |survey_item_response| survey_item_response.likert_score }
.average
end
# Returns an array of SurveyItemResponses for the given AcademicYear, School, and Measure
def self.find_responses_by_measure(academic_year:, school:, measure:)
SurveyItemResponse
.where(academic_year: academic_year, school: school)
.joins(:survey_item).where('survey_items.measure_id': measure.id)
end
end