|
|
@ -1,6 +1,7 @@ |
|
|
|
class ImportService |
|
|
|
class ImportService |
|
|
|
def initialize(storage_service) |
|
|
|
def initialize(storage_service, logger = Rails.logger) |
|
|
|
@storage_service = storage_service |
|
|
|
@storage_service = storage_service |
|
|
|
|
|
|
|
@logger = logger |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
def update_organisations(folder) |
|
|
|
def update_organisations(folder) |
|
|
@ -15,8 +16,11 @@ private |
|
|
|
|
|
|
|
|
|
|
|
def create_organisation(file_io) |
|
|
|
def create_organisation(file_io) |
|
|
|
doc = Nokogiri::XML(file_io) |
|
|
|
doc = Nokogiri::XML(file_io) |
|
|
|
Organisation.upsert({ |
|
|
|
name = field_value(doc, "name") |
|
|
|
name: field_value(doc, "name"), |
|
|
|
old_visible_id = field_value(doc, "visible-id") |
|
|
|
|
|
|
|
begin |
|
|
|
|
|
|
|
Organisation.create!( |
|
|
|
|
|
|
|
name: name, |
|
|
|
providertype: field_value(doc, "institution-type"), |
|
|
|
providertype: field_value(doc, "institution-type"), |
|
|
|
phone: field_value(doc, "telephone-number"), |
|
|
|
phone: field_value(doc, "telephone-number"), |
|
|
|
holds_own_stock: to_boolean(field_value(doc, "holds-stock")), |
|
|
|
holds_own_stock: to_boolean(field_value(doc, "holds-stock")), |
|
|
@ -35,8 +39,11 @@ private |
|
|
|
supported_housing_units: field_value(doc, "supported-housing-units"), |
|
|
|
supported_housing_units: field_value(doc, "supported-housing-units"), |
|
|
|
unspecified_units: field_value(doc, "unspecified-units"), |
|
|
|
unspecified_units: field_value(doc, "unspecified-units"), |
|
|
|
old_org_id: field_value(doc, "id"), |
|
|
|
old_org_id: field_value(doc, "id"), |
|
|
|
old_visible_id: field_value(doc, "visible-id"), |
|
|
|
old_visible_id: old_visible_id, |
|
|
|
}, unique_by: "old_visible_id") |
|
|
|
) |
|
|
|
|
|
|
|
rescue ActiveRecord::RecordNotUnique |
|
|
|
|
|
|
|
@logger.warn("Organisation #{name} is already present with old visible ID #{old_visible_id}, skipping.") |
|
|
|
|
|
|
|
end |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
def field_value(doc, field) |
|
|
|
def field_value(doc, field) |
|
|
|