Browse Source

CLDC-4184: Commonise person question logic in sales

pull/3221/head
samyou-softwire 1 week ago
parent
commit
963272abc4
  1. 10
      app/models/form/question.rb
  2. 11
      app/models/form/sales/questions/gender_description.rb
  3. 11
      app/models/form/sales/questions/gender_same_as_sex.rb
  4. 7
      app/models/form/sales/questions/person_age.rb
  5. 7
      app/models/form/sales/questions/person_gender_identity.rb
  6. 8
      app/models/form/sales/questions/person_relationship_to_buyer_1_yes_no.rb
  7. 7
      app/models/form/sales/questions/person_sex_registered_at_birth.rb
  8. 7
      app/models/form/sales/questions/person_working_situation.rb

10
app/models/form/question.rb

@ -391,6 +391,16 @@ private
hash_value[value_key]
end
def get_person_question_number(base_hash, override_hash: nil)
buyer_override_question_number = override_hash&.dig(form.start_date.year, @person_index)
return buyer_override_question_number if buyer_override_question_number.present? && @buyer
base_question_number = base_hash[form.start_date.year] || base_hash[base_hash.keys.max]
base_question_number + (form.person_question_count * @person_index)
end
RADIO_YES_VALUE = {
renewal: [1],
postcode_known: [1],

11
app/models/form/sales/questions/gender_description.rb

@ -6,20 +6,11 @@ class Form::Sales::Questions::GenderDescription < ::Form::Question
@check_answers_card_number = person_index
@buyer = buyer
@person_index = person_index
@question_number = question_number
@question_number = get_person_question_number(BASE_QUESTION_NUMBERS, override_hash: BUYER_OVERRIDE_QUESTION_NUMBERS)
end
BASE_QUESTION_NUMBERS = { 2026 => 32 }.freeze
BUYER_OVERRIDE_QUESTION_NUMBERS = { 2026 => { 1 => 23, 2 => 32 } }.freeze
def question_number
buyer_override_question_number = BUYER_OVERRIDE_QUESTION_NUMBERS.dig(form.start_date.year, @person_index)
return buyer_override_question_number if buyer_override_question_number.present? && @buyer
base_question_number = BASE_QUESTION_NUMBERS[form.start_date.year] || BASE_QUESTION_NUMBERS[BASE_QUESTION_NUMBERS.keys.max]
base_question_number + (form.person_question_count * @person_index)
end
def derived?(log)
log.public_send("gender_same_as_sex#{@person_index}") != 2

11
app/models/form/sales/questions/gender_same_as_sex.rb

@ -9,20 +9,11 @@ class Form::Sales::Questions::GenderSameAsSex < ::Form::Question
@person_index = person_index
@buyer = buyer
@copy_key = "sales.household_characteristics.gender_same_as_sex#{person_index}.#{buyer ? 'buyer' : 'person'}" if person_index == 2
@question_number = question_number
@question_number = get_person_question_number(BASE_QUESTION_NUMBERS, override_hash: BUYER_OVERRIDE_QUESTION_NUMBERS)
end
BASE_QUESTION_NUMBERS = { 2026 => 32 }.freeze
BUYER_OVERRIDE_QUESTION_NUMBERS = { 2026 => { 1 => 23, 2 => 32 } }.freeze
def question_number
buyer_override_question_number = BUYER_OVERRIDE_QUESTION_NUMBERS.dig(form.start_date.year, @person_index)
return buyer_override_question_number if buyer_override_question_number.present? && @buyer
base_question_number = BASE_QUESTION_NUMBERS[form.start_date.year] || BASE_QUESTION_NUMBERS[BASE_QUESTION_NUMBERS.keys.max]
base_question_number + (form.person_question_count * @person_index)
end
def answer_options
{

7
app/models/form/sales/questions/person_age.rb

@ -13,13 +13,8 @@ class Form::Sales::Questions::PersonAge < ::Form::Question
@max = 110
@step = 1
@person_index = person_index
@question_number = question_number
@question_number = get_person_question_number(BASE_QUESTION_NUMBERS)
end
BASE_QUESTION_NUMBERS = { 2023 => 29, 2024 => 31, 2025 => 29, 2026 => 30 }.freeze
def question_number
base_question_number = BASE_QUESTION_NUMBERS[form.start_date.year] || BASE_QUESTION_NUMBERS[BASE_QUESTION_NUMBERS.keys.max]
base_question_number + (form.person_question_count * @person_index)
end
end

7
app/models/form/sales/questions/person_gender_identity.rb

@ -12,7 +12,7 @@ class Form::Sales::Questions::PersonGenderIdentity < ::Form::Question
"value" => "Prefers not to say",
}]
@person_index = person_index
@question_number = question_number
@question_number = get_person_question_number(BASE_QUESTION_NUMBERS)
end
ANSWER_OPTIONS = {
@ -23,9 +23,4 @@ class Form::Sales::Questions::PersonGenderIdentity < ::Form::Question
}.freeze
BASE_QUESTION_NUMBERS = { 2023 => 30, 2024 => 32, 2025 => 30 }.freeze
def question_number
base_question_number = BASE_QUESTION_NUMBERS[form.start_date.year] || BASE_QUESTION_NUMBERS[BASE_QUESTION_NUMBERS.keys.max]
base_question_number + (form.person_question_count * @person_index)
end
end

