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.
43 lines
1.7 KiB
43 lines
1.7 KiB
1 year ago
|
namespace :data_import do
|
||
|
desc "Import address data from a csv file"
|
||
|
task :import_address_from_csv, %i[file_name] => :environment do |_task, args|
|
||
|
file_name = args[:file_name]
|
||
|
|
||
|
raise "Usage: rake data_import:import_address_from_csv['csv_file_name']" if file_name.blank?
|
||
|
|
||
|
s3_service = Storage::S3Service.new(PlatformHelper.is_paas? ? Configuration::PaasConfigurationService.new : Configuration::EnvConfigurationService.new, ENV["IMPORT_PAAS_INSTANCE"])
|
||
|
addresses_csv = CSV.parse(s3_service.get_file_io(file_name), headers: true)
|
||
|
|
||
|
addresses_csv.each do |row|
|
||
|
lettings_log_id = row[0]
|
||
|
|
||
|
if lettings_log_id.blank?
|
||
|
Rails.logger.info("Lettings log ID not provided for address: #{[row[1], row[2], row[3], row[4]].join(', ')}")
|
||
|
next
|
||
|
end
|
||
|
|
||
|
lettings_log = LettingsLog.find_by(id: lettings_log_id)
|
||
|
if lettings_log.blank?
|
||
|
Rails.logger.info("Could not find a lettings log with id #{lettings_log_id}")
|
||
|
next
|
||
|
end
|
||
|
|
||
|
lettings_log.uprn_known = 0
|
||
|
lettings_log.uprn = nil
|
||
|
lettings_log.uprn_confirmed = nil
|
||
|
lettings_log.address_line1 = row[1]
|
||
|
lettings_log.address_line2 = row[2]
|
||
|
lettings_log.town_or_city = row[3]
|
||
|
lettings_log.postcode_full = row[4]
|
||
|
lettings_log.postcode_known = lettings_log.postcode_full.present? ? 1 : nil
|
||
|
lettings_log.county = nil
|
||
|
lettings_log.is_la_inferred = nil
|
||
|
lettings_log.la = nil
|
||
|
lettings_log.values_updated_at = Time.zone.now
|
||
|
|
||
|
lettings_log.save!
|
||
|
Rails.logger.info("Updated lettings log #{lettings_log_id}, with address: #{[lettings_log.address_line1, lettings_log.address_line2, lettings_log.town_or_city, lettings_log.postcode_full].join(', ')}")
|
||
|
end
|
||
|
end
|
||
|
end
|