From ccc73909c2314d417db42df7ff107201d0fd941e Mon Sep 17 00:00:00 2001 From: Arthur Campbell Date: Thu, 9 Feb 2023 10:37:13 +0000 Subject: [PATCH] enable codes only download in UI - add link on lettings log index page - pass codes_only flag through params in relevant links and methods - convert flag to boolean in controller methods --- app/controllers/lettings_logs_controller.rb | 6 ++++-- app/helpers/logs_helper.rb | 7 +++---- app/views/logs/_log_list.html.erb | 3 ++- app/views/logs/download_csv.html.erb | 2 +- app/views/logs/index.html.erb | 12 +++++++++++- 5 files changed, 21 insertions(+), 9 deletions(-) diff --git a/app/controllers/lettings_logs_controller.rb b/app/controllers/lettings_logs_controller.rb index f86a55a27..bae6cc844 100644 --- a/app/controllers/lettings_logs_controller.rb +++ b/app/controllers/lettings_logs_controller.rb @@ -80,13 +80,15 @@ class LettingsLogsController < LogsController def download_csv unpaginated_filtered_logs = filtered_logs(current_user.lettings_logs, search_term, @session_filters) + is_codes_only_export = params.require(:codes_only) == "true" - render "download_csv", locals: { search_term:, count: unpaginated_filtered_logs.size, post_path: email_csv_lettings_logs_path } + render "download_csv", locals: { search_term:, count: unpaginated_filtered_logs.size, post_path: email_csv_lettings_logs_path, is_codes_only_export: } end def email_csv all_orgs = params["organisation_select"] == "all" - EmailCsvJob.perform_later(current_user, search_term, @session_filters, all_orgs) + is_codes_only_export = params.require(:is_codes_only_export) == "true" + EmailCsvJob.perform_later(current_user, search_term, @session_filters, all_orgs, nil, is_codes_only_export) redirect_to csv_confirmation_lettings_logs_path end diff --git a/app/helpers/logs_helper.rb b/app/helpers/logs_helper.rb index 7653b7e5c..aa132afd6 100644 --- a/app/helpers/logs_helper.rb +++ b/app/helpers/logs_helper.rb @@ -33,10 +33,9 @@ module LogsHelper end end - def csv_download_url_for_controller(controller) - case log_type_for_controller(controller) - when "lettings" - csv_download_lettings_logs_path(search: params["search"]) + def csv_download_url_for_controller(controller_type:, search:, codes_only:) + case log_type_for_controller(controller_type) + when "lettings" then csv_download_lettings_logs_path(search:, codes_only:) end end end diff --git a/app/views/logs/_log_list.html.erb b/app/views/logs/_log_list.html.erb index 1aeaa03f2..043da29b0 100644 --- a/app/views/logs/_log_list.html.erb +++ b/app/views/logs/_log_list.html.erb @@ -1,7 +1,8 @@

<%= render(SearchResultCaptionComponent.new(searched:, count: pagy.count, item_label:, total_count:, item: "logs", path: request.path)) %> <% if logs&.first&.lettings? %> - <%= govuk_link_to "Download (CSV)", csv_download_url, type: "text/csv" %> + <%= govuk_link_to "Download (CSV)", csv_download_url, type: "text/csv", class: "govuk-!-margin-right-4" %> + <%= govuk_link_to "Download (CSV, codes only)", csv_codes_only_download_url, type: "text/csv" %> <% end %>

<% logs.map do |log| %> diff --git a/app/views/logs/download_csv.html.erb b/app/views/logs/download_csv.html.erb index 4e0da2704..74c077bdf 100644 --- a/app/views/logs/download_csv.html.erb +++ b/app/views/logs/download_csv.html.erb @@ -11,6 +11,6 @@

We'll send a secure download link to your email address <%= @current_user.email %>.

You've selected <%= count %> logs.

- <%= govuk_button_to "Send email", post_path, method: :post, params: { search: search_term } %> + <%= govuk_button_to "Send email", post_path, method: :post, params: { search: search_term, is_codes_only_export: } %> diff --git a/app/views/logs/index.html.erb b/app/views/logs/index.html.erb index 0e4cd76df..0155e33a9 100644 --- a/app/views/logs/index.html.erb +++ b/app/views/logs/index.html.erb @@ -66,7 +66,17 @@
<%= render SearchComponent.new(current_user:, search_label: search_label_for_controller(controller), value: @searched) %> <%= govuk_section_break(visible: true, size: "m") %> - <%= render partial: "log_list", locals: { logs: @logs, title: "Logs", pagy: @pagy, searched: @searched, item_label:, total_count: @total_count, csv_download_url: csv_download_url_for_controller(controller) } %> + <%= render partial: "log_list", + locals: { + logs: @logs, + title: "Logs", + pagy: @pagy, + searched: @searched, + item_label:, + total_count: @total_count, + csv_download_url: csv_download_url_for_controller(controller_type: controller, search: @search_term, codes_only: false), + csv_codes_only_download_url: csv_download_url_for_controller(controller_type: controller, search: @search_term, codes_only: true) + } %> <%== render partial: "pagy/nav", locals: { pagy: @pagy, item_name: "logs" } %>