Browse Source

refactor after code review

pull/1568/head
Arthur Campbell 3 years ago
parent
commit
b9f7fbd17a
  1. 10
      app/controllers/organisations_controller.rb
  2. 38
      app/helpers/logs_helper.rb
  3. 5
      app/jobs/email_csv_job.rb
  4. 3
      app/views/logs/csv_confirmation.html.erb
  5. 4
      app/views/logs/index.html.erb

10
app/controllers/organisations_controller.rb

@ -114,8 +114,7 @@ class OrganisationsController < ApplicationController
end end
def email_lettings_csv def email_lettings_csv
codes_only_export = params.require(:codes_only) == "true" EmailCsvJob.perform_later(current_user, search_term, @session_filters, false, @organisation, codes_only_export?)
EmailCsvJob.perform_later(current_user, search_term, @session_filters, false, @organisation, codes_only_export)
redirect_to lettings_logs_csv_confirmation_organisation_path redirect_to lettings_logs_csv_confirmation_organisation_path
end end
@ -148,8 +147,7 @@ class OrganisationsController < ApplicationController
end end
def email_sales_csv def email_sales_csv
codes_only_export = params.require(:codes_only) == "true" EmailCsvJob.perform_later(current_user, search_term, @session_filters, false, @organisation, codes_only_export?, "sales")
EmailCsvJob.perform_later(current_user, search_term, @session_filters, false, @organisation, codes_only_export, "sales")
redirect_to sales_logs_csv_confirmation_organisation_path redirect_to sales_logs_csv_confirmation_organisation_path
end end
@ -163,6 +161,10 @@ private
params.require(:organisation).permit(:name, :address_line1, :address_line2, :postcode, :phone, :holds_own_stock, :provider_type, :housing_registration_no) params.require(:organisation).permit(:name, :address_line1, :address_line2, :postcode, :phone, :holds_own_stock, :provider_type, :housing_registration_no)
end end
def codes_only_export?
params.require(:codes_only) == "true"
end
def search_term def search_term
params["search"] params["search"]
end end

38
app/helpers/logs_helper.rb

@ -1,10 +1,8 @@
module LogsHelper module LogsHelper
def log_type_for_controller(controller) def log_type_for_controller(controller)
case controller.class.to_s case controller.class.name
when "LettingsLogsController" when "LettingsLogsController" then "lettings"
"lettings" when "SalesLogsController" then "sales"
when "SalesLogsController"
"sales"
else else
raise "Log type not found for #{controller.class}" raise "Log type not found for #{controller.class}"
end end
@ -12,10 +10,8 @@ module LogsHelper
def bulk_upload_path_for_controller(controller, id:) def bulk_upload_path_for_controller(controller, id:)
case log_type_for_controller(controller) case log_type_for_controller(controller)
when "lettings" when "lettings" then bulk_upload_lettings_log_path(id:)
bulk_upload_lettings_log_path(id:) when "sales" then bulk_upload_sales_log_path(id:)
when "sales"
bulk_upload_sales_log_path(id:)
end end
end end
@ -26,25 +22,29 @@ module LogsHelper
def search_label_for_controller(controller) def search_label_for_controller(controller)
case log_type_for_controller(controller) case log_type_for_controller(controller)
when "lettings" when "lettings" then "Search by log ID, tenant code, property reference or postcode"
"Search by log ID, tenant code, property reference or postcode" when "sales" then "Search by log ID, purchaser code or postcode"
when "sales"
"Search by log ID, purchaser code or postcode"
end end
end end
def csv_download_url_for_controller(controller_type:, search:, codes_only:) def csv_download_url_for_controller(controller:, search:, codes_only:)
case log_type_for_controller(controller_type) case log_type_for_controller(controller)
when "lettings" then csv_download_lettings_logs_path(search:, codes_only:) when "lettings" then csv_download_lettings_logs_path(search:, codes_only:)
when "sales" then csv_download_sales_logs_path(search:, codes_only:) when "sales" then csv_download_sales_logs_path(search:, codes_only:)
end end
end end
def logs_path_for_controller(controller)
case log_type_for_controller(controller)
when "lettings" then lettings_logs_path
when "sales" then sales_logs_path
end
end
def csv_download_url_by_log_type(log_type, organisation, search:, codes_only:) def csv_download_url_by_log_type(log_type, organisation, search:, codes_only:)
if log_type == :lettings case log_type
lettings_logs_csv_download_organisation_path(organisation, search:, codes_only:) when :lettings then lettings_logs_csv_download_organisation_path(organisation, search:, codes_only:)
else when :sales then sales_logs_csv_download_organisation_path(organisation, search:, codes_only:)
sales_logs_csv_download_organisation_path(organisation, search:, codes_only:)
end end
end end
end end

