From c4b21909996cd2c643e9fa55319a94b2bb18a500 Mon Sep 17 00:00:00 2001 From: Samuel Young Date: Thu, 29 Jan 2026 10:53:17 +0000 Subject: [PATCH] CLDC-4188: Add LA flow splits the referral_register question and pages into two, as its not easy to have the answers be dependent if the owning organisation changes type, reset the referral register question. the other questions do not need to be reset as they are no longer routed to --- .../form/lettings/pages/referral_noms.rb | 4 ++ .../form/lettings/pages/referral_org.rb | 4 ++ .../form/lettings/pages/referral_register.rb | 11 ------ .../lettings/pages/referral_register_la.rb | 15 ++++++++ .../lettings/pages/referral_register_prp.rb | 15 ++++++++ .../lettings/questions/referral_register.rb | 38 ++++++++++++++----- .../subsections/household_situation.rb | 3 +- app/models/lettings_log.rb | 13 +++++++ 8 files changed, 81 insertions(+), 22 deletions(-) delete mode 100644 app/models/form/lettings/pages/referral_register.rb create mode 100644 app/models/form/lettings/pages/referral_register_la.rb create mode 100644 app/models/form/lettings/pages/referral_register_prp.rb diff --git a/app/models/form/lettings/pages/referral_noms.rb b/app/models/form/lettings/pages/referral_noms.rb index af1590676..fa811e961 100644 --- a/app/models/form/lettings/pages/referral_noms.rb +++ b/app/models/form/lettings/pages/referral_noms.rb @@ -8,4 +8,8 @@ class Form::Lettings::Pages::ReferralNoms < ::Form::Page def questions @questions ||= [Form::Lettings::Questions::ReferralNoms.new(nil, nil, self)] end + + def routed_to?(log, _current_user) + log.owning_organisation&.prp? + end end diff --git a/app/models/form/lettings/pages/referral_org.rb b/app/models/form/lettings/pages/referral_org.rb index 8d3aa2b7d..fe23140d8 100644 --- a/app/models/form/lettings/pages/referral_org.rb +++ b/app/models/form/lettings/pages/referral_org.rb @@ -8,4 +8,8 @@ class Form::Lettings::Pages::ReferralOrg < ::Form::Page def questions @questions ||= [Form::Lettings::Questions::ReferralOrg.new(nil, nil, self)] end + + def routed_to?(log, _current_user) + log.owning_organisation&.prp? + end end diff --git a/app/models/form/lettings/pages/referral_register.rb b/app/models/form/lettings/pages/referral_register.rb deleted file mode 100644 index e835b3c1c..000000000 --- a/app/models/form/lettings/pages/referral_register.rb +++ /dev/null @@ -1,11 +0,0 @@ -# added in 2026 -class Form::Lettings::Pages::ReferralRegister < ::Form::Page - def initialize(id, hsh, subsection) - super - @id = "referral_register" - end - - def questions - @questions ||= [Form::Lettings::Questions::ReferralRegister.new(nil, nil, self)] - end -end diff --git a/app/models/form/lettings/pages/referral_register_la.rb b/app/models/form/lettings/pages/referral_register_la.rb new file mode 100644 index 000000000..ae1266b8e --- /dev/null +++ b/app/models/form/lettings/pages/referral_register_la.rb @@ -0,0 +1,15 @@ +# added in 2026 +class Form::Lettings::Pages::ReferralRegisterLa < ::Form::Page + def initialize(id, hsh, subsection) + super + @id = "referral_register_la" + end + + def questions + @questions ||= [Form::Lettings::Questions::ReferralRegister.new(nil, nil, self, :la)] + end + + def routed_to?(log, _current_user) + log.owning_organisation&.la? + end +end diff --git a/app/models/form/lettings/pages/referral_register_prp.rb b/app/models/form/lettings/pages/referral_register_prp.rb new file mode 100644 index 000000000..7191937c8 --- /dev/null +++ b/app/models/form/lettings/pages/referral_register_prp.rb @@ -0,0 +1,15 @@ +# added in 2026 +class Form::Lettings::Pages::ReferralRegisterPrp < ::Form::Page + def initialize(id, hsh, subsection) + super + @id = "referral_register_prp" + end + + def questions + @questions ||= [Form::Lettings::Questions::ReferralRegister.new(nil, nil, self, :prp)] + end + + def routed_to?(log, _current_user) + log.owning_organisation&.prp? + end +end diff --git a/app/models/form/lettings/questions/referral_register.rb b/app/models/form/lettings/questions/referral_register.rb index d7c653181..214748323 100644 --- a/app/models/form/lettings/questions/referral_register.rb +++ b/app/models/form/lettings/questions/referral_register.rb @@ -1,23 +1,41 @@ # added in 2026 class Form::Lettings::Questions::ReferralRegister < ::Form::Question - def initialize(id, hsh, page) - super + def initialize(id, hsh, page, provider_type) + super(id, hsh, page) @id = "referral_register" @copy_key = "lettings.household_situation.referral.register" @type = "radio" @check_answers_card_number = 0 @question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max] + @provider_type = provider_type end def answer_options - { - "1" => { - "value" => "Answer A", - }, - "2" => { - "value" => "Answer B", - }, - }.freeze + if @provider_type == :la + { + "1" => { + "value" => "Renewal to the same tenant in the same property", + }, + "2" => { + "value" => "Internal transfer from another property owned by the same local authority - for existing social tenants only", + }, + "3" => { + "value" => "From a housing register (waiting list)", + }, + "4" => { + "value" => "Tenant applied directly (not via a nomination or housing register)", + }, + }.freeze + else + { + "1" => { + "value" => "Answer A", + }, + "2" => { + "value" => "Answer B", + }, + }.freeze + end end QUESTION_NUMBER_FROM_YEAR = { 2026 => 84 }.freeze diff --git a/app/models/form/lettings/subsections/household_situation.rb b/app/models/form/lettings/subsections/household_situation.rb index 948ab7611..be99907a0 100644 --- a/app/models/form/lettings/subsections/household_situation.rb +++ b/app/models/form/lettings/subsections/household_situation.rb @@ -28,7 +28,8 @@ class Form::Lettings::Subsections::HouseholdSituation < ::Form::Subsection def referral_questions if form.start_year_2026_or_later? [ - Form::Lettings::Pages::ReferralRegister.new(nil, nil, self), + Form::Lettings::Pages::ReferralRegisterLa.new(nil, nil, self), + Form::Lettings::Pages::ReferralRegisterPrp.new(nil, nil, self), Form::Lettings::Pages::ReferralNoms.new(nil, nil, self), Form::Lettings::Pages::ReferralOrg.new(nil, nil, self), ] diff --git a/app/models/lettings_log.rb b/app/models/lettings_log.rb index f2230c4e5..c31d2173f 100644 --- a/app/models/lettings_log.rb +++ b/app/models/lettings_log.rb @@ -35,6 +35,7 @@ class LettingsLog < Log before_validation :set_derived_fields! before_validation :process_uprn_change!, if: :should_process_uprn_change? before_validation :process_address_change!, if: :should_process_address_change? + before_validation :reset_referral_register!, if: :should_reset_referral_register? belongs_to :scheme, optional: true belongs_to :location, optional: true @@ -947,4 +948,16 @@ private uprn_selection_changed? || startdate_changed? end end + + def reset_referral_register! + self.referral_register = nil + end + + def should_reset_referral_register? + return unless owning_organisation_id_changed? && owning_organisation_id && owning_organisation_id_was + + old_owning_organisation = Organisation.find(owning_organisation_id_was) + + old_owning_organisation.provider_type != owning_organisation.provider_type + end end