Browse Source

CLDC-4141: Export sab questions

pull/3156/head
Katherine Langford 3 weeks ago
parent
commit
966cdb4d5b
  1. 5
      app/services/exports/lettings_log_export_constants.rb
  2. 48
      app/services/exports/lettings_log_export_service.rb

5
app/services/exports/lettings_log_export_constants.rb

@ -203,4 +203,9 @@ module Exports::LettingsLogExportConstants
PRE_2026_EXPORT_FIELDS = Set[ PRE_2026_EXPORT_FIELDS = Set[
"builtype" "builtype"
] ]
POST_2026_EXPORT_FIELDS = Set[]
(1..8).each do |index|
POST_2026_EXPORT_FIELDS << "sexrab#{index}"
end
end end

48
app/services/exports/lettings_log_export_service.rb

@ -162,16 +162,38 @@ module Exports
attribute_hash["location_status"] = location.status_at(attribute_hash["startdate"]) attribute_hash["location_status"] = location.status_at(attribute_hash["startdate"])
end end
def is_omitted_field?(field_name, lettings_log) def is_included_field?(field_name, fields_for_form)
pattern_age = /age\d_known/
details_known_prefix = "details_known_" details_known_prefix = "details_known_"
field_name.starts_with?(details_known_prefix) || pattern_age = /age\d_known/
pattern_age.match(field_name) ||
!EXPORT_FIELDS.include?(field_name) || if field_name.starts_with?(details_known_prefix) || pattern_age.match(field_name)
(lettings_log.form.start_year_2024_or_later? && PRE_2024_EXPORT_FIELDS.include?(field_name)) || false
(!lettings_log.form.start_year_2024_or_later? && POST_2024_EXPORT_FIELDS.include?(field_name)) || end
(lettings_log.form.start_year_2025_or_later? && PRE_2025_EXPORT_FIELDS.include?(field_name)) ||
(lettings_log.form.start_year_2026_or_later? && PRE_2026_EXPORT_FIELDS.include?(field_name)) fields_for_form.include?(field_name)
end
def get_fields_for_form(lettings_log)
included_fields = Set[]
included_fields.merge(EXPORT_FIELDS)
if lettings_log.form.start_year_2024_or_later?
included_fields.merge(POST_2024_EXPORT_FIELDS)
else
included_fields.merge(PRE_2024_EXPORT_FIELDS)
end
if !lettings_log.form.start_year_2025_or_later?
included_fields.merge(PRE_2025_EXPORT_FIELDS)
end
if lettings_log.form.start_year_2026_or_later?
included_fields.merge(POST_2026_EXPORT_FIELDS)
else
included_fields.merge(PRE_2026_EXPORT_FIELDS)
end
included_fields
end end
def build_export_xml(lettings_logs) def build_export_xml(lettings_logs)
@ -181,11 +203,13 @@ module Exports
attribute_hash = apply_cds_transformation(lettings_log, EXPORT_MODE[:xml]) attribute_hash = apply_cds_transformation(lettings_log, EXPORT_MODE[:xml])
form = doc.create_element("form") form = doc.create_element("form")
doc.at("forms") << form doc.at("forms") << form
fields_for_form = get_fields_for_form(lettings_log)
attribute_hash.each do |key, value| attribute_hash.each do |key, value|
if is_omitted_field?(key, lettings_log) if is_included_field?(key, fields_for_form)
next
else
form << doc.create_element(key, value) form << doc.create_element(key, value)
else
next
end end
end end
form << doc.create_element("providertype", lettings_log.owning_organisation&.read_attribute_before_type_cast(:provider_type)) form << doc.create_element("providertype", lettings_log.owning_organisation&.read_attribute_before_type_cast(:provider_type))

Loading…
Cancel
Save