diff --git a/app/models/form/question.rb b/app/models/form/question.rb index 18c1c6e82..aca00f8dd 100644 --- a/app/models/form/question.rb +++ b/app/models/form/question.rb @@ -2,7 +2,7 @@ class Form::Question attr_accessor :id, :header, :hint_text, :description, :questions, :type, :min, :max, :step, :width, :fields_to_add, :result_field, :conditional_for, :readonly, :answer_options, :page, :check_answer_label, - :inferred_answers, :hidden_in_check_answers + :inferred_answers, :hidden_in_check_answers, :inferred_check_answers_value def initialize(id, hsh, page) @id = id @@ -20,6 +20,7 @@ class Form::Question @answer_options = hsh["answer_options"] @conditional_for = hsh["conditional_for"] @inferred_answers = hsh["inferred_answers"] + @inferred_check_answers_value = hsh["inferred_check_answers_value"] @hidden_in_check_answers = hsh["hidden_in_check_answers"] @page = page end @@ -54,6 +55,11 @@ class Form::Question hidden_in_check_answers end + def has_inferred_check_answers_value?(case_log) + return inferred_check_answers_value["condition"].values[0] == case_log[inferred_check_answers_value["condition"].keys[0]] if inferred_check_answers_value.present? + false + end + def update_answer_link_name(case_log) if type == "checkbox" answer_options.keys.any? { |key| case_log[key] == "Yes" } ? "Change" : "Answer" diff --git a/app/models/form/subsection.rb b/app/models/form/subsection.rb index 922297bdf..0a41e69ae 100644 --- a/app/models/form/subsection.rb +++ b/app/models/form/subsection.rb @@ -52,7 +52,7 @@ class Form::Subsection end def applicable_questions(case_log) - questions.select { |q| q.page.routed_to?(case_log) && q.enabled?(case_log) && !q.hidden_in_check_answers? } + questions.select { |q| displayed_to_user?(case_log, q) || q.has_inferred_check_answers_value?(case_log) } end def answered_questions(case_log) @@ -62,4 +62,8 @@ class Form::Subsection def unanswered_questions(case_log) applicable_questions(case_log) - answered_questions(case_log) end + + def displayed_to_user?(case_log, q) + q.page.routed_to?(case_log) && q.enabled?(case_log) && !q.hidden_in_check_answers? + end end diff --git a/config/forms/2021_2022.json b/config/forms/2021_2022.json index eedd76873..a270b8df4 100644 --- a/config/forms/2021_2022.json +++ b/config/forms/2021_2022.json @@ -1153,7 +1153,11 @@ "hint_text": "", "type": "text", "width": 5, - "inferred_answers": { "la": { "is_la_inferred": true } } + "inferred_answers": { "la": { "is_la_inferred": true } }, + "inferred_check_answers_value": { + "condition": { "postcode_known": "No" }, + "value": "Not known" + } } } },