5
app/jobs/email_csv_job.rb

@ -6,11 +6,12 @@ class EmailCsvJob < ApplicationJob
EXPIRATION_TIME = 3.hours.to_i EXPIRATION_TIME = 3.hours.to_i
def perform(user, search_term = nil, filters = {}, all_orgs = false, organisation = nil, codes_only_export = false, log_type = "lettings") # rubocop:disable Style/OptionalBooleanParameter - sidekiq can't serialise named params def perform(user, search_term = nil, filters = {}, all_orgs = false, organisation = nil, codes_only_export = false, log_type = "lettings") # rubocop:disable Style/OptionalBooleanParameter - sidekiq can't serialise named params
if log_type == "lettings" case log_type
when "lettings"
unfiltered_logs = organisation.present? && user.support? ? LettingsLog.visible.where(owning_organisation_id: organisation.id) : user.lettings_logs.visible unfiltered_logs = organisation.present? && user.support? ? LettingsLog.visible.where(owning_organisation_id: organisation.id) : user.lettings_logs.visible
filtered_logs = FilterService.filter_logs(unfiltered_logs, search_term, filters, all_orgs, user) filtered_logs = FilterService.filter_logs(unfiltered_logs, search_term, filters, all_orgs, user)
csv_string = filtered_logs.to_csv(user, codes_only_export:) csv_string = filtered_logs.to_csv(user, codes_only_export:)
else when "sales"
unfiltered_logs = organisation.present? && user.support? ? SalesLog.visible.where(owning_organisation_id: organisation.id) : user.sales_logs.visible unfiltered_logs = organisation.present? && user.support? ? SalesLog.visible.where(owning_organisation_id: organisation.id) : user.sales_logs.visible
filtered_logs = FilterService.filter_logs(unfiltered_logs, search_term, filters, all_orgs, user) filtered_logs = FilterService.filter_logs(unfiltered_logs, search_term, filters, all_orgs, user)
export_type = codes_only_export ? "codes" : "labels" export_type = codes_only_export ? "codes" : "labels"

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

@ -9,8 +9,7 @@
<p class="govuk-body">Open your email inbox and click the link to download your CSV file.</p> <p class="govuk-body">Open your email inbox and click the link to download your CSV file.</p>
<p class="govuk-body"> <p class="govuk-body">
<% logs_path = controller.class.name.start_with?("Lettings") ? lettings_logs_path : sales_logs_path %> <%= govuk_link_to "Return to logs", logs_path_for_controller(controller) %>
<%= govuk_link_to "Return to logs", logs_path %>
</p> </p>
</div> </div>
</div> </div>

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

@ -78,8 +78,8 @@
searched: @searched, searched: @searched,
item_label:, item_label:,
total_count: @total_count, total_count: @total_count,
csv_download_url: csv_download_url_for_controller(controller_type: controller, search: @search_term, codes_only: false), csv_download_url: csv_download_url_for_controller(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), csv_codes_only_download_url: csv_download_url_for_controller(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>

Loading…
Cancel
Save