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