Browse Source

Code review

pull/727/head
Stéphane Meny 3 years ago
parent
commit
2a33d17877
No known key found for this signature in database
GPG Key ID: 9D0AFEA988527923
  1. 38
      app/services/imports/scheme_location_import_service.rb

38
app/services/imports/scheme_location_import_service.rb

@ -12,7 +12,7 @@ module Imports
if schemes.size == 1 && schemes.first.locations&.empty?
scheme = update_scheme(schemes.first, xml_document)
else
scheme = find_scheme_to_merge(schemes, xml_document)
scheme = find_scheme_to_merge(xml_document)
scheme ||= duplicate_scheme(schemes, xml_document)
end
add_location(scheme, xml_document)
@ -26,6 +26,17 @@ module Imports
4 => "(Registered nursing care home)",
}.freeze
def create_scheme(source_scheme, xml_doc)
attributes = scheme_attributes(xml_doc)
attributes["owning_organisation_id"] = source_scheme.owning_organisation_id
attributes["managing_organisation_id"] = source_scheme.managing_organisation_id
attributes["service_name"] = source_scheme.service_name
attributes["arrangement_type"] = source_scheme.arrangement_type
attributes["old_id"] = source_scheme.old_id
attributes["old_visible_id"] = source_scheme.old_visible_id
Scheme.create!(attributes)
end
def update_scheme(scheme, xml_doc)
attributes = scheme_attributes(xml_doc)
scheme.update!(attributes)
@ -71,29 +82,24 @@ module Imports
end
end
def find_scheme_to_merge(schemes, xml_doc)
def find_scheme_to_merge(xml_doc)
attributes = scheme_attributes(xml_doc)
schemes.each do |scheme|
if scheme.scheme_type_before_type_cast == attributes["scheme_type"] &&
scheme.registered_under_care_act_before_type_cast == attributes["registered_under_care_act"] &&
scheme.support_type_before_type_cast == attributes["support_type"] &&
scheme.intended_stay_before_type_cast == attributes["intended_stay"] &&
scheme.primary_client_group_before_type_cast == attributes["primary_client_group"] &&
scheme.secondary_client_group_before_type_cast == attributes["secondary_client_group"]
return scheme
end
end
nil
Scheme.find_by(
scheme_type: attributes["scheme_type"],
registered_under_care_act: attributes["registered_under_care_act"],
support_type: attributes["support_type"],
intended_stay: attributes["intended_stay"],
primary_client_group: attributes["primary_client_group"],
secondary_client_group: attributes["secondary_client_group"],
)
end
def duplicate_scheme(schemes, xml_doc)
# Since all schemes in the array are different, pick the first one
# In the future, consider a better selection method if needed
old_scheme = schemes.first
new_scheme = old_scheme.dup
update_scheme(new_scheme, xml_doc)
new_scheme = create_scheme(old_scheme, xml_doc)
if old_scheme.scheme_type != new_scheme.scheme_type
rename_schemes(old_scheme, new_scheme, :scheme_type)

Loading…
Cancel
Save