8
app/models/form/sales/questions/person_relationship_to_buyer_1_yes_no.rb

@ -16,13 +16,7 @@ class Form::Sales::Questions::PersonRelationshipToBuyer1YesNo < ::Form::Question
}]
@check_answers_card_number = person_index
@person_index = person_index
@question_number = question_number
end
def question_number
base_question_number = BASE_QUESTION_NUMBERS[form.start_date.year] || BASE_QUESTION_NUMBERS[BASE_QUESTION_NUMBERS.keys.max]
base_question_number + (form.person_question_count * @person_index)
@question_number = get_person_question_number(BASE_QUESTION_NUMBERS)
end
BASE_QUESTION_NUMBERS = { 2025 => 28, 2026 => 29 }.freeze

7
app/models/form/sales/questions/person_sex_registered_at_birth.rb

@ -6,7 +6,7 @@ class Form::Sales::Questions::PersonSexRegisteredAtBirth < ::Form::Question
@check_answers_card_number = person_index
@answer_options = ANSWER_OPTIONS
@person_index = person_index
@question_number = question_number
@question_number = get_person_question_number(BASE_QUESTION_NUMBERS)
end
ANSWER_OPTIONS = {
@ -17,11 +17,6 @@ class Form::Sales::Questions::PersonSexRegisteredAtBirth < ::Form::Question
}.freeze
BASE_QUESTION_NUMBERS = { 2023 => 30, 2024 => 32, 2025 => 31 }.freeze
def question_number
base_question_number = BASE_QUESTION_NUMBERS[form.start_date.year] || BASE_QUESTION_NUMBERS[BASE_QUESTION_NUMBERS.keys.max]
base_question_number + (form.person_question_count * @person_index)
end
def label_from_value(value, _log = nil, _user = nil)
return unless value

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

@ -11,7 +11,7 @@ class Form::Sales::Questions::PersonWorkingSituation < ::Form::Question
"value" => "Prefers not to say",
}]
@person_index = person_index
@question_number = question_number
@question_number = get_person_question_number(BASE_QUESTION_NUMBERS)
@answer_options = answer_options
end
@ -64,9 +64,4 @@ class Form::Sales::Questions::PersonWorkingSituation < ::Form::Question
end
BASE_QUESTION_NUMBERS = { 2023 => 31, 2024 => 33, 2025 => 31, 2026 => 33 }.freeze
def question_number
base_question_number = BASE_QUESTION_NUMBERS[form.start_date.year] || BASE_QUESTION_NUMBERS[BASE_QUESTION_NUMBERS.keys.max]
base_question_number + (form.person_question_count * @person_index)
end
end

Loading…
Cancel
Save