Browse Source

CLDC-4189: Add PRP flow

CLDC-4191-referral-question-csv-xml
Samuel Young 3 weeks ago
parent
commit
b4e18dcf66
  1. 8
      app/models/form/lettings/pages/referral_noms_hr.rb
  2. 15
      app/models/form/lettings/pages/referral_noms_la_hr.rb
  3. 15
      app/models/form/lettings/pages/referral_org.rb
  4. 15
      app/models/form/lettings/pages/referral_org_directly_referred.rb
  5. 15
      app/models/form/lettings/pages/referral_org_nominated.rb
  6. 2
      app/models/form/lettings/pages/referral_register_prp.rb
  7. 45
      app/models/form/lettings/questions/referral_noms.rb
  8. 81
      app/models/form/lettings/questions/referral_org.rb
  9. 17
      app/models/form/lettings/questions/referral_register.rb
  10. 6
      app/models/form/lettings/subsections/household_situation.rb
  11. 16
      app/models/lettings_log.rb

8
app/models/form/lettings/pages/referral_noms.rb → app/models/form/lettings/pages/referral_noms_hr.rb

@ -1,15 +1,15 @@
# added in 2026
class Form::Lettings::Pages::ReferralNoms < ::Form::Page
class Form::Lettings::Pages::ReferralNomsHr < ::Form::Page
def initialize(id, hsh, subsection)
super
@id = "referral_noms"
@id = "referral_noms_hr"
end
def questions
@questions ||= [Form::Lettings::Questions::ReferralNoms.new(nil, nil, self)]
@questions ||= [Form::Lettings::Questions::ReferralNoms.new(nil, nil, self, 7)]
end
def routed_to?(log, _current_user)
log.owning_organisation&.prp?
log.owning_organisation&.prp? && !log.is_renewal? && log.referral_is_from_housing_register?
end
end

15
app/models/form/lettings/pages/referral_noms_la_hr.rb

@ -0,0 +1,15 @@
# added in 2026
class Form::Lettings::Pages::ReferralNomsLaHr < ::Form::Page
def initialize(id, hsh, subsection)
super
@id = "referral_noms_la_hr"
end
def questions
@questions ||= [Form::Lettings::Questions::ReferralNoms.new(nil, nil, self, 6)]
end
def routed_to?(log, _current_user)
log.owning_organisation&.prp? && !log.is_renewal? && log.referral_is_from_local_authority_housing_register?
end
end

15
app/models/form/lettings/pages/referral_org.rb

@ -1,15 +0,0 @@
# added in 2026
class Form::Lettings::Pages::ReferralOrg < ::Form::Page
def initialize(id, hsh, subsection)
super
@id = "referral_org"
end
def questions
@questions ||= [Form::Lettings::Questions::ReferralOrg.new(nil, nil, self)]
end
def routed_to?(log, _current_user)
log.owning_organisation&.prp?
end
end

15
app/models/form/lettings/pages/referral_org_directly_referred.rb

@ -0,0 +1,15 @@
# added in 2026
class Form::Lettings::Pages::ReferralOrgDirectlyReferred < ::Form::Page
def initialize(id, hsh, subsection)
super
@id = "referral_org_directly_referred"
end
def questions
@questions ||= [Form::Lettings::Questions::ReferralOrg.new(nil, nil, self, 7)]
end
def routed_to?(log, _current_user)
log.owning_organisation&.prp? && !log.is_renewal? && log.referral_is_directly_referred?
end
end

15
app/models/form/lettings/pages/referral_org_nominated.rb

@ -0,0 +1,15 @@
# added in 2026
class Form::Lettings::Pages::ReferralOrgNominated < ::Form::Page
def initialize(id, hsh, subsection)
super
@id = "referral_org_nominated"
end
def questions
@questions ||= [Form::Lettings::Questions::ReferralOrg.new(nil, nil, self, 1)]
end
def routed_to?(log, _current_user)
log.owning_organisation&.prp? && !log.is_renewal? && log.referral_is_nominated_by_local_authority?
end
end

2
app/models/form/lettings/pages/referral_register_prp.rb

@ -10,6 +10,6 @@ class Form::Lettings::Pages::ReferralRegisterPrp < ::Form::Page
end
def routed_to?(log, _current_user)
log.owning_organisation&.prp?
log.owning_organisation&.prp? && !log.is_renewal?
end
end

45
app/models/form/lettings/questions/referral_noms.rb

