class BulkUpload::Lettings::LogCreator attr_reader :bulk_upload, :path def initialize(bulk_upload:, path:, confirm_soft_validations: false) @bulk_upload = bulk_upload @path = path @confirm_soft_validations = confirm_soft_validations 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.skip_update_status = true row_parser.log.status = "pending" row_parser.log.status_cache = row_parser.log.calculate_status # confirm soft validations if @confirm_soft_validations row_parser.log.retirement_value_check = 0 row_parser.log.pregnancy_value_check = 0 row_parser.log.major_repairs_date_value_check = 0 row_parser.log.void_date_value_check = 0 row_parser.log.rent_value_check = 0 row_parser.log.net_income_value_check = 0 row_parser.log.carehome_charges_value_check = 0 end 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::Lettings::Year2022::CsvParser.new(path:) when 2023 BulkUpload::Lettings::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