@ -3,13 +3,25 @@ class SurveyItemValues
def initialize ( row : , headers : , genders : , survey_items : , schools : , disaggregation_data : nil )
def initialize ( row : , headers : , genders : , survey_items : , schools : , disaggregation_data : nil )
@row = row
@row = row
@headers = headers
@headers = include_all_ headers( headers : )
@genders = genders
@genders = genders
@survey_items = survey_items
@survey_items = survey_items
@schools = schools
@schools = schools
@disaggregation_data = disaggregation_data
@disaggregation_data = disaggregation_data
end
end
# Some survey items have variants, i.e. a survey item with an id of s-tint-q1 might have a variant that looks like s-tint-q1-1. We must ensure that all variants in the form of s-tint-q1-1 have a matching pair.
# We don't ensure that ids in the form of s-tint-q1 have a matching pair because not all questions have variants
def include_all_headers ( headers : )
alternates = headers . filter ( & :present? )
. filter { | header | header . end_with? " -1 " }
alternates . each do | header |
main = header . sub ( / -1 \ z / , " " )
headers . push ( main ) unless headers . include? ( main )
end
headers
end
def dese_id?
def dese_id?
dese_id . present?
dese_id . present?
end
end
@ -110,7 +122,7 @@ class SurveyItemValues
@raw_income || = disaggregation . income
@raw_income || = disaggregation . income
end
end
# TODO - rename these cases
# TODO : - rename these cases
def income
def income
@income || = value_from ( pattern : / ^Income$ /i )
@income || = value_from ( pattern : / ^Income$ /i )
return @income if @income . present?
return @income if @income . present?