Submit social housing lettings and sales data (CORE)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

36 lines
1.1 KiB

module Imports
class UserImportService < ImportService
def create_users(folder)
import_from(folder, :create_user)
end
private
PROVIDER_TYPE = {
"Data Provider" => User.roles[:data_provider],
}.freeze
def create_user(xml_document)
organisation = Organisation.find_by(old_org_id: user_field_value(xml_document, "institution"))
old_user_id = user_field_value(xml_document, "id")
name = user_field_value(xml_document, "full-name")
if User.find_by(old_user_id:, organisation:)
@logger.warn("User #{name} with old user id #{old_user_id} is already present, skipping.")
else
User.create!(
email: user_field_value(xml_document, "user-name"),
name:,
password: Devise.friendly_token,
phone: user_field_value(xml_document, "telephone-no"),
old_user_id:,
organisation:,
role: PROVIDER_TYPE[user_field_value(xml_document, "user-type")],
)
end
end
def user_field_value(xml_document, field)
field_value(xml_document, "user", field)
end
end
end