Browse Source

Add address search input boolean and switch between questions

CLDC-3787-Autocomplete-address-search
Manny Dinssa 5 days ago
parent
commit
6dda6f9337
  1. 8
      app/controllers/address_search_controller.rb
  2. 18
      app/models/derived_variables/lettings_log_variables.rb
  3. 61
      app/models/derived_variables/sales_log_variables.rb
  4. 9
      app/models/form/lettings/pages/address_fallback.rb
  5. 4
      app/models/form/lettings/pages/address_search.rb
  6. 9
      app/models/form/sales/pages/address_fallback.rb
  7. 4
      app/models/form/sales/pages/address_search.rb
  8. 4
      app/models/log.rb
  9. 6
      db/migrate/20250214133727_add_address_search_input_to_logs.rb
  10. 4
      db/schema.rb

8
app/controllers/address_search_controller.rb

@ -53,17 +53,13 @@ class AddressSearchController < ApplicationController
def manual_input
log = params[:log_type] == "lettings_log" ? LettingsLog.find(params[:log_id]) : SalesLog.find(params[:log_id])
log.update!(uprn: nil, uprn_known: 0, uprn_confirmed: nil, address_search: nil)
log.update!(address_search_input: false)
redirect_to manual_address_link(log)
end
def search_input
log = params[:log_type] == "lettings_log" ? LettingsLog.find(params[:log_id]) : SalesLog.find(params[:log_id])
if log.log_type == "lettings_log"
log.update!(uprn: nil, uprn_known: 0, uprn_confirmed: nil, address_search: nil, address_line1: nil, address_line2: nil, town_or_city: nil, county: nil, postcode_full: nil, is_la_inferred: false)
else
log.update!(uprn: nil, uprn_known: 0, uprn_confirmed: nil, address_search: nil, address_line1: nil, address_line2: nil, town_or_city: nil, county: nil, postcode_full: nil, is_la_inferred: false, pcode1: nil, pcode2: nil)
end
log.update!(address_search_input: true)
redirect_to search_address_link(log)
end

18
app/models/derived_variables/lettings_log_variables.rb

@ -114,21 +114,15 @@ module DerivedVariables::LettingsLogVariables
self.previous_la_known = nil if is_renewal?
end
if address_search
if address_search_input
self.uprn = address_search
if uprn_known_was == 1
self.address_line1 = nil
self.address_line2 = nil
self.town_or_city = nil
self.county = nil
self.postcode_known = nil
self.postcode_full = nil
self.la = nil
self.address_line1_input = nil
self.postcode_full_input = nil
end
self.uprn_known = 1
self.uprn_confirmed = 1
else
self.uprn = nil
self.uprn_known = 0
self.uprn_confirmed = 0
reset_address_fields! if address_search_input_was == true
end
if is_renewal?

61
app/models/derived_variables/sales_log_variables.rb

@ -54,48 +54,25 @@ module DerivedVariables::SalesLogVariables
if uprn_known&.zero?
self.uprn = nil
if uprn_known_was == 1
self.address_line1 = nil
self.address_line2 = nil
self.town_or_city = nil
self.county = nil
self.pcodenk = nil
self.postcode_full = nil
self.la = nil
self.address_line1_input = nil
self.postcode_full_input = nil
reset_address_fields!
end
end
if uprn_known == 1 && uprn_confirmed&.zero?
self.uprn = nil
self.uprn_known = 0
self.uprn_confirmed = nil
self.address_line1 = nil
self.address_line2 = nil
self.town_or_city = nil
self.county = nil
self.pcodenk = nil
self.postcode_full = nil
self.la = nil
self.address_line1_input = nil
self.postcode_full_input = nil
reset_address_fields!
end
if address_search
self.address_search_input = true if address_search_input.nil?
if address_search_input
self.uprn = address_search
if uprn_known_was == 1
self.address_line1 = nil
self.address_line2 = nil
self.town_or_city = nil
self.county = nil
self.pcodenk = nil
self.postcode_full = nil
self.la = nil
self.address_line1_input = nil
self.postcode_full_input = nil
end
self.uprn_known = 1
self.uprn_confirmed = 1
else
self.uprn = nil
self.uprn_known = 0
self.uprn_confirmed = 0
reset_address_fields! if address_search_input_was == true
end
if form.start_year_2025_or_later? && is_bedsit?
@ -259,4 +236,22 @@ private
def prevten_was_social_housing?
[1, 2].include?(prevten) || [1, 2].include?(prevtenbuy2)
end
def reset_address_fields!
# binding.pry
self.uprn = nil
self.uprn_known = nil
self.uprn_confirmed = nil
self.address_line1 = nil
self.address_line2 = nil
self.town_or_city = nil
self.county = nil
self.pcode1 = nil
self.pcode2 = nil
self.pcodenk = nil
self.address_line1_input = nil
self.postcode_full_input = nil
self.postcode_full = nil
self.is_la_inferred = nil
end
end

