Browse Source

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
pull/1268/head
Arthur Campbell 3 years ago
parent
commit
ccc73909c2
  1. 6
      app/controllers/lettings_logs_controller.rb
  2. 7
      app/helpers/logs_helper.rb
  3. 3
      app/views/logs/_log_list.html.erb
  4. 2
      app/views/logs/download_csv.html.erb
  5. 12
      app/views/logs/index.html.erb

6
app/controllers/lettings_logs_controller.rb

@ -80,13 +80,15 @@ class LettingsLogsController < LogsController
def download_csv def download_csv
unpaginated_filtered_logs = filtered_logs(current_user.lettings_logs, search_term, @session_filters) 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 end
def email_csv def email_csv
all_orgs = params["organisation_select"] == "all" 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 redirect_to csv_confirmation_lettings_logs_path
end end

7
app/helpers/logs_helper.rb

@ -33,10 +33,9 @@ module LogsHelper
end end
end end
def csv_download_url_for_controller(controller) def csv_download_url_for_controller(controller_type:, search:, codes_only:)
case log_type_for_controller(controller) case log_type_for_controller(controller_type)
when "lettings" when "lettings" then csv_download_lettings_logs_path(search:, codes_only:)
csv_download_lettings_logs_path(search: params["search"])
end end
end end
end end

3
app/views/logs/_log_list.html.erb

@ -1,7 +1,8 @@
<h2 class="govuk-body"> <h2 class="govuk-body">
<%= render(SearchResultCaptionComponent.new(searched:, count: pagy.count, item_label:, total_count:, item: "logs", path: request.path)) %> <%= render(SearchResultCaptionComponent.new(searched:, count: pagy.count, item_label:, total_count:, item: "logs", path: request.path)) %>
<% if logs&.first&.lettings? %> <% 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 %> <% end %>
</h2> </h2>
<% logs.map do |log| %> <% logs.map do |log| %>

2
app/views/logs/download_csv.html.erb

@ -11,6 +11,6 @@
<p class="govuk-body">We'll send a secure download link to your email address <strong><%= @current_user.email %></strong>.</p> <p class="govuk-body">We'll send a secure download link to your email address <strong><%= @current_user.email %></strong>.</p>
<p class="govuk-body">You've selected <%= count %> logs.</p> <p class="govuk-body">You've selected <%= count %> logs.</p>
<%= 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: } %>
</div> </div>
</div> </div>

12
app/views/logs/index.html.erb

@ -66,7 +66,17 @@
<div class="app-filter-layout__content"> <div class="app-filter-layout__content">
<%= render SearchComponent.new(current_user:, search_label: search_label_for_controller(controller), value: @searched) %> <%= render SearchComponent.new(current_user:, search_label: search_label_for_controller(controller), value: @searched) %>
<%= govuk_section_break(visible: true, size: "m") %> <%= 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" } %> <%== render partial: "pagy/nav", locals: { pagy: @pagy, item_name: "logs" } %>
</div> </div>
</div> </div>

Loading…
Cancel
Save