@ -1,23 +1,48 @@
# added in 2026
class Form::Lettings::Questions::ReferralNoms < ::Form::Question
def initialize(id, hsh, page)
super
def initialize(id, hsh, page, referral_register)
super(id, hsh, page)
@id = "referral_noms"
@copy_key = "lettings.household_situation.referral.noms"
@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]
@referral_register = referral_register
end
def answer_options
{
"1" => {
"value" => "Answer A",
},
"2" => {
"value" => "Answer B",
},
}.freeze
case @referral_register
when 6
{
"1" => {
"value" => "Nominated by a local authority to a PRP",
},
"2" => {
"value" => "Supported housing only - referred by a local authority to a PRP",
},
"3" => {
"value" => "Internal transfer from another property owned by the same PRP landlord - for existing social tenants only",
},
"4" => {
"value" => "Other",
},
}.freeze
when 7
{
"5" => {
"value" => "Internal transfer from another property owned by the same PRP landlord - for existing social tenants only",
},
"6" => {
"value" => " A different PRP landlord - for existing socail tenants only",
},
"7" => {
"value" => "Directly referred by a third party",
},
"8" => {
"value" => "Other",
},
}.freeze
end
end
QUESTION_NUMBER_FROM_YEAR = { 2026 => 84 }.freeze

81
app/models/form/lettings/questions/referral_org.rb

@ -1,23 +1,84 @@
# added in 2026
class Form::Lettings::Questions::ReferralOrg < ::Form::Question
def initialize(id, hsh, page)
super
def initialize(id, hsh, page, referral_noms)
super(id, hsh, page)
@id = "referral_org"
@copy_key = "lettings.household_situation.referral.org"
@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]
@referral_noms = referral_noms
end
def answer_options
{
"1" => {
"value" => "Answer A",
},
"2" => {
"value" => "Answer B",
},
}.freeze
case @referral_noms
when 1
{
"1" => {
"value" => "Referred to LA by health service",
},
"2" => {
"value" => "Referred to LA by community learning disability team",
},
"3" => {
"value" => "Referred to LA by community mental health team",
},
"4" => {
"value" => "Referred to LA by adult social services",
},
"5" => {
"value" => "Referred to LA by children's social care",
},
"6" => {
"value" => "Referred to LA by police, probation, prison or youth offending team following a custodial sentence",
},
"7" => {
"value" => "Referred to LA by police, probation, prison or youth offending team without a custodial sentence",
},
"8" => {
"value" => "Referred to LA by a voluntary agency",
},
"9" => {
"value" => "Other referral",
},
"10" => {
"value" => "Don't know",
},
}.freeze
when 7
{
"11" => {
"value" => "Health service",
},
"12" => {
"value" => "Community learning disability team",
},
"13" => {
"value" => "Community mental health team",
},
"14" => {
"value" => "Adult social services",
},
"15" => {
"value" => "Children's social care",
},
"16" => {
"value" => "Police, probation, prison or youth offending team following a custodial sentence",
},
"17" => {
"value" => "Police, probation, prison or youth offending team without a custodial sentence",
},
"18" => {
"value" => "Voluntary agency",
},
"19" => {
"value" => "Other third party",
},
"20" => {
"value" => "Don't know",
},
}.freeze
end
end
QUESTION_NUMBER_FROM_YEAR = { 2026 => 84 }.freeze

17
app/models/form/lettings/questions/referral_register.rb

@ -28,11 +28,20 @@ class Form::Lettings::Questions::ReferralRegister < ::Form::Question
}.freeze
else
{
"1" => {
"value" => "Answer A",
"5" => {
"value" => "Renewal to the same tenant in the same property",
},
"2" => {
"value" => "Answer B",
"6" => {
"value" => "From a local authority housing register (waiting list) or a register with local authority involvement",
},
"7" => {
"value" => "From a housing register (waiting list) with no local authority involvement",
},
"8" => {
"value" => "Tenant applied directly (not via a nomination or waiting list)",
},
"9" => {
"value" => "Don't know",
},
}.freeze
end

6
app/models/form/lettings/subsections/household_situation.rb

@ -30,8 +30,10 @@ class Form::Lettings::Subsections::HouseholdSituation < ::Form::Subsection
[
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),
Form::Lettings::Pages::ReferralNomsLaHr.new(nil, nil, self),
Form::Lettings::Pages::ReferralNomsHr.new(nil, nil, self),
Form::Lettings::Pages::ReferralOrgNominated.new(nil, nil, self),
Form::Lettings::Pages::ReferralOrgDirectlyReferred.new(nil, nil, self),
]
elsif form.start_year_2025_or_later?
[

16
app/models/lettings_log.rb

@ -778,6 +778,22 @@ class LettingsLog < Log
rsnvac != 15 && rsnvac_was == 15
end
def referral_is_from_local_authority_housing_register?
referral_register == 6
end
def referral_is_from_housing_register?
referral_register == 7
end
def referral_is_nominated_by_local_authority?
referral_is_from_local_authority_housing_register? && referral_noms == 1
end
def referral_is_directly_referred?
referral_is_from_housing_register? && referral_noms == 7
end
private
def reset_invalid_unresolved_log_fields!

Loading…
Cancel
Save