sqm-dashboards/app/presenters/student_response_rate_presenter.rb
2024-12-13 13:55:05 -08:00

35 lines
1.3 KiB
Ruby

class StudentResponseRatePresenter < ResponseRatePresenter
def initialize(academic_year:, school:)
super(academic_year:, school:)
@survey_items = Measure.all.flat_map do |measure|
measure.student_survey_items_with_sufficient_responses(school:, academic_year:)
end
end
def actual_count
# Early ed surveys are given in batches so they have to be counted separately because we have to account for the same student having a different response id per batch
non_early_ed_items = survey_items - SurveyItem.early_education_survey_items
non_early_ed_count = response_count_for_survey_items(survey_items: non_early_ed_items)
early_ed_items = SurveyItem.early_education_survey_items
early_ed_count = SurveyItemResponse.where(school:, academic_year:,
survey_item: early_ed_items)
.group(:survey_item)
.select(:response_id)
.distinct
.count
.values.max || 0
non_early_ed_count + early_ed_count
end
def respondents_count
return 0 if respondents.nil?
enrollment
end
def focus
"student"
end
end