|
|
|
module Csv
|
|
|
|
class SalesLogCsvService
|
|
|
|
def initialize(user:, export_type:, year:)
|
|
|
|
@user = user
|
|
|
|
@export_type = export_type
|
|
|
|
@year = year
|
|
|
|
@attributes = sales_log_attributes
|
|
|
|
@definitions = sales_log_definitions
|
|
|
|
end
|
|
|
|
|
|
|
|
def prepare_csv(logs)
|
|
|
|
CSV.generate(headers: true) do |csv|
|
|
|
|
formatted_attributes = formatted_attribute_headers
|
|
|
|
if @year >= 2023
|
|
|
|
csv << formatted_attributes.map do |attribute|
|
|
|
|
record = @definitions.find { |r| r.variable == attribute.downcase }
|
|
|
|
record&.tap { |r| r.update!(last_accessed: Time.zone.now) }&.definition
|
|
|
|
end
|
|
|
|
end
|
|
|
|
csv << formatted_attributes
|
|
|
|
|
|
|
|
logs.find_each do |log|
|
|
|
|
csv << @attributes.map { |attribute| value(attribute, log) }
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
CUSTOM_CALL_CHAINS = {
|
|
|
|
day: {
|
|
|
|
labels: %i[saledate day],
|
|
|
|
codes: %i[saledate day],
|
|
|
|
},
|
|
|
|
month: {
|
|
|
|
labels: %i[saledate month],
|
|
|
|
codes: %i[saledate month],
|
|
|
|
},
|
|
|
|
year: {
|
|
|
|
labels: %i[saledate year],
|
|
|
|
codes: %i[saledate year],
|
|
|
|
},
|
|
|
|
is_dpo: {
|
|
|
|
labels: %i[assigned_to is_dpo],
|
|
|
|
codes: %i[assigned_to is_dpo],
|
|
|
|
},
|
|
|
|
assigned_to: {
|
|
|
|
labels: %i[assigned_to email],
|
|
|
|
codes: %i[assigned_to email],
|
|
|
|
},
|
|
|
|
created_by: {
|
|
|
|
labels: %i[created_by email],
|
|
|
|
codes: %i[created_by email],
|
|
|
|
},
|
|
|
|
owning_organisation_name: {
|
|
|
|
labels: %i[owning_organisation name],
|
|
|
|
codes: %i[owning_organisation name],
|
|
|
|
},
|
|
|
|
managing_organisation_name: {
|
|
|
|
labels: %i[managing_organisation name],
|
|
|
|
codes: %i[managing_organisation name],
|
|
|
|
},
|
|
|
|
creation_method: {
|
|
|
|
labels: %i[creation_method],
|
|
|
|
codes: %i[creation_method_before_type_cast],
|
|
|
|
},
|
|
|
|
mscharge_value_check: {
|
|
|
|
labels: %i[monthly_charges_value_check],
|
|
|
|
codes: %i[monthly_charges_value_check],
|
|
|
|
},
|
|
|
|
}.freeze
|
|
|
|
|
|
|
|
PERSON_DETAILS = {}.tap { |hash|
|
|
|
|
hash["age1"] = { "refused_code" => "-9", "refused_label" => "Not known", "age_known_field" => "age1_known" }
|
|
|
|
(2..6).each do |i|
|
|
|
|
hash["age#{i}"] = { "refused_code" => "-9", "refused_label" => "Not known", "details_known_field" => "details_known_#{i}", "age_known_field" => "age#{i}_known" }
|
|
|
|
hash["sex#{i}"] = { "refused_code" => "R", "refused_label" => "Prefers not to say", "details_known_field" => "details_known_#{i}" }
|
|
|
|
hash["relat#{i}"] = { "refused_code" => "R", "refused_label" => "Prefers not to say", "details_known_field" => "details_known_#{i}" }
|
|
|
|
hash["ecstat#{i}"] = { "refused_code" => "10", "refused_label" => "Prefers not to say", "details_known_field" => "details_known_#{i}" }
|
|
|
|
end
|
|
|
|
}.freeze
|
|
|
|
|
|
|
|
FIELDS_ALWAYS_EXPORTED_AS_CODES = %w[
|
|
|
|
la
|
|
|
|
prevloc
|
|
|
|
].freeze
|
|
|
|
|
|
|
|
FIELDS_ALWAYS_EXPORTED_AS_LABELS = {
|
|
|
|
"la_label" => "la",
|
|
|
|
"prevloc_label" => "prevloc",
|
|
|
|
}.freeze
|
|
|
|
|
|
|
|
SYSTEM_DATE_FIELDS = %w[
|
|
|
|
created_at
|
|
|
|
updated_at
|
|
|
|
].freeze
|
|
|
|
|
|
|
|
ORDERED_ADDRESS_FIELDS = %w[uprn address_line1 address_line2 town_or_city county postcode_full is_la_inferred la_label la uprn_selection address_search_value_check address_line1_input postcode_full_input address_line1_as_entered address_line2_as_entered town_or_city_as_entered county_as_entered postcode_full_as_entered la_as_entered].freeze
|
|
|
|
|
|
|
|
SUPPORT_ONLY_ATTRIBUTES = %w[address_line1_as_entered address_line2_as_entered town_or_city_as_entered county_as_entered postcode_full_as_entered la_as_entered created_by value_value_check mscharge_value_check].freeze
|
|
|
|
|
|
|
|
SUPPORT_ATTRIBUTE_NAME_MAPPINGS = {
|
|
|
|
"duplicate_set_id" => "DUPLICATESET",
|
|
|
|
"bulk_upload_id" => "BULKUPLOADID",
|
|
|
|
"created_at" => "CREATEDDATE",
|
|
|
|
"updated_at" => "UPLOADDATE",
|
|
|
|
"old_form_id" => "FORM",
|
|
|
|
"collection_start_year" => "COLLECTIONYEAR",
|
|
|
|
"creation_method" => "CREATIONMETHOD",
|
|
|
|
"is_dpo" => "DATAPROTECT",
|
|
|
|
"created_by" => "CREATEDBY",
|
|
|
|
"owning_organisation_name" => "OWNINGORGNAME",
|
|
|
|
"managing_organisation_name" => "MANINGORGNAME",
|
|
|
|
"assigned_to" => "USERNAME",
|
|
|
|
"ownershipsch" => "OWNERSHIP",
|
|
|
|
"companybuy" => "COMPANY",
|
|
|
|
"buylivein" => "LIVEINBUYER",
|
|
|
|
"jointpur" => "JOINT",
|
|
|
|
"address_line1" => "ADDRESS1",
|
|
|
|
"address_line2" => "ADDRESS2",
|
|
|
|
"town_or_city" => "TOWNCITY",
|
|
|
|
"postcode_full" => "POSTCODE",
|
|
|
|
"is_la_inferred" => "ISLAINFERRED",
|
|
|
|
"la_label" => "LANAME",
|
|
|
|
"uprn_selection" => "UPRNSELECTED",
|
|
|
|
"address_line1_input" => "ADDRESS1INPUT",
|
|
|
|
"postcode_full_input" => "POSTCODEINPUT",
|
|
|
|
"address_line1_as_entered" => "BULKADDRESS1",
|
|
|
|
"address_line2_as_entered" => "BULKADDRESS2",
|
|
|
|
"town_or_city_as_entered" => "BULKTOWNCITY",
|
|
|
|
"county_as_entered" => "BULKCOUNTY",
|
|
|
|
"postcode_full_as_entered" => "BULKPOSTCODE",
|
|
|
|
"la_as_entered" => "BULKLA",
|
|
|
|
"ethnic_group" => "ETHNICGROUP1",
|
|
|
|
"nationality_all" => "NATIONALITYALL1",
|
|
|
|
"buy1livein" => "LIVEINBUYER1",
|
|
|
|
"ethnic_group2" => "ETHNICGROUP2",
|
|
|
|
"ethnicbuy2" => "ETHNIC2",
|
|
|
|
"nationality_all_buyer2" => "NATIONALITYALL2",
|
|
|
|
"buy2livein" => "LIVEINBUYER2",
|
|
|
|
"hholdcount" => "HHTYPE",
|
|
|
|
"previous_la_known" => "PREVIOUSLAKNOWN",
|
|
|
|
"prevloc_label" => "PREVLOCNAME",
|
|
|
|
"prevtenbuy2" => "PREVTEN2",
|
|
|
|
"income1nk" => "INC1NK",
|
|
|
|
"income2nk" => "INC2NK",
|
|
|
|
"staircasesale" => "STAIRCASETOSALE",
|
|
|
|
"soctenant" => "SOCTEN",
|
|
|
|
"mortlen" => "MORTLEN1",
|
|
|
|
"has_mscharge" => "HASMSCHARGE",
|
|
|
|
"nationalbuy2" => "NATIONAL2",
|
|
|
|
"uprn_confirmed" => "UPRNCONFIRMED",
|
|
|
|
}.freeze
|
|
|
|
|
CLDC-3787: Autocomplete address uprn search (#2967)
* Prototype
* Remove git from dockerfile
* UPRN search too
* Revert address client and use uprn client
* Add address search to lettings too
* Updates with lettings logs
* Update copy
* Move guidance to partial
* Fix uprn return
* Delete new db file, restore old
* Lint
* Remove old db file
* Lint
* Add new db file, remove old
* JS lint
* Update schema
* Add manual entry option
* Update derived variables
* Comment out old version of find address in 2024
* Remove db column
* Add new db columns
* Update guidance partial
* Add unless to migration
* Add migration files to remove and readd
* authenticate user
* Remove file
* Delete migration files
* Add search url
* Add search url
* Fix onConfirm
* Add manual entry button instead of change skip link
* Revert "Add manual entry button instead of change skip link"
This reverts commit 22577c801aca940acfc16caf94d3159071ea8258.
* Revert "Revert "Add manual entry button instead of change skip link""
This reverts commit 9f0a2111a58e933a28105e54aba6ca08c2d043b7.
* Replace uprn question
* Update question copy
* Allow changing the address search value
* Rename address autocomplete to address search
* Add buttons to switch between address questions
* Fix controller logic
* Enable adding question numbers to page headers
* Update skip links
* Add js disabled message to select
* Alternative way to handle js disabled users
* Revert "Alternative way to handle js disabled users"
This reverts commit 10da3d61e2f89ec29ef9f9071c63eb99aa2bb482.
* Fix typo
* Fix address options for address search question
* Reuse AddressDataPresenter where appropriate
* Lint
* Remove uprn selection question tests
* Reuse UprnDataPresenter where appropriate
* CSV export, exclude address_search
* Add address search to sales and lettings factory bots
* Exclude old address questions from routing, keep as exported values
* lint
* Update uprn value
* Add address search input boolean and switch between questions
* Reword copy, remove "Find" and "Search by"
* Align address questions, add question number and question text
* Remove old wip depends on
* Update some tests
* Update migration, move default value from db to model
* Update test
* Remove binding pry
* Lint
* Update test
* Lint
* Update test
* Update routes with underscores
* Remove debugging
* Limit visible logs to user
* Add manual address entry selected variable
* Change address search min length to 3chars
* Remove binding.pry
* Update factory bots, manual_address_entry_selected to true for preexisting tests
* Update model tests
* Update sales model tests excl E-code tests
* Update address search request test
* Reuse uprn id instead of address_search
* Set manual address entry selected as false when creating test logs
* Update model test
* Update request tests and remove old questions
* Add back test
* Update services
* Update more tests
Co-authored-by: kosiakkatrina <kosiakkatrina@users.noreply.github.com>
* Update request tests
* update model tests
* Also update sales log
* Update service csv uprn_selection values to 1
* Add tests for pages and questions
* Update test
* Update uprn_known
* Lint
* Add feature test
* Update test
* Update tests
* Remove test
* pre-consolidate migration files
* Indentation
* Controller method improvements
* Update question numbers for 2025/26
* Update question numbers tests
* consolidate and delete old migration files
* undo changes to schema.rb
* Update 2025 property information translation files
* Update answer options to show singular previously selected result if present
* Move buttons to bottom guidance partials
* Small improvements, make address search and existing search more similar
* Validate entered addresses as within England
* Update test
* Revert "Validate entered addresses as within England"
This reverts commit 2dbfbcc8a5188cde7fb0ac0dcdbc5919eefd6a12.
* Add missing button to sales address page
* Change error code
* Clear invalid options
* Edit no results message method
* Keep no result logic just change text
* Display uprn value with address value
* Still show no results message when characters entered is less than 3 rather than nothing
* Fix uprn result when query is ambiguous
* Reduce min match for address search
* Hide no result found message just before results are populated
* Prevent changing logs to 2025 with invalid addresses
* Correct attribute name
* Handle nil
* Remove custom error message
* Remove unused variables from factory
* Update tests, remove address and postcode from old find address
* Fix bug clearing uprn from see all answers
* Revert "Fix bug clearing uprn from see all answers"
This reverts commit a66c47a1abf7a429f25e0a016fedb0b92e92f15c.
* Undo changes to validation method
* Fix unchanged uprn_selection when clearing or changing uprn
* Undo a change
* Update bulk upload 2025
* Fix typo
* Remove redundant line
---------
Co-authored-by: Kat <54268893+kosiakkatrina@users.noreply.github.com>
Co-authored-by: kosiakkatrina <kosiakkatrina@users.noreply.github.com>
1 week ago
|
|
|
UPRN_CONFIRMED_LABELS = {
|
|
|
|
0 => "No",
|
|
|
|
1 => "Yes",
|
|
|
|
}.freeze
|
|
|
|
|
|
|
|
LABELS = {
|
|
|
|
"uprn_confirmed" => UPRN_CONFIRMED_LABELS,
|
|
|
|
}.freeze
|
|
|
|
|
|
|
|
def formatted_attribute_headers
|
|
|
|
return @attributes unless @user.support?
|
|
|
|
|
|
|
|
@attributes.map do |attribute|
|
|
|
|
SUPPORT_ATTRIBUTE_NAME_MAPPINGS[attribute] || attribute.upcase
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def sales_log_attributes
|
|
|
|
ordered_questions = FormHandler.instance.ordered_questions_for_year(@year, "sales")
|
|
|
|
ordered_questions.reject! { |q| q.id.match?(/((?<!la)_known)|(_check)|(_asked)|nationality_all_group|nationality_all_buyer2_group/) }
|
|
|
|
attributes = insert_derived_and_related_attributes(ordered_questions)
|
|
|
|
order_address_fields_for_support(attributes)
|
|
|
|
final_attributes = non_question_fields + attributes
|
|
|
|
@user.support? ? final_attributes : final_attributes - SUPPORT_ONLY_ATTRIBUTES
|
|
|
|
end
|
|
|
|
|
|
|
|
def sales_log_definitions
|
|
|
|
CsvVariableDefinition.sales.group_by { |record| [record.variable, record.definition] }
|
|
|
|
.map do |_, options|
|
|
|
|
exact_match = options.find { |definition| definition.year == @year }
|
|
|
|
next exact_match if exact_match
|
|
|
|
|
|
|
|
options.max_by(&:year)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def insert_derived_and_related_attributes(ordered_questions)
|
|
|
|
ordered_questions.flat_map do |question|
|
|
|
|
if question.type == "checkbox"
|
|
|
|
question.answer_options.keys
|
|
|
|
elsif attribute_mappings.key? question.id
|
|
|
|
attribute_mappings[question.id]
|
|
|
|
else
|
|
|
|
question.id
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def attribute_mappings
|
|
|
|
mappings = {
|
|
|
|
"saledate" => %w[day month year],
|
|
|
|
"exdate" => %w[exday exmonth exyear],
|
|
|
|
"hodate" => %w[hoday homonth hoyear],
|
|
|
|
"ppostcode_full" => %w[ppostc1 ppostc2],
|
|
|
|
"la" => %w[la la_label],
|
|
|
|
"prevloc" => %w[prevloc prevloc_label],
|
|
|
|
"assigned_to_id" => %w[created_by assigned_to],
|
|
|
|
"owning_organisation_id" => %w[owning_organisation_name],
|
|
|
|
"managing_organisation_id" => %w[managing_organisation_name],
|
|
|
|
"value" => %w[value value_value_check],
|
|
|
|
"mscharge" => %w[mscharge mscharge_value_check],
|
|
|
|
}
|
|
|
|
unless @user.support? && @year >= 2024
|
|
|
|
mappings["postcode_full"] = %w[pcode1 pcode2]
|
|
|
|
end
|
CLDC-3787: Autocomplete address uprn search (#2967)
* Prototype
* Remove git from dockerfile
* UPRN search too
* Revert address client and use uprn client
* Add address search to lettings too
* Updates with lettings logs
* Update copy
* Move guidance to partial
* Fix uprn return
* Delete new db file, restore old
* Lint
* Remove old db file
* Lint
* Add new db file, remove old
* JS lint
* Update schema
* Add manual entry option
* Update derived variables
* Comment out old version of find address in 2024
* Remove db column
* Add new db columns
* Update guidance partial
* Add unless to migration
* Add migration files to remove and readd
* authenticate user
* Remove file
* Delete migration files
* Add search url
* Add search url
* Fix onConfirm
* Add manual entry button instead of change skip link
* Revert "Add manual entry button instead of change skip link"
This reverts commit 22577c801aca940acfc16caf94d3159071ea8258.
* Revert "Revert "Add manual entry button instead of change skip link""
This reverts commit 9f0a2111a58e933a28105e54aba6ca08c2d043b7.
* Replace uprn question
* Update question copy
* Allow changing the address search value
* Rename address autocomplete to address search
* Add buttons to switch between address questions
* Fix controller logic
* Enable adding question numbers to page headers
* Update skip links
* Add js disabled message to select
* Alternative way to handle js disabled users
* Revert "Alternative way to handle js disabled users"
This reverts commit 10da3d61e2f89ec29ef9f9071c63eb99aa2bb482.
* Fix typo
* Fix address options for address search question
* Reuse AddressDataPresenter where appropriate
* Lint
* Remove uprn selection question tests
* Reuse UprnDataPresenter where appropriate
* CSV export, exclude address_search
* Add address search to sales and lettings factory bots
* Exclude old address questions from routing, keep as exported values
* lint
* Update uprn value
* Add address search input boolean and switch between questions
* Reword copy, remove "Find" and "Search by"
* Align address questions, add question number and question text
* Remove old wip depends on
* Update some tests
* Update migration, move default value from db to model
* Update test
* Remove binding pry
* Lint
* Update test
* Lint
* Update test
* Update routes with underscores
* Remove debugging
* Limit visible logs to user
* Add manual address entry selected variable
* Change address search min length to 3chars
* Remove binding.pry
* Update factory bots, manual_address_entry_selected to true for preexisting tests
* Update model tests
* Update sales model tests excl E-code tests
* Update address search request test
* Reuse uprn id instead of address_search
* Set manual address entry selected as false when creating test logs
* Update model test
* Update request tests and remove old questions
* Add back test
* Update services
* Update more tests
Co-authored-by: kosiakkatrina <kosiakkatrina@users.noreply.github.com>
* Update request tests
* update model tests
* Also update sales log
* Update service csv uprn_selection values to 1
* Add tests for pages and questions
* Update test
* Update uprn_known
* Lint
* Add feature test
* Update test
* Update tests
* Remove test
* pre-consolidate migration files
* Indentation
* Controller method improvements
* Update question numbers for 2025/26
* Update question numbers tests
* consolidate and delete old migration files
* undo changes to schema.rb
* Update 2025 property information translation files
* Update answer options to show singular previously selected result if present
* Move buttons to bottom guidance partials
* Small improvements, make address search and existing search more similar
* Validate entered addresses as within England
* Update test
* Revert "Validate entered addresses as within England"
This reverts commit 2dbfbcc8a5188cde7fb0ac0dcdbc5919eefd6a12.
* Add missing button to sales address page
* Change error code
* Clear invalid options
* Edit no results message method
* Keep no result logic just change text
* Display uprn value with address value
* Still show no results message when characters entered is less than 3 rather than nothing
* Fix uprn result when query is ambiguous
* Reduce min match for address search
* Hide no result found message just before results are populated
* Prevent changing logs to 2025 with invalid addresses
* Correct attribute name
* Handle nil
* Remove custom error message
* Remove unused variables from factory
* Update tests, remove address and postcode from old find address
* Fix bug clearing uprn from see all answers
* Revert "Fix bug clearing uprn from see all answers"
This reverts commit a66c47a1abf7a429f25e0a016fedb0b92e92f15c.
* Undo changes to validation method
* Fix unchanged uprn_selection when clearing or changing uprn
* Undo a change
* Update bulk upload 2025
* Fix typo
* Remove redundant line
---------
Co-authored-by: Kat <54268893+kosiakkatrina@users.noreply.github.com>
Co-authored-by: kosiakkatrina <kosiakkatrina@users.noreply.github.com>
1 week ago
|
|
|
if @year >= 2024
|
|
|
|
mappings["uprn"] = %w[uprn uprn_confirmed address_line1_input postcode_full_input uprn_selection]
|
|
|
|
end
|
|
|
|
mappings
|
|
|
|
end
|
|
|
|
|
|
|
|
def order_address_fields_for_support(attributes)
|
|
|
|
if @user.support? && @year >= 2024
|
|
|
|
first_address_field_index = attributes.find_index { |q| all_address_fields.include?(q) }
|
|
|
|
if first_address_field_index
|
|
|
|
attributes.reject! { |q| all_address_fields.include?(q) }
|
|
|
|
attributes.insert(first_address_field_index, *ORDERED_ADDRESS_FIELDS)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def non_question_fields
|
|
|
|
case @year
|
|
|
|
when 2022
|
|
|
|
%w[id status created_at updated_at old_form_id collection_start_year creation_method is_dpo]
|
|
|
|
when 2023
|
|
|
|
%w[id status duplicate_set_id created_at updated_at old_form_id collection_start_year creation_method is_dpo]
|
|
|
|
when 2024
|
|
|
|
%w[id status duplicate_set_id created_at updated_at collection_start_year creation_method bulk_upload_id is_dpo]
|
|
|
|
else
|
|
|
|
%w[id status duplicate_set_id created_at updated_at collection_start_year creation_method bulk_upload_id is_dpo]
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def all_address_fields
|
|
|
|
ORDERED_ADDRESS_FIELDS + %w[uprn_confirmed]
|
|
|
|
end
|
|
|
|
|
|
|
|
def value(attribute, log)
|
|
|
|
if CUSTOM_CALL_CHAINS.key? attribute.to_sym
|
|
|
|
call_chain = CUSTOM_CALL_CHAINS[attribute.to_sym][@export_type.to_sym]
|
|
|
|
call_chain.reduce(log) { |object, next_call| object&.public_send(next_call) }
|
|
|
|
elsif FIELDS_ALWAYS_EXPORTED_AS_CODES.include? attribute
|
|
|
|
log.send(attribute)
|
|
|
|
elsif FIELDS_ALWAYS_EXPORTED_AS_LABELS.key? attribute
|
|
|
|
attribute = FIELDS_ALWAYS_EXPORTED_AS_LABELS[attribute]
|
|
|
|
value = log.send(attribute)
|
|
|
|
get_label(value, attribute, log)
|
|
|
|
elsif SYSTEM_DATE_FIELDS.include? attribute
|
|
|
|
log.public_send(attribute)&.iso8601
|
|
|
|
elsif PERSON_DETAILS.key?(attribute) && (person_details_not_known?(log, attribute) || age_not_known?(log, attribute))
|
|
|
|
case @export_type
|
|
|
|
when "codes"
|
|
|
|
PERSON_DETAILS.find { |key, _value| key == attribute }[1]["refused_code"]
|
|
|
|
when "labels"
|
|
|
|
PERSON_DETAILS.find { |key, _value| key == attribute }[1]["refused_label"]
|
|
|
|
end
|
|
|
|
else
|
|
|
|
value = log.public_send(attribute)
|
|
|
|
case @export_type
|
|
|
|
when "codes"
|
|
|
|
value
|
|
|
|
when "labels"
|
|
|
|
answer_label = get_label(value, attribute, log)
|
|
|
|
answer_label || label_if_boolean_value(value) || value
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def person_details_not_known?(log, attribute)
|
|
|
|
details_known_field = PERSON_DETAILS.find { |key, _value| key == attribute }[1]["details_known_field"]
|
|
|
|
log[details_known_field] == 2 # 1 for lettings logs, 2 for sales logs
|
|
|
|
end
|
|
|
|
|
|
|
|
def age_not_known?(log, attribute)
|
|
|
|
age_known_field = PERSON_DETAILS.find { |key, _value| key == attribute }[1]["age_known_field"]
|
|
|
|
log[age_known_field] == 1
|
|
|
|
end
|
|
|
|
|
|
|
|
def get_label(value, attribute, log)
|
CLDC-3787: Autocomplete address uprn search (#2967)
* Prototype
* Remove git from dockerfile
* UPRN search too
* Revert address client and use uprn client
* Add address search to lettings too
* Updates with lettings logs
* Update copy
* Move guidance to partial
* Fix uprn return
* Delete new db file, restore old
* Lint
* Remove old db file
* Lint
* Add new db file, remove old
* JS lint
* Update schema
* Add manual entry option
* Update derived variables
* Comment out old version of find address in 2024
* Remove db column
* Add new db columns
* Update guidance partial
* Add unless to migration
* Add migration files to remove and readd
* authenticate user
* Remove file
* Delete migration files
* Add search url
* Add search url
* Fix onConfirm
* Add manual entry button instead of change skip link
* Revert "Add manual entry button instead of change skip link"
This reverts commit 22577c801aca940acfc16caf94d3159071ea8258.
* Revert "Revert "Add manual entry button instead of change skip link""
This reverts commit 9f0a2111a58e933a28105e54aba6ca08c2d043b7.
* Replace uprn question
* Update question copy
* Allow changing the address search value
* Rename address autocomplete to address search
* Add buttons to switch between address questions
* Fix controller logic
* Enable adding question numbers to page headers
* Update skip links
* Add js disabled message to select
* Alternative way to handle js disabled users
* Revert "Alternative way to handle js disabled users"
This reverts commit 10da3d61e2f89ec29ef9f9071c63eb99aa2bb482.
* Fix typo
* Fix address options for address search question
* Reuse AddressDataPresenter where appropriate
* Lint
* Remove uprn selection question tests
* Reuse UprnDataPresenter where appropriate
* CSV export, exclude address_search
* Add address search to sales and lettings factory bots
* Exclude old address questions from routing, keep as exported values
* lint
* Update uprn value
* Add address search input boolean and switch between questions
* Reword copy, remove "Find" and "Search by"
* Align address questions, add question number and question text
* Remove old wip depends on
* Update some tests
* Update migration, move default value from db to model
* Update test
* Remove binding pry
* Lint
* Update test
* Lint
* Update test
* Update routes with underscores
* Remove debugging
* Limit visible logs to user
* Add manual address entry selected variable
* Change address search min length to 3chars
* Remove binding.pry
* Update factory bots, manual_address_entry_selected to true for preexisting tests
* Update model tests
* Update sales model tests excl E-code tests
* Update address search request test
* Reuse uprn id instead of address_search
* Set manual address entry selected as false when creating test logs
* Update model test
* Update request tests and remove old questions
* Add back test
* Update services
* Update more tests
Co-authored-by: kosiakkatrina <kosiakkatrina@users.noreply.github.com>
* Update request tests
* update model tests
* Also update sales log
* Update service csv uprn_selection values to 1
* Add tests for pages and questions
* Update test
* Update uprn_known
* Lint
* Add feature test
* Update test
* Update tests
* Remove test
* pre-consolidate migration files
* Indentation
* Controller method improvements
* Update question numbers for 2025/26
* Update question numbers tests
* consolidate and delete old migration files
* undo changes to schema.rb
* Update 2025 property information translation files
* Update answer options to show singular previously selected result if present
* Move buttons to bottom guidance partials
* Small improvements, make address search and existing search more similar
* Validate entered addresses as within England
* Update test
* Revert "Validate entered addresses as within England"
This reverts commit 2dbfbcc8a5188cde7fb0ac0dcdbc5919eefd6a12.
* Add missing button to sales address page
* Change error code
* Clear invalid options
* Edit no results message method
* Keep no result logic just change text
* Display uprn value with address value
* Still show no results message when characters entered is less than 3 rather than nothing
* Fix uprn result when query is ambiguous
* Reduce min match for address search
* Hide no result found message just before results are populated
* Prevent changing logs to 2025 with invalid addresses
* Correct attribute name
* Handle nil
* Remove custom error message
* Remove unused variables from factory
* Update tests, remove address and postcode from old find address
* Fix bug clearing uprn from see all answers
* Revert "Fix bug clearing uprn from see all answers"
This reverts commit a66c47a1abf7a429f25e0a016fedb0b92e92f15c.
* Undo changes to validation method
* Fix unchanged uprn_selection when clearing or changing uprn
* Undo a change
* Update bulk upload 2025
* Fix typo
* Remove redundant line
---------
Co-authored-by: Kat <54268893+kosiakkatrina@users.noreply.github.com>
Co-authored-by: kosiakkatrina <kosiakkatrina@users.noreply.github.com>
1 week ago
|
|
|
return LABELS[attribute][value] if LABELS.key?(attribute)
|
|
|
|
|
|
|
|
log.form
|
|
|
|
.get_question(attribute, log)
|
|
|
|
&.label_from_value(value)
|
|
|
|
end
|
|
|
|
|
|
|
|
def label_if_boolean_value(value)
|
|
|
|
return "Yes" if value == true
|
|
|
|
return "No" if value == false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|