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.
 
 
 
 

63 lines
2.8 KiB

namespace :correct_illness do
desc "Export data CSVs for import into Central Data System (CDS)"
task :create_illness_csv, %i[organisation_id] => :environment do |_task, args|
organisation_id = args[:organisation_id]
raise "Usage: rake correct_illness:create_illness_csv['organisation_id']" if organisation_id.blank?
organisation = Organisation.find_by(id: organisation_id)
if organisation.present?
CreateIllnessCsvJob.perform_later(organisation)
Rails.logger.info("Creating illness CSV for #{organisation.name}")
else
Rails.logger.error("Organisation with ID #{organisation_id} not found")
end
end
desc "Export data CSVs for import into Central Data System (CDS)"
task :correct_illness_from_csv, %i[file_name] => :environment do |_task, args|
file_name = args[:file_name]
raise "Usage: rake correct_illness:correct_illness_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"])
file_io = s3_service.get_file_io(file_name)
file_io.set_encoding_by_bom
illness_csv = CSV.parse(file_io, headers: false)
illness_csv.each_with_index do |row, index|
next if index < 3
lettings_log_id = row[1]
if lettings_log_id.blank?
Rails.logger.info("Lettings log ID not provided")
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.illness = row[8]
lettings_log.illness_type_1 = row[9].presence || 0
lettings_log.illness_type_2 = row[10].presence || 0
lettings_log.illness_type_3 = row[11].presence || 0
lettings_log.illness_type_4 = row[12].presence || 0
lettings_log.illness_type_5 = row[13].presence || 0
lettings_log.illness_type_6 = row[14].presence || 0
lettings_log.illness_type_7 = row[15].presence || 0
lettings_log.illness_type_8 = row[16].presence || 0
lettings_log.illness_type_9 = row[17].presence || 0
lettings_log.illness_type_10 = row[18].presence || 0
lettings_log.values_updated_at = Time.zone.now
if lettings_log.save
Rails.logger.info("Updated lettings log #{lettings_log_id}, with illness: #{([lettings_log.illness] + %w[illness_type_1 illness_type_2 illness_type_3 illness_type_4 illness_type_5 illness_type_6 illness_type_7 illness_type_8 illness_type_9 illness_type_10].select { |illness_type| lettings_log[illness_type] == 1 }).join(', ')}")
else
Rails.logger.error("Validation failed for lettings log with ID #{lettings_log.id}: #{lettings_log.errors.full_messages.join(', ')}}")
end
end
end
end