diff --git a/app/controllers/test_data_controller.rb b/app/controllers/test_data_controller.rb index a0ec14123..2b049f176 100644 --- a/app/controllers/test_data_controller.rb +++ b/app/controllers/test_data_controller.rb @@ -19,10 +19,10 @@ class TestDataController < ApplicationController return render_not_found unless FeatureToggle.create_test_logs_enabled? file = Tempfile.new("test_lettings_log.csv") - header = ["Field number"] + (1..130).to_a - file.write("#{header.join(',')}\n") log = FactoryBot.create(:lettings_log, :completed, assigned_to: current_user, ppostcode_full: "SW1A 1AA") - file.write("#{([nil] + to_2024_lettings_row(log)).flatten.join(',')}\n") + log_to_csv = BulkUpload::LettingsLogToCsv.new(log:, line_ending: "\n", overrides: { organisation_id: "ORG#{log.owning_organisation_id}", managing_organisation_id: "ORG#{log.owning_organisation_id}" }) + file.write(log_to_csv.default_field_numbers_row) + file.write(log_to_csv.to_csv_row) file.rewind send_file file.path, type: "text/csv", filename: "test_lettings_log.csv", @@ -51,10 +51,11 @@ class TestDataController < ApplicationController return render_not_found unless FeatureToggle.create_test_logs_enabled? file = Tempfile.new("test_sales_log.csv") - header = ["Field number"] + (1..131).to_a - file.write("#{header.join(',')}\n") + log = FactoryBot.create(:sales_log, :completed, assigned_to: current_user, value: 180_000, deposit: 150_000) - file.write("#{([nil] + to_2024_sales_row(log)).flatten.join(',')}\n") + log_to_csv = BulkUpload::SalesLogToCsv.new(log:, line_ending: "\n", overrides: { organisation_id: "ORG#{log.owning_organisation_id}", managing_organisation_id: "ORG#{log.owning_organisation_id}" }) + file.write(log_to_csv.default_field_numbers_row) + file.write(log_to_csv.to_csv_row) file.rewind send_file file.path, type: "text/csv", filename: "test_sales_log.csv", @@ -64,358 +65,4 @@ class TestDataController < ApplicationController file.unlink } end - -private - - def to_2024_lettings_row(log) - [ - "ORG#{log.owning_organisation_id}", # 1 - "ORG#{log.managing_organisation_id}", - log.assigned_to&.email, - log.needstype, - log.scheme&.id ? "S#{log.scheme&.id}" : "", - log.location&.id, - renewal(log), - log.startdate&.day, - log.startdate&.month, - log.startdate&.strftime("%y"), # 10 - - rent_type(log), - log.irproduct_other, - log.tenancycode, - log.propcode, - log.declaration, - log.uprn, - log.address_line1&.tr(",", " "), - log.address_line2&.tr(",", " "), - log.town_or_city, - log.county, # 20 - - ((log.postcode_full || "").split(" ") || [""]).first, - ((log.postcode_full || "").split(" ") || [""]).last, - log.la, - log.rsnvac, - log.unitletas, - log.unittype_gn, - log.builtype, - log.wchair, - log.beds, - log.voiddate&.day, # 30 - - log.voiddate&.month, - log.voiddate&.strftime("%y"), - log.mrcdate&.day, - log.mrcdate&.month, - log.mrcdate&.strftime("%y"), - log.joint, - log.startertenancy, - log.tenancy, - log.tenancyother, - log.tenancylength, # 40 - - log.sheltered, - log.age1, - log.sex1, - log.ethnic, - log.nationality_all_group, - log.ecstat1, - log.relat2, - log.age2, - log.sex2, - log.ecstat2, # 50 - - log.relat3, - log.age3, - log.sex3, - log.ecstat3, - log.relat4, - log.age4, - log.sex4, - log.ecstat4, - log.relat5, - log.age5, # 60 - - log.sex5, - log.ecstat5, - log.relat6, - log.age6, - log.sex6, - log.ecstat6, - log.relat7, - log.age7, - log.sex7, - log.ecstat7, # 70 - - log.relat8, - log.age8, - log.sex8, - log.ecstat8, - log.armedforces, - log.leftreg, - log.reservist, - log.preg_occ, - log.housingneeds_a, - log.housingneeds_b, # 80 - - log.housingneeds_c, - log.housingneeds_f, - log.housingneeds_g, - log.housingneeds_h, - log.illness, - log.illness_type_1, - log.illness_type_2, - log.illness_type_3, - log.illness_type_4, - log.illness_type_5, # 90 - - log.illness_type_6, - log.illness_type_7, - log.illness_type_8, - log.illness_type_9, - log.illness_type_10, - log.layear, - log.waityear, - log.reason, - log.reasonother, - log.prevten, # 100 - - homeless(log), - previous_postcode_known(log), - ((log.ppostcode_full || "").split(" ") || [""]).first, - ((log.ppostcode_full || "").split(" ") || [""]).last, - log.prevloc, - log.reasonpref, - log.rp_homeless, - log.rp_insan_unsat, - log.rp_medwel, - log.rp_hardship, # 110 - - log.rp_dontknow, - cbl(log), - chr(log), - cap(log), - accessible_register(log), - log.referral, - net_income_known(log), - log.incfreq, - log.earnings, - log.hb, # 120 - - log.benefits, - log.household_charge, - log.period, - log.chcharge, - log.brent, - log.scharge, - log.pscharge, - log.supcharg, - log.hbrentshortfall, - log.tshortfall, # 130 - ] - end - - def renewal(log) - checkbox_value(log.renewal) - end - - def checkbox_value(field) - case field - when 0 - 2 - when 1 - 1 - end - end - - def rent_type(log) - LettingsLog::RENTTYPE_DETAIL_MAPPING[log.rent_type] - end - - def previous_postcode_known(log) - checkbox_value(log.ppcodenk) - end - - def homeless(log) - case log.homeless - when 1 - 1 - when 11 - 12 - end - end - - def cbl(log) - checkbox_value(log.cbl) - end - - def chr(log) - checkbox_value(log.chr) - end - - def cap(log) - checkbox_value(log.cap) - end - - def accessible_register(log) - checkbox_value(log.accessible_register) - end - - def net_income_known(log) - case log.net_income_known - when 0 - 1 - when 1 - 2 - when 2 - 4 - end - end - - def to_2024_sales_row(log) - [ - "ORG#{log.owning_organisation_id}", # 1 - "ORG#{log.managing_organisation_id}", - log.assigned_to&.email, - log.saledate&.day, - log.saledate&.month, - log.saledate&.strftime("%y"), - log.purchid, - log.ownershipsch, - log.ownershipsch == 1 ? log.type : "", # field_9: "What is the type of shared ownership sale?", - log.ownershipsch == 2 ? log.type : "", # field_10: "What is the type of discounted ownership sale?", - - log.ownershipsch == 3 ? log.type : "", # field_11: "What is the type of outright sale?", - log.othtype, - log.companybuy, - log.buylivein, - log.jointpur, - log.jointmore, - log.noint, - log.privacynotice, - log.beds, - log.proptype, # 20 - - log.builtype, - log.uprn, - log.address_line1&.tr(",", " "), - log.address_line2&.tr(",", " "), - log.town_or_city, - log.county, - ((log.postcode_full || "").split(" ") || [""]).first, - ((log.postcode_full || "").split(" ") || [""]).last, - log.la, - log.wchair, # 30 - - log.age1, - log.sex1, - log.ethnic, - log.nationality_all_group, - log.ecstat1, - log.buy1livein, - log.relat2, - log.age2, - log.sex2, - log.ethnic_group2, # 40 - - log.nationality_all_buyer2_group, - log.ecstat2, - log.buy2livein, - log.hholdcount, - log.relat3, - log.age3, - log.sex3, - log.ecstat3, - log.relat4, - log.age4, # 50 - - log.sex4, - log.ecstat4, - log.relat5, - log.age5, - log.sex5, - log.ecstat5, - log.relat6, - log.age6, - log.sex6, - log.ecstat6, # 60 - - log.prevten, - log.ppcodenk, - ((log.ppostcode_full || "").split(" ") || [""]).first, - ((log.ppostcode_full || "").split(" ") || [""]).last, - log.prevloc, - log.pregyrha, - log.pregother, - log.pregla, - log.pregghb, - log.buy2living, # 70 - - log.prevtenbuy2, - log.hhregres, - log.hhregresstill, - log.armedforcesspouse, - log.disabled, - log.wheel, - log.income1, - log.inc1mort, - log.income2, - log.inc2mort, # 80 - - log.hb, - log.savings.present? || "R", - log.prevown, - log.prevshared, - log.proplen, - log.staircase, - log.stairbought, - log.stairowned, - log.staircasesale, - log.resale, # 90 - - log.exdate&.day, - log.exdate&.month, - log.exdate&.strftime("%y"), - log.hodate&.day, - log.hodate&.month, # 60 - log.hodate&.strftime("%y"), - log.lanomagr, - log.frombeds, - log.fromprop, - log.socprevten, # 100 - - log.value, - log.equity, - log.mortgageused, - log.mortgage, - log.mortgagelender, - log.mortgagelenderother, - log.mortlen, - log.extrabor, - log.deposit, - log.cashdis, # 110 - - log.mrent, - log.mscharge, - log.proplen, - log.value, - log.grant, - log.discount || 0, - log.mortgageused, - log.mortgage, - log.mortgagelender, - log.mortgagelenderother, # 120 - - log.mortlen, - log.extrabor, - log.deposit, - log.mscharge, - log.value, - log.mortgageused, - log.mortgage, - log.mortlen, - log.extrabor, - log.deposit, # 130 - log.mscharge, - ] - end end diff --git a/spec/support/bulk_upload/lettings_log_to_csv.rb b/app/helpers/bulk_upload/lettings_log_to_csv.rb similarity index 96% rename from spec/support/bulk_upload/lettings_log_to_csv.rb rename to app/helpers/bulk_upload/lettings_log_to_csv.rb index 18c367ffc..cdf38db17 100644 --- a/spec/support/bulk_upload/lettings_log_to_csv.rb +++ b/app/helpers/bulk_upload/lettings_log_to_csv.rb @@ -2,10 +2,12 @@ class BulkUpload::LettingsLogToCsv attr_reader :log, :line_ending, :col_offset, :overrides def initialize(log:, line_ending: "\n", col_offset: 1, overrides: {}) + # rubocop:disable Rails/HelperInstanceVariable @log = log @line_ending = line_ending @col_offset = col_offset @overrides = overrides + # rubocop:enable Rails/HelperInstanceVariable end def row_prefix @@ -145,8 +147,8 @@ class BulkUpload::LettingsLogToCsv def to_2024_row [ - log.owning_organisation&.old_visible_id, # 1 - log.managing_organisation&.old_visible_id, + overrides[:organisation_id] || log.owning_organisation&.old_visible_id, # 1 + overrides[:managing_organisation_id] || log.managing_organisation&.old_visible_id, log.assigned_to&.email, log.needstype, log.scheme&.id ? "S#{log.scheme&.id}" : "", @@ -162,10 +164,10 @@ class BulkUpload::LettingsLogToCsv log.propcode, log.declaration, log.uprn, - log.address_line1, - log.address_line2, - log.town_or_city, - log.county, # 20 + log.address_line1&.tr(",", " "), + log.address_line2&.tr(",", " "), + log.town_or_city&.tr(",", " "), + log.county&.tr(",", " "), # 20 ((log.postcode_full || "").split(" ") || [""]).first, ((log.postcode_full || "").split(" ") || [""]).last, diff --git a/spec/support/bulk_upload/sales_log_to_csv.rb b/app/helpers/bulk_upload/sales_log_to_csv.rb similarity index 97% rename from spec/support/bulk_upload/sales_log_to_csv.rb rename to app/helpers/bulk_upload/sales_log_to_csv.rb index 8e2f1be0c..0d37fe344 100644 --- a/spec/support/bulk_upload/sales_log_to_csv.rb +++ b/app/helpers/bulk_upload/sales_log_to_csv.rb @@ -2,10 +2,12 @@ class BulkUpload::SalesLogToCsv attr_reader :log, :line_ending, :col_offset, :overrides def initialize(log:, line_ending: "\n", col_offset: 1, overrides: {}) + # rubocop:disable Rails/HelperInstanceVariable @log = log @line_ending = line_ending @col_offset = col_offset @overrides = overrides + # rubocop:enable Rails/HelperInstanceVariable end def row_prefix @@ -187,7 +189,7 @@ class BulkUpload::SalesLogToCsv log.prevloc, # 40 ((log.ppostcode_full || "").split(" ") || [""]).first, ((log.ppostcode_full || "").split(" ") || [""]).last, - log.ppcodenk == 0 ? 1 : nil, + log.ppcodenk&.zero? ? 1 : nil, log.pregyrha, log.pregla, @@ -311,10 +313,10 @@ class BulkUpload::SalesLogToCsv log.builtype, log.uprn, - log.address_line1, - log.address_line2, - log.town_or_city, - log.county, + log.address_line1&.tr(",", " "), + log.address_line2&.tr(",", " "), + log.town_or_city&.tr(",", " "), + log.county&.tr(",", " "), ((log.postcode_full || "").split(" ") || [""]).first, ((log.postcode_full || "").split(" ") || [""]).last, log.la,