From 777f7562ecb17e3a21e669acc82ff582d3554001 Mon Sep 17 00:00:00 2001 From: natdeanlewissoftwire Date: Tue, 3 Oct 2023 11:17:44 +0100 Subject: [PATCH] feat: reject age_known fields and map codes and values to age fields instead --- app/services/csv/lettings_log_csv_service.rb | 19 ++++++++++++---- app/services/csv/sales_log_csv_service.rb | 24 ++++++++++++++++---- 2 files changed, 34 insertions(+), 9 deletions(-) diff --git a/app/services/csv/lettings_log_csv_service.rb b/app/services/csv/lettings_log_csv_service.rb index a034d6a04..c42d736d7 100644 --- a/app/services/csv/lettings_log_csv_service.rb +++ b/app/services/csv/lettings_log_csv_service.rb @@ -119,13 +119,19 @@ module Csv PERSON_DETAILS = {}.tap { |hash| (2..8).each do |i| - hash["age#{i}_known"] = { "refused_code" => "1", "refused_label" => "No", "details_known_field" => "details_known_#{i}" } + hash["age#{i}"] = { "refused_code" => "-9", "refused_label" => "Not known", "details_known_field" => "details_known_#{i}" } hash["sex#{i}"] = { "refused_code" => "R", "refused_label" => "Prefers not to say", "details_known_field" => "details_known_#{i}" } hash["relat#{i}"] = { "refused_code" => "R", "refused_label" => "Prefers not to say", "details_known_field" => "details_known_#{i}" } hash["ecstat#{i}"] = { "refused_code" => "10", "refused_label" => "Prefers not to say", "details_known_field" => "details_known_#{i}" } end }.freeze + AGE_KNOWN_FIELDS = {}.tap { |hash| + (2..8).each do |i| + hash["age#{i}"] = { "age_known_field" => "age#{i}_known" } + end + }.freeze + FIELDS_ALWAYS_EXPORTED_AS_CODES = %w[ la prevloc @@ -157,7 +163,7 @@ module Csv get_label(value, attribute, log) elsif DATE_FIELDS.include? attribute log.public_send(attribute)&.iso8601 - elsif PERSON_DETAILS.any? { |key, _value| key == attribute } && person_details_not_known?(log, attribute) + elsif (PERSON_DETAILS.any? { |key, _value| key == attribute } && person_details_not_known?(log, attribute)) || (AGE_KNOWN_FIELDS.any? { |key, _value| key == attribute } && age_not_known?(log, attribute) ) case @export_type when "codes" PERSON_DETAILS.find { |key, _value| key == attribute }[1]["refused_code"] @@ -219,7 +225,7 @@ module Csv def lettings_log_attributes ordered_questions = FormHandler.instance.ordered_lettings_questions_for_all_years - ordered_questions.reject! { |q| q.id.match?(/rent_value_check/) } + ordered_questions.reject! { |q| q.id.match?(/age\d_known|rent_value_check/) } attributes = ordered_questions.flat_map do |question| if question.type == "checkbox" question.answer_options.keys.reject { |key| key == "divider" } @@ -237,7 +243,12 @@ module Csv def person_details_not_known?(log, attribute) details_known_field = PERSON_DETAILS.find { |key, _value| key == attribute }[1]["details_known_field"] - log[details_known_field] == 1 + log[details_known_field] == 1 # 1 for lettings logs, 2 for sales logs + end + + def age_not_known?(log, attribute) + age_known_field = AGE_KNOWN_FIELDS.find { |key, _value| key == attribute }[1]["age_known_field"] + log[age_known_field] == 1 end end end diff --git a/app/services/csv/sales_log_csv_service.rb b/app/services/csv/sales_log_csv_service.rb index beeb19271..63140df34 100644 --- a/app/services/csv/sales_log_csv_service.rb +++ b/app/services/csv/sales_log_csv_service.rb @@ -49,8 +49,17 @@ module Csv }.freeze PERSON_DETAILS = {}.tap { |hash| - (1..6).each do |i| - hash["age#{i}_known"] = { "refused_code" => "-9", "refused_label" => "Not known", "details_known_field" => "details_known_#{i}" } + (2..6).each do |i| + hash["age#{i}"] = { "refused_code" => "-9", "refused_label" => "Not known", "details_known_field" => "details_known_#{i}" } + hash["sex#{i}"] = { "refused_code" => "R", "refused_label" => "Prefers not to say", "details_known_field" => "details_known_#{i}" } + hash["relat#{i}"] = { "refused_code" => "R", "refused_label" => "Prefers not to say", "details_known_field" => "details_known_#{i}" } + hash["ecstat#{i}"] = { "refused_code" => "10", "refused_label" => "Prefers not to say", "details_known_field" => "details_known_#{i}" } + end + }.freeze + + AGE_KNOWN_FIELDS = {}.tap { |hash| + (2..6).each do |i| + hash["age#{i}"] = { "age_known_field" => "age#{i}_known" } end }.freeze @@ -81,7 +90,7 @@ module Csv get_label(value, attribute, log) elsif DATE_FIELDS.include? attribute log.send(attribute)&.iso8601 - elsif PERSON_DETAILS.any? { |key, _value| key == attribute } && person_details_not_known?(log, attribute) + elsif (PERSON_DETAILS.any? { |key, _value| key == attribute } && person_details_not_known?(log, attribute)) || (AGE_KNOWN_FIELDS.any? { |key, _value| key == attribute } && age_not_known?(log, attribute) ) case @export_type when "codes" PERSON_DETAILS.find { |key, _value| key == attribute }[1]["refused_code"] @@ -125,7 +134,7 @@ module Csv def sales_log_attributes ordered_questions = FormHandler.instance.ordered_sales_questions_for_all_years - ordered_questions.reject! { |q| q.id.match?(/((?