feat: don't double count early ed students who are taking survey in parts

rpp-main
Nelson Jovel 2 years ago
parent ab8a3ebd98
commit b4e07434a1

@ -39,8 +39,35 @@ class ResponseRatePresenter
end end
def actual_count 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:, 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 end
def respondents_count def respondents_count

Loading…
Cancel
Save