Browse Source

Extract person methods to parent class

CLDC-1530-working-situation
Kat 2 years ago
parent
commit
baafe077fd
  1. 12
      app/models/form/page.rb
  2. 12
      app/models/form/question.rb
  3. 16
      app/models/form/sales/pages/person_working_situation.rb
  4. 18
      app/models/form/sales/questions/person_working_situation.rb

12
app/models/form/page.rb

@ -34,6 +34,18 @@ class Form::Page
private private
def person_database_number(person_index)
person_index[id]
end
def person_display_number(person_index)
joint_purchase? ? person_index[id] - 2 : person_index[id] - 1
end
def joint_purchase?
id.include?("_joint_purchase")
end
def conditional_question_ids def conditional_question_ids
@conditional_question_ids ||= questions.flat_map { |q| @conditional_question_ids ||= questions.flat_map { |q|
next if q.conditional_for.blank? next if q.conditional_for.blank?

12
app/models/form/question.rb

@ -259,6 +259,18 @@ class Form::Question
private private
def person_database_number(person_index)
person_index[id]
end
def person_display_number(person_index)
joint_purchase? ? person_index[id] - 2 : person_index[id] - 1
end
def joint_purchase?
page.id.include?("_joint_purchase")
end
def selected_answer_option_is_derived?(log) def selected_answer_option_is_derived?(log)
selected_option = answer_options&.dig(log[id].to_s.presence) selected_option = answer_options&.dig(log[id].to_s.presence)
selected_option.is_a?(Hash) && selected_option["depends_on"] && form.depends_on_met(selected_option["depends_on"], log) selected_option.is_a?(Hash) && selected_option["depends_on"] && form.depends_on_met(selected_option["depends_on"], log)

16
app/models/form/sales/pages/person_working_situation.rb

@ -5,28 +5,16 @@ class Form::Sales::Pages::PersonWorkingSituation < ::Form::Page
@description = "" @description = ""
@subsection = subsection @subsection = subsection
@depends_on = [ @depends_on = [
{ "details_known_#{person_display_number}" => 1, "jointpur" => joint_purchase? ? 1 : 2 }, { "details_known_#{person_display_number(PERSON_INDEX)}" => 1, "jointpur" => joint_purchase? ? 1 : 2 },
] ]
end end
def questions def questions
@questions ||= [ @questions ||= [
Form::Sales::Questions::PersonWorkingSituation.new("ecstat#{person_database_number}", nil, self), Form::Sales::Questions::PersonWorkingSituation.new("ecstat#{person_database_number(PERSON_INDEX)}", nil, self),
] ]
end end
def person_database_number
PERSON_INDEX[id]
end
def person_display_number
joint_purchase? ? PERSON_INDEX[id] - 2 : PERSON_INDEX[id] - 1
end
def joint_purchase?
id.include?("_joint_purchase")
end
PERSON_INDEX = { PERSON_INDEX = {
"person_1_working_situation" => 2, "person_1_working_situation" => 2,
"person_2_working_situation" => 3, "person_2_working_situation" => 3,

18
app/models/form/sales/questions/person_working_situation.rb

@ -1,12 +1,12 @@
class Form::Sales::Questions::PersonWorkingSituation < ::Form::Question class Form::Sales::Questions::PersonWorkingSituation < ::Form::Question
def initialize(id, hsh, page) def initialize(id, hsh, page)
super super
@check_answer_label = "Person #{person_display_number}’s working situation" @check_answer_label = "Person #{person_display_number(PERSON_INDEX)}’s working situation"
@header = "Which of these best describes Person #{person_display_number}’s working situation?" @header = "Which of these best describes Person #{person_display_number(PERSON_INDEX)}’s working situation?"
@type = "radio" @type = "radio"
@page = page @page = page
@answer_options = ANSWER_OPTIONS @answer_options = ANSWER_OPTIONS
@check_answers_card_number = person_database_number @check_answers_card_number = person_database_number(PERSON_INDEX)
end end
ANSWER_OPTIONS = { ANSWER_OPTIONS = {
@ -23,10 +23,6 @@ class Form::Sales::Questions::PersonWorkingSituation < ::Form::Question
"9" => { "value" => "Child under 16" }, "9" => { "value" => "Child under 16" },
}.freeze }.freeze
def person_database_number
PERSON_INDEX[id]
end
PERSON_INDEX = { PERSON_INDEX = {
"ecstat2" => 2, "ecstat2" => 2,
"ecstat3" => 3, "ecstat3" => 3,
@ -34,12 +30,4 @@ class Form::Sales::Questions::PersonWorkingSituation < ::Form::Question
"ecstat5" => 5, "ecstat5" => 5,
"ecstat6" => 6, "ecstat6" => 6,
}.freeze }.freeze
def person_display_number
joint_purchase? ? PERSON_INDEX[id] - 2 : PERSON_INDEX[id] - 1
end
def joint_purchase?
page.id.include?("_joint_purchase")
end
end end

Loading…
Cancel
Save