mirror of
https://github.com/edcommonwealth/sqm-dashboards.git
synced 2026-03-08 23:18:18 -07:00
Add scopes to SurveyItem for selecting survey items by grade and
subcategory. Add notes to student response rate calculator
This commit is contained in:
parent
5e0ba556bf
commit
79f7915edf
3 changed files with 42 additions and 3 deletions
|
|
@ -1,8 +1,23 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class StudentResponseRateCalculator < ResponseRateCalculator
|
||||
def rate; end
|
||||
|
||||
private
|
||||
|
||||
# def rate
|
||||
# check to see if enrollment data is available
|
||||
# if not, run the dese loader to get the data
|
||||
# then upload the enrollment data into the db
|
||||
#
|
||||
# if you still don't see enrollment for the school, raise an error and return 100 from this method
|
||||
#
|
||||
# Get the enrollment information from the db
|
||||
# Get the list of all grades
|
||||
# For each grade, get the survey items with data
|
||||
#
|
||||
#
|
||||
# All methods below will need to specify a grade
|
||||
def survey_item_count
|
||||
@survey_item_count ||= begin
|
||||
survey_items = SurveyItem.includes(%i[scale
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ class Subcategory < ActiveRecord::Base
|
|||
belongs_to :category, counter_cache: true
|
||||
|
||||
has_many :measures
|
||||
has_many :survey_items, through: :measures
|
||||
|
||||
def score(school:, academic_year:)
|
||||
scores = measures.map do |measure|
|
||||
|
|
|
|||
|
|
@ -1,5 +1,14 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# SurveyItem.includes(%i[scale measure subcategory]).where("scale.measure.subcategory": subcategory).first.subcategory
|
||||
# SurveyItem.survey_items_for_grade_and_subcategory(school, academic_year, 0, subcategory)
|
||||
# SurveyItem.includes(:survey_item_responses)
|
||||
# .includes(:subcategory)
|
||||
# .where("survey_item_responses.grade": grade,
|
||||
# "survey_item_responses.school": school,
|
||||
# "survey_item_responses.academic_year": academic_year,
|
||||
# survey_item_id: subcategory.survey_items.pluck(:survey_item_id
|
||||
# )).count
|
||||
class SurveyItem < ActiveRecord::Base
|
||||
belongs_to :scale, counter_cache: true
|
||||
has_one :measure, through: :scale
|
||||
|
|
@ -32,12 +41,25 @@ class SurveyItem < ActiveRecord::Base
|
|||
includes(:survey_item_responses)
|
||||
.where("survey_item_responses.grade": grade,
|
||||
"survey_item_responses.school": school,
|
||||
"survey_item_responses.academic_year": academic_year)
|
||||
.pluck(:survey_item_id).to_set
|
||||
"survey_item_responses.academic_year": academic_year).distinct
|
||||
}
|
||||
|
||||
scope :survey_item_ids_for_grade, lambda { |school, academic_year, grade|
|
||||
survey_items_for_grade(school, academic_year, grade).pluck(:survey_item_id)
|
||||
}
|
||||
|
||||
scope :survey_items_for_grade_and_subcategory, lambda { |school, academic_year, grade, subcategory|
|
||||
includes(:survey_item_responses)
|
||||
.where(
|
||||
survey_item_id: subcategory.survey_items.pluck(:survey_item_id),
|
||||
"survey_item_responses.school": school,
|
||||
"survey_item_responses.academic_year": academic_year,
|
||||
"survey_item_responses.grade": grade
|
||||
)
|
||||
}
|
||||
|
||||
scope :survey_type_for_grade, lambda { |school, academic_year, grade|
|
||||
survey_items_set_by_grade = survey_items_for_grade(school, academic_year, grade)
|
||||
survey_items_set_by_grade = survey_items_for_grade(school, academic_year, grade).to_set
|
||||
if survey_items_set_by_grade.size > 0 && survey_items_set_by_grade.subset?(early_education_surveys.pluck(:survey_item_id).to_set)
|
||||
return :early_education
|
||||
end
|
||||
|
|
@ -45,6 +67,7 @@ class SurveyItem < ActiveRecord::Base
|
|||
:regular
|
||||
}
|
||||
|
||||
# Do I need this?
|
||||
def description
|
||||
DataAvailability.new(survey_item_id, prompt, true)
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue