Browse Source

Refactor

pull/1925/head
Kat 3 years ago
parent
commit
2ea0b22f7e
  1. 72
      app/services/imports/lettings_logs_field_import_service.rb
  2. 8
      spec/services/imports/lettings_logs_field_import_service_spec.rb

72
app/services/imports/lettings_logs_field_import_service.rb

@ -314,17 +314,17 @@ module Imports
if (2..record.hhmemb).all? { |person_index| record.has_any_person_details?(person_index) || record["details_known_#{person_index}"] == 1 }
return @logger.info("lettings log #{record.id} has all household member details, skipping update")
end
if record.hhmemb == 8 || (record.hhmemb + 1..8).none? { |person_index| file_contains_person_details?(xml_doc, person_index) }
if record.hhmemb == 8 || ((record.hhmemb + 1)..8).none? { |person_index| file_contains_person_details?(xml_doc, person_index) }
return @logger.info("lettings log #{record.id} has no additional household member details, skipping update")
end
person_index = 2
next_person_index = person_index + 1
while person_index <= record.hhmemb
if next_person_index <= record.hhmemb
while person_exists_on_the_log?(record, person_index)
if person_exists_on_the_log?(record, next_person_index)
if record.has_any_person_details?(person_index) || record["details_known_#{person_index}"] == 1
@logger.info("lettings log #{record.id} has details for person #{person_index}, skipping update")
@logger.info("lettings log #{record.id} has details for person #{person_index}, skipping person")
person_index += 1
next_person_index += 1
next
@ -335,35 +335,13 @@ module Imports
next
end
record["details_known_#{person_index}"] = record["details_known_#{next_person_index}"]
record["age#{person_index}"] = record["age#{next_person_index}"]
record["age#{person_index}_known"] = record["age#{next_person_index}_known"]
record["sex#{person_index}"] = record["sex#{next_person_index}"]
record["ecstat#{person_index}"] = record["ecstat#{next_person_index}"]
record["relat#{person_index}"] = record["relat#{next_person_index}"]
record["details_known_#{next_person_index}"] = nil
record["age#{next_person_index}"] = nil
record["age#{next_person_index}_known"] = nil
record["sex#{next_person_index}"] = nil
record["ecstat#{next_person_index}"] = nil
record["relat#{next_person_index}"] = nil
@logger.info("lettings log #{record.id}'s person #{next_person_index} details moved to person #{person_index} details")
person_index += 1
next_person_index += 1
move_person_details(record, person_index, next_person_index)
else
record["age#{person_index}"] = safe_string_as_integer(xml_doc, "P#{next_person_index}Age")
record["age#{person_index}_known"] = age_known(xml_doc, next_person_index)
record["sex#{person_index}"] = sex(xml_doc, next_person_index)
record["ecstat#{person_index}"] = unsafe_string_as_integer(xml_doc, "P#{next_person_index}Eco")
record["relat#{person_index}"] = relat(xml_doc, next_person_index)
record["details_known_#{person_index}"] = details_known(person_index, record)
@logger.info("lettings log #{record.id}, reimported person #{person_index} details")
person_index += 1
next_person_index += 1
reimport_person_details(record, xml_doc, person_index, next_person_index)
end
person_index += 1
next_person_index += 1
end
record.values_updated_at = Time.zone.now
@ -399,5 +377,37 @@ module Imports
unsafe_string_as_integer(xml_doc, "P#{person_index}Eco").present? ||
string_or_nil(xml_doc, "P#{person_index}Rel").present?
end
def move_person_details(record, person_index, next_person_index)
record["details_known_#{person_index}"] = record["details_known_#{next_person_index}"]
record["age#{person_index}"] = record["age#{next_person_index}"]
record["age#{person_index}_known"] = record["age#{next_person_index}_known"]
record["sex#{person_index}"] = record["sex#{next_person_index}"]
record["ecstat#{person_index}"] = record["ecstat#{next_person_index}"]
record["relat#{person_index}"] = record["relat#{next_person_index}"]
record["details_known_#{next_person_index}"] = nil
record["age#{next_person_index}"] = nil
record["age#{next_person_index}_known"] = nil
record["sex#{next_person_index}"] = nil
record["ecstat#{next_person_index}"] = nil
record["relat#{next_person_index}"] = nil
@logger.info("lettings log #{record.id}'s person #{next_person_index} details moved to person #{person_index} details")
end
def reimport_person_details(record, xml_doc, person_index, next_person_index)
record["age#{person_index}"] = safe_string_as_integer(xml_doc, "P#{next_person_index}Age")
record["age#{person_index}_known"] = age_known(xml_doc, next_person_index)
record["sex#{person_index}"] = sex(xml_doc, next_person_index)
record["ecstat#{person_index}"] = unsafe_string_as_integer(xml_doc, "P#{next_person_index}Eco")
record["relat#{person_index}"] = relat(xml_doc, next_person_index)
record["details_known_#{person_index}"] = details_known(person_index, record)
@logger.info("lettings log #{record.id}, reimported person #{person_index} details")
end
def person_exists_on_the_log?(record, person_index)
person_index <= record.hhmemb
end
end
end

8
spec/services/imports/lettings_logs_field_import_service_spec.rb

@ -1134,8 +1134,8 @@ RSpec.describe Imports::LettingsLogsFieldImportService do
end
it "moves the details of all the household members" do
expect(logger).to receive(:info).with(/lettings log \d+ has details for person 2, skipping update/)
expect(logger).to receive(:info).with(/lettings log \d+ has details for person 3, skipping update/)
expect(logger).to receive(:info).with(/lettings log \d+ has details for person 2, skipping person/)
expect(logger).to receive(:info).with(/lettings log \d+ has details for person 3, skipping person/)
expect(logger).to receive(:info).with(/lettings log \d+'s person 5 details moved to person 4 details/)
expect(logger).to receive(:info).with(/lettings log \d+'s person 6 details moved to person 5 details/)
expect(logger).to receive(:info).with(/lettings log \d+, reimported person 6 details/)
@ -1189,8 +1189,8 @@ RSpec.describe Imports::LettingsLogsFieldImportService do
end
it "moves the details of all the relevant household members" do
expect(logger).to receive(:info).with(/lettings log \d+ has details for person 2, skipping update/)
expect(logger).to receive(:info).with(/lettings log \d+ has details for person 3, skipping update/)
expect(logger).to receive(:info).with(/lettings log \d+ has details for person 2, skipping person/)
expect(logger).to receive(:info).with(/lettings log \d+ has details for person 3, skipping person/)
expect(logger).to receive(:info).with(/lettings log \d+'s person 6 details moved to person 4 details/)
expect(logger).to receive(:info).with(/lettings log \d+, reimported person 5 details/)
expect(logger).to receive(:info).with(/lettings log \d+, reimported person 6 details/)

Loading…
Cancel
Save