diff --git a/app/presenters/response_rate_presenter.rb b/app/presenters/response_rate_presenter.rb index bcb44a53..5865ffc6 100644 --- a/app/presenters/response_rate_presenter.rb +++ b/app/presenters/response_rate_presenter.rb @@ -39,8 +39,35 @@ class ResponseRatePresenter end def actual_count + if focus == :teacher + response_count_for_survey_items(survey_items:) + else + 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 = survey_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 + .reduce(0) do |largest, row| + count = row[1] + if count > largest + count + else + largest + end + end + + non_early_ed_count + early_ed_count + end + end + + def response_count_for_survey_items(survey_items:) SurveyItemResponse.where(school:, academic_year:, - survey_item: survey_items).select(:response_id).distinct.count + survey_item: survey_items).select(:response_id).distinct.count || 0 end def respondents_count