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.
|
|
|
class BulkUpload::Sales::LogCreator
|
|
|
|
attr_reader :bulk_upload, :path
|
|
|
|
|
|
|
|
def initialize(bulk_upload:, path:)
|
|
|
|
@bulk_upload = bulk_upload
|
|
|
|
@path = path
|
|
|
|
end
|
|
|
|
|
|
|
|
def call
|
|
|
|
row_parsers.each do |row_parser|
|
|
|
|
row_parser.valid?
|
|
|
|
|
|
|
|
next if row_parser.blank_row?
|
|
|
|
|
|
|
|
row_parser.log.blank_invalid_non_setup_fields!
|
|
|
|
row_parser.log.bulk_upload = bulk_upload
|
|
|
|
row_parser.log.creation_method = "bulk upload"
|
|
|
|
row_parser.log.skip_update_status = true
|
|
|
|
row_parser.log.status = "pending"
|
|
|
|
row_parser.log.status_cache = row_parser.log.calculate_status
|
|
|
|
|
|
|
|
begin
|
|
|
|
row_parser.log.save!
|
|
|
|
rescue StandardError => e
|
|
|
|
Sentry.capture_exception(e)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def csv_parser
|
|
|
|
@csv_parser ||= case bulk_upload.year
|
|
|
|
when 2022
|
|
|
|
BulkUpload::Sales::Year2022::CsvParser.new(path:)
|
|
|
|
when 2023
|
|
|
|
BulkUpload::Sales::Year2023::CsvParser.new(path:)
|
|
|
|
else
|
|
|
|
raise "csv parser not found"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def row_offset
|
|
|
|
csv_parser.row_offset
|
|
|
|
end
|
|
|
|
|
|
|
|
def col_offset
|
|
|
|
csv_parser.col_offset
|
|
|
|
end
|
|
|
|
|
|
|
|
def row_parsers
|
|
|
|
return @row_parsers if @row_parsers
|
|
|
|
|
|
|
|
@row_parsers = csv_parser.row_parsers
|
|
|
|
|
|
|
|
@row_parsers.each do |row_parser|
|
|
|
|
row_parser.bulk_upload = bulk_upload
|
|
|
|
end
|
|
|
|
|
|
|
|
@row_parsers
|
|
|
|
end
|
|
|
|
|
|
|
|
def body_rows
|
|
|
|
csv_parser.body_rows
|
|
|
|
end
|
|
|
|
|
|
|
|
def rows
|
|
|
|
csv_parser.rows
|
|
|
|
end
|
|
|
|
end
|