Browse Source

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
CLDC-4151-new-referral-questions
Samuel Young 3 weeks ago
parent
commit
c4b2190999
  1. 4
      app/models/form/lettings/pages/referral_noms.rb
  2. 4
      app/models/form/lettings/pages/referral_org.rb
  3. 11
      app/models/form/lettings/pages/referral_register.rb
  4. 15
      app/models/form/lettings/pages/referral_register_la.rb
  5. 15
      app/models/form/lettings/pages/referral_register_prp.rb
  6. 38
      app/models/form/lettings/questions/referral_register.rb
  7. 3
      app/models/form/lettings/subsections/household_situation.rb
  8. 13
      app/models/lettings_log.rb

4
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

4
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

11
app/models/form/lettings/pages/referral_register.rb

@ -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

15
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

15
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

38
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

3
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),
]

13
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

Loading…
Cancel
Save