diff --git a/app/components/bulk_upload_error_row_component.rb b/app/components/bulk_upload_error_row_component.rb index 51eb97932..13ac326ef 100644 --- a/app/components/bulk_upload_error_row_component.rb +++ b/app/components/bulk_upload_error_row_component.rb @@ -24,14 +24,7 @@ class BulkUploadErrorRowComponent < ViewComponent::Base end def question_for_field(field) - case bulk_upload.log_type - when "lettings" - BulkUpload::Lettings::RowParser.question_for_field(field.to_sym) - when "sales" - BulkUpload::Sales::RowParser.question_for_field(field.to_sym) - else - "Unknown question" - end + bulk_upload.prefix_namespace::RowParser.question_for_field(field.to_sym) end def bulk_upload diff --git a/app/components/bulk_upload_error_summary_table_component.rb b/app/components/bulk_upload_error_summary_table_component.rb index f6ee3652e..909fb5f0d 100644 --- a/app/components/bulk_upload_error_summary_table_component.rb +++ b/app/components/bulk_upload_error_summary_table_component.rb @@ -31,10 +31,6 @@ private end def row_parser_class - if bulk_upload.lettings? - BulkUpload::Lettings::RowParser - else - BulkUpload::Sales::RowParser - end + bulk_upload.prefix_namespace::RowParser end end diff --git a/app/mailers/bulk_upload_mailer.rb b/app/mailers/bulk_upload_mailer.rb index 7c768093d..3d5fca769 100644 --- a/app/mailers/bulk_upload_mailer.rb +++ b/app/mailers/bulk_upload_mailer.rb @@ -73,11 +73,7 @@ class BulkUploadMailer < NotifyMailer start_bulk_upload_sales_logs_url end - row_parser_class = if bulk_upload.lettings? - BulkUpload::Lettings::RowParser - else - BulkUpload::Sales::RowParser - end + row_parser_class = bulk_upload.prefix_namespace::RowParser errors = bulk_upload .bulk_upload_errors diff --git a/app/models/bulk_upload.rb b/app/models/bulk_upload.rb index 0adf0d84a..ff334b968 100644 --- a/app/models/bulk_upload.rb +++ b/app/models/bulk_upload.rb @@ -46,6 +46,28 @@ class BulkUpload < ApplicationRecord needstype == 2 end + def prefix_namespace + type_class = case log_type + when "lettings" + "Lettings" + when "sales" + "Sales" + else + raise "unknown log type" + end + + year_class = case year + when 2022 + "Year2022" + when 2023 + "Year2023" + else + raise "unknown year" + end + + "BulkUpload::#{type_class}::#{year_class}".constantize + end + private def generate_identifier diff --git a/app/services/bulk_upload/lettings/year2022/csv_parser.rb b/app/services/bulk_upload/lettings/year2022/csv_parser.rb index 313e50b6a..ddbd8e31b 100644 --- a/app/services/bulk_upload/lettings/year2022/csv_parser.rb +++ b/app/services/bulk_upload/lettings/year2022/csv_parser.rb @@ -25,7 +25,7 @@ class BulkUpload::Lettings::Year2022::CsvParser headers = ("field_1".."field_134").to_a hash = Hash[headers.zip(stripped_row)] - BulkUpload::Lettings::RowParser.new(hash) + BulkUpload::Lettings::Year2022::RowParser.new(hash) end end diff --git a/app/services/bulk_upload/lettings/row_parser.rb b/app/services/bulk_upload/lettings/year2022/row_parser.rb similarity index 99% rename from app/services/bulk_upload/lettings/row_parser.rb rename to app/services/bulk_upload/lettings/year2022/row_parser.rb index a81a8b5af..edb966ee5 100644 --- a/app/services/bulk_upload/lettings/row_parser.rb +++ b/app/services/bulk_upload/lettings/year2022/row_parser.rb @@ -1,4 +1,4 @@ -class BulkUpload::Lettings::RowParser +class BulkUpload::Lettings::Year2022::RowParser include ActiveModel::Model include ActiveModel::Attributes diff --git a/app/services/bulk_upload/sales/validator.rb b/app/services/bulk_upload/sales/validator.rb index 936579c53..bddbfd13f 100644 --- a/app/services/bulk_upload/sales/validator.rb +++ b/app/services/bulk_upload/sales/validator.rb @@ -61,7 +61,7 @@ private headers = ("field_1".."field_125").to_a hash = Hash[headers.zip(stripped_row)] - BulkUpload::Sales::RowParser.new(hash) + BulkUpload::Sales::Year2022::RowParser.new(hash) end end diff --git a/app/services/bulk_upload/sales/row_parser.rb b/app/services/bulk_upload/sales/year2022/row_parser.rb similarity index 99% rename from app/services/bulk_upload/sales/row_parser.rb rename to app/services/bulk_upload/sales/year2022/row_parser.rb index c52c08c16..965c3547a 100644 --- a/app/services/bulk_upload/sales/row_parser.rb +++ b/app/services/bulk_upload/sales/year2022/row_parser.rb @@ -1,4 +1,4 @@ -class BulkUpload::Sales::RowParser +class BulkUpload::Sales::Year2022::RowParser include ActiveModel::Model include ActiveModel::Attributes diff --git a/spec/components/bulk_upload_error_summary_table_component_spec.rb b/spec/components/bulk_upload_error_summary_table_component_spec.rb index 78b6fc536..7fb7b65ed 100644 --- a/spec/components/bulk_upload_error_summary_table_component_spec.rb +++ b/spec/components/bulk_upload_error_summary_table_component_spec.rb @@ -52,7 +52,7 @@ RSpec.describe BulkUploadErrorSummaryTableComponent, type: :component do expect(row_1).to eql([ "A", "1", - BulkUpload::Lettings::RowParser.question_for_field(error_1.field.to_sym), + bulk_upload.prefix_namespace::RowParser.question_for_field(error_1.field.to_sym), error_1.error, error_1.field, ]) @@ -62,7 +62,7 @@ RSpec.describe BulkUploadErrorSummaryTableComponent, type: :component do expect(row_2).to eql([ "B", "1", - BulkUpload::Lettings::RowParser.question_for_field(error_2.field.to_sym), + bulk_upload.prefix_namespace::RowParser.question_for_field(error_2.field.to_sym), error_2.error, error_2.field, ]) @@ -89,7 +89,7 @@ RSpec.describe BulkUploadErrorSummaryTableComponent, type: :component do expect(row_1).to eql([ "A", "2", - BulkUpload::Lettings::RowParser.question_for_field(error_1.field.to_sym), + bulk_upload.prefix_namespace::RowParser.question_for_field(error_1.field.to_sym), error_1.error, error_1.field, ]) diff --git a/spec/services/bulk_upload/lettings/row_parser_spec.rb b/spec/services/bulk_upload/lettings/year2022/row_parser_spec.rb similarity index 99% rename from spec/services/bulk_upload/lettings/row_parser_spec.rb rename to spec/services/bulk_upload/lettings/year2022/row_parser_spec.rb index 68990c59b..312a63a3b 100644 --- a/spec/services/bulk_upload/lettings/row_parser_spec.rb +++ b/spec/services/bulk_upload/lettings/year2022/row_parser_spec.rb @@ -1,6 +1,6 @@ require "rails_helper" -RSpec.describe BulkUpload::Lettings::RowParser do +RSpec.describe BulkUpload::Lettings::Year2022::RowParser do subject(:parser) { described_class.new(attributes) } let(:now) { Time.zone.today } diff --git a/spec/services/bulk_upload/sales/row_parser_spec.rb b/spec/services/bulk_upload/sales/year2022/row_parser_spec.rb similarity index 87% rename from spec/services/bulk_upload/sales/row_parser_spec.rb rename to spec/services/bulk_upload/sales/year2022/row_parser_spec.rb index 38f02fabb..e27355dc4 100644 --- a/spec/services/bulk_upload/sales/row_parser_spec.rb +++ b/spec/services/bulk_upload/sales/year2022/row_parser_spec.rb @@ -1,6 +1,6 @@ require "rails_helper" -RSpec.describe BulkUpload::Sales::RowParser do +RSpec.describe BulkUpload::Sales::Year2022::RowParser do subject(:parser) { described_class.new(attributes) } describe "validations" do