Browse Source

use csv parser in log creator

pull/1208/head
Phil Lee 3 years ago
parent
commit
ad6b731120
  1. 41
      app/services/bulk_upload/lettings/log_creator.rb

41
app/services/bulk_upload/lettings/log_creator.rb

@ -23,46 +23,35 @@ class BulkUpload::Lettings::LogCreator
private
def csv_parser
@csv_parser ||= BulkUpload::Lettings::CsvParser.new(path:)
end
def row_offset
5
csv_parser.row_offset
end
def col_offset
1
csv_parser.col_offset
end
def row_parsers
@row_parsers ||= body_rows.map do |row|
stripped_row = row[col_offset..]
headers = ("field_1".."field_134").to_a
hash = Hash[headers.zip(stripped_row)]
hash[:bulk_upload] = bulk_upload
return @row_parsers if @row_parsers
@row_parsers = csv_parser.row_parsers
BulkUpload::Lettings::RowParser.new(hash)
@row_parsers.each do |row_parser|
row_parser.bulk_upload = bulk_upload
end
@row_parsers
end
def body_rows
rows[row_offset..]
csv_parser.body_rows
end
def rows
@rows ||= CSV.read(path, row_sep:)
end
# determine the row seperator from CSV
# Windows will use \r\n
def row_sep
contents = ""
File.open(path, "r") do |f|
contents = f.read
end
if contents[-2..] == "\r\n"
"\r\n"
else
"\n"
end
csv_parser.rows
end
end

Loading…
Cancel
Save