9
app/models/form/lettings/pages/address_fallback.rb

@ -3,14 +3,7 @@ class Form::Lettings::Pages::AddressFallback < ::Form::Page
super
@id = "address"
@copy_key = "lettings.property_information.address"
@depends_on = [
{ "is_supported_housing?" => false, "uprn_known" => nil, "uprn_selection" => "uprn_not_listed" },
{ "is_supported_housing?" => false, "uprn_known" => 0, "uprn_selection" => "uprn_not_listed" },
{ "is_supported_housing?" => false, "uprn_confirmed" => 0, "uprn_selection" => "uprn_not_listed" },
{ "is_supported_housing?" => false, "uprn_known" => nil, "address_options_present?" => false },
{ "is_supported_housing?" => false, "uprn_known" => 0, "address_options_present?" => false },
{ "is_supported_housing?" => false, "uprn_confirmed" => 0, "address_options_present?" => false },
]
@depends_on = [{ "is_supported_housing?" => false, "address_search_input" => false }]
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
end

4
app/models/form/lettings/pages/address_search.rb

@ -2,9 +2,7 @@ class Form::Lettings::Pages::AddressSearch < ::Form::Page
def initialize(id, hsh, subsection)
super
@id = "address_search"
@depends_on = [
{ "address_manually_entered?" => false },
]
@depends_on = [{ "is_supported_housing?" => false, "address_search_input" => true }]
end
def questions

9
app/models/form/sales/pages/address_fallback.rb

@ -3,14 +3,7 @@ class Form::Sales::Pages::AddressFallback < ::Form::Page
super
@id = "address"
@copy_key = "sales.property_information.address"
@depends_on = [
{ "uprn_known" => nil, "uprn_selection" => "uprn_not_listed" },
{ "uprn_known" => 0, "uprn_selection" => "uprn_not_listed" },
{ "uprn_confirmed" => 0, "uprn_selection" => "uprn_not_listed" },
{ "uprn_known" => nil, "address_options_present?" => false },
{ "uprn_known" => 0, "address_options_present?" => false },
{ "uprn_confirmed" => 0, "address_options_present?" => false },
]
@depends_on = [{ "address_search_input" => false }]
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
end

4
app/models/form/sales/pages/address_search.rb

@ -2,9 +2,7 @@ class Form::Sales::Pages::AddressSearch < ::Form::Page
def initialize(id, hsh, subsection)
super
@id = "address_search"
@depends_on = [
{ "address_manually_entered?" => false },
]
@depends_on = [{ "address_search_input" => true }]
end
def questions

4
app/models/log.rb

@ -189,10 +189,6 @@ class Log < ApplicationRecord
ethnic_group == 17
end
def address_manually_entered?
uprn.nil? && address_search.nil? && address_line1.present? && town_or_city.present?
end
def collection_period_open?
return false if older_than_previous_collection_year?

6
db/migrate/20250214133727_add_address_search_input_to_logs.rb

@ -0,0 +1,6 @@
class AddAddressSearchInputToLogs < ActiveRecord::Migration[7.2]
def change
add_column :sales_logs, :address_search_input, :boolean, default: true
add_column :lettings_logs, :address_search_input, :boolean, default: true
end
end

4
db/schema.rb

@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[7.2].define(version: 2025_02_03_084427) do
ActiveRecord::Schema[7.2].define(version: 2025_02_14_133727) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@ -374,6 +374,7 @@ ActiveRecord::Schema[7.2].define(version: 2025_02_03_084427) do
t.integer "multiple_partners_value_check"
t.bigint "created_by_id"
t.string "address_search"
t.boolean "address_search_input", default: true
t.index ["assigned_to_id"], name: "index_lettings_logs_on_assigned_to_id"
t.index ["bulk_upload_id"], name: "index_lettings_logs_on_bulk_upload_id"
t.index ["created_by_id"], name: "index_lettings_logs_on_created_by_id"
@ -771,6 +772,7 @@ ActiveRecord::Schema[7.2].define(version: 2025_02_03_084427) do
t.integer "has_management_fee"
t.decimal "management_fee", precision: 10, scale: 2
t.string "address_search"
t.boolean "address_search_input", default: true
t.index ["assigned_to_id"], name: "index_sales_logs_on_assigned_to_id"
t.index ["bulk_upload_id"], name: "index_sales_logs_on_bulk_upload_id"
t.index ["created_by_id"], name: "index_sales_logs_on_created_by_id"

Loading…
Cancel
Save