From 54c6582ba72e41630856bf2dcac9137fec9e4fb2 Mon Sep 17 00:00:00 2001 From: Kat Date: Fri, 10 May 2024 09:59:45 +0100 Subject: [PATCH] Specify year in sales csv download service --- app/controllers/sales_logs_controller.rb | 2 +- app/jobs/email_csv_job.rb | 2 +- app/models/form_handler.rb | 4 +- app/services/csv/lettings_log_csv_service.rb | 2 +- app/services/csv/sales_log_csv_service.rb | 5 +- .../files/sales_logs_csv_export_codes_23.csv | 4 +- .../files/sales_logs_csv_export_codes_24.csv | 4 +- .../files/sales_logs_csv_export_labels_23.csv | 4 +- .../files/sales_logs_csv_export_labels_24.csv | 4 +- spec/jobs/email_csv_job_spec.rb | 8 +- .../csv/lettings_log_csv_service_spec.rb | 6 +- .../csv/sales_log_csv_service_spec.rb | 74 +++++++++---------- 12 files changed, 56 insertions(+), 63 deletions(-) diff --git a/app/controllers/sales_logs_controller.rb b/app/controllers/sales_logs_controller.rb index e86d841ce..3b03b6e94 100644 --- a/app/controllers/sales_logs_controller.rb +++ b/app/controllers/sales_logs_controller.rb @@ -71,7 +71,7 @@ class SalesLogsController < LogsController def email_csv all_orgs = params["organisation_select"] == "all" - EmailCsvJob.perform_later(current_user, search_term, session_filters, all_orgs, nil, codes_only_export?, "sales") + EmailCsvJob.perform_later(current_user, search_term, session_filters, all_orgs, nil, codes_only_export?, "sales", session_filters["years"].first.to_i) redirect_to csv_confirmation_sales_logs_path end diff --git a/app/jobs/email_csv_job.rb b/app/jobs/email_csv_job.rb index ef5d3439a..58f2d50b8 100644 --- a/app/jobs/email_csv_job.rb +++ b/app/jobs/email_csv_job.rb @@ -15,7 +15,7 @@ class EmailCsvJob < ApplicationJob when "sales" unfiltered_logs = organisation.present? && user.support? ? SalesLog.visible.where(owning_organisation_id: organisation.id) : user.sales_logs.visible filtered_logs = FilterManager.filter_logs(unfiltered_logs, search_term, filters, all_orgs, user) - csv_string = Csv::SalesLogCsvService.new(user:, export_type:).prepare_csv(filtered_logs) + csv_string = Csv::SalesLogCsvService.new(user:, export_type:, year:).prepare_csv(filtered_logs) end filename = "#{[log_type, 'logs', organisation&.name, Time.zone.now].compact.join('-')}.csv" diff --git a/app/models/form_handler.rb b/app/models/form_handler.rb index 5fd7fa3ad..88895334e 100644 --- a/app/models/form_handler.rb +++ b/app/models/form_handler.rb @@ -83,10 +83,10 @@ class FormHandler ordered_questions end - def ordered_lettings_questions_for_year(year) + def ordered_questions_for_year(year, type) return [] unless year - form_for_year = forms[form_name_from_start_year(year, "lettings")] + form_for_year = forms[form_name_from_start_year(year, type)] return [] unless form_for_year form_for_year.questions.uniq(&:id) diff --git a/app/services/csv/lettings_log_csv_service.rb b/app/services/csv/lettings_log_csv_service.rb index cbe060caa..59a9d58d7 100644 --- a/app/services/csv/lettings_log_csv_service.rb +++ b/app/services/csv/lettings_log_csv_service.rb @@ -304,7 +304,7 @@ module Csv SUPPORT_ONLY_ATTRIBUTES = %w[net_income_value_check first_time_property_let_as_social_housing postcode_known is_la_inferred totchild totelder totadult net_income_known previous_la_known is_previous_la_inferred age1_known age2_known age3_known age4_known age5_known age6_known age7_known age8_known details_known_2 details_known_3 details_known_4 details_known_5 details_known_6 details_known_7 details_known_8 wrent wscharge wpschrge wsupchrg wtcharge wtshortfall rent_value_check old_form_id old_id retirement_value_check tshortfall_known pregnancy_value_check hhtype new_old la prevloc updated_by_id bulk_upload_id uprn_confirmed address_line1_input postcode_full_input address_search_value_check uprn_selection reasonother_value_check address_line1_as_entered address_line2_as_entered town_or_city_as_entered county_as_entered postcode_full_as_entered la_as_entered created_by].freeze def lettings_log_attributes - ordered_questions = FormHandler.instance.ordered_lettings_questions_for_year(@year) + ordered_questions = FormHandler.instance.ordered_questions_for_year(@year, "lettings") ordered_questions.reject! { |q| q.id.match?(/age\d_known|rent_value_check|nationality_all_group/) } attributes = ordered_questions.flat_map do |question| if question.type == "checkbox" diff --git a/app/services/csv/sales_log_csv_service.rb b/app/services/csv/sales_log_csv_service.rb index 9a8067c88..9cb055f22 100644 --- a/app/services/csv/sales_log_csv_service.rb +++ b/app/services/csv/sales_log_csv_service.rb @@ -1,8 +1,9 @@ module Csv class SalesLogCsvService - def initialize(user:, export_type:) + def initialize(user:, export_type:, year:) @user = user @export_type = export_type + @year = year @attributes = sales_log_attributes end @@ -140,7 +141,7 @@ module Csv SUPPORT_ONLY_ATTRIBUTES = %w[address_line1_as_entered address_line2_as_entered town_or_city_as_entered county_as_entered postcode_full_as_entered la_as_entered created_by].freeze def sales_log_attributes - ordered_questions = FormHandler.instance.ordered_sales_questions_for_all_years + ordered_questions = FormHandler.instance.ordered_questions_for_year(@year, "sales") ordered_questions.reject! { |q| q.id.match?(/((?