diff --git a/app/controllers/duplicate_logs_controller.rb b/app/controllers/duplicate_logs_controller.rb index e5ae95bbf..5ec7e5d0d 100644 --- a/app/controllers/duplicate_logs_controller.rb +++ b/app/controllers/duplicate_logs_controller.rb @@ -1,5 +1,8 @@ class DuplicateLogsController < ApplicationController + include DuplicateLogsHelper + before_action :authenticate_user! + before_action :authenticate_scope!, only: [:index] before_action :find_resource_by_named_id before_action :find_duplicate_logs before_action :find_original_log @@ -22,6 +25,14 @@ class DuplicateLogsController < ApplicationController render "logs/delete_duplicates" end + def index + @duplicates = params.permit(duplicates: {})[:duplicates]&.to_h || duplicates_for_user(current_user) + @duplicates[:lettings] ||= [] + @duplicates[:sales] ||= [] + @duplicate_sets_count = @duplicates[:lettings].count + @duplicates[:sales].count + render_not_found if @duplicate_sets_count.zero? + end + private def find_resource_by_named_id @@ -70,4 +81,11 @@ private current_user.lettings_logs.find_by(id: original_log_id) end end + + def authenticate_scope! + case action_name + when :index + render_not_found unless current_user.data_provider? + end + end end diff --git a/app/helpers/duplicate_logs_helper.rb b/app/helpers/duplicate_logs_helper.rb index 4a0cd09e4..b13920f1c 100644 --- a/app/helpers/duplicate_logs_helper.rb +++ b/app/helpers/duplicate_logs_helper.rb @@ -39,24 +39,24 @@ module DuplicateLogsHelper next if duplicate_lettings_ids.include? log.id duplicates = LettingsLog.filter_by_organisation(user.organisation).duplicate_logs(log) - if duplicates.any? - duplicate_ids = [log.id, *duplicates.map(&:id)] - duplicate_sets[:lettings][lettings_count] = duplicate_ids - lettings_count += 1 - duplicate_lettings_ids << duplicate_ids - end + next if duplicates.none? + + duplicate_ids = [log.id, *duplicates.map(&:id)] + duplicate_sets[:lettings][lettings_count] = duplicate_ids + lettings_count += 1 + duplicate_lettings_ids << duplicate_ids end user.sales_logs(created_by: true).each do |log| next if duplicate_sales_ids.include? log.id duplicates = SalesLog.filter_by_organisation(user.organisation).duplicate_logs(log) - if duplicates.any? - duplicate_ids = [log.id, *duplicates.map(&:id)] - duplicate_sets[:sales][sales_count] = duplicate_ids - sales_count += 1 - duplicate_sales_ids << duplicate_ids - end + next if duplicates.none? + + duplicate_ids = [log.id, *duplicates.map(&:id)] + duplicate_sets[:sales][sales_count] = duplicate_ids + sales_count += 1 + duplicate_sales_ids << duplicate_ids end return if duplicate_lettings_ids.empty? && duplicate_sales_ids.empty? diff --git a/app/views/duplicate_logs/index.html.erb b/app/views/duplicate_logs/index.html.erb new file mode 100644 index 000000000..ccc1f983c --- /dev/null +++ b/app/views/duplicate_logs/index.html.erb @@ -0,0 +1,29 @@ +<%= govuk_table do |table| %> + <%= table.head do |head| %> + <%= head.row do |row| %> + <% row.cell header: true, text: "Type of logs" %> + <% row.cell header: true, text: "Log IDs" %> + <% row.cell header: true %> + <% end %> + <% end %> + <%= table.body do |body| %> + <% @duplicates[:lettings].each do |_i, duplicate_set| %> + <% body.row do |row| %> + <% row.cell text: "Lettings" %> + <% row.cell text: duplicate_set.map { |id| "Log #{id}" }.join(", ") %> + <% row.cell do %> + <%= govuk_link_to "Review logs", lettings_log_duplicate_logs_path(duplicate_set.first) %> + <% end %> + <% end %> + <% end %> + <% @duplicates[:sales].each do |_i, duplicate_set| %> + <% body.row do |row| %> + <% row.cell text: "Sales" %> + <% row.cell text: duplicate_set.map { |id| "Log #{id}" }.join(", ") %> + <% row.cell do %> + <%= govuk_link_to "Review logs", sales_log_duplicate_logs_path(duplicate_set.first) %> + <% end %> + <% end %> + <% end %> + <% end %> +<% end %> diff --git a/app/views/logs/index.html.erb b/app/views/logs/index.html.erb index 7006d5136..97fa361f5 100644 --- a/app/views/logs/index.html.erb +++ b/app/views/logs/index.html.erb @@ -9,7 +9,7 @@ ) %> <% if @duplicates %> - <%= govuk_notification_banner(title_text: "Important", text: govuk_link_to("Review logs", href: "#")) do |banner| + <%= govuk_notification_banner(title_text: "Important", text: govuk_link_to("Review logs", duplicate_logs_path(duplicates: @duplicates))) do |banner| banner.with_heading(text: I18n.t("notification.duplicate_sets", count: @duplicate_sets_count)) end %> <% end %> diff --git a/config/routes.rb b/config/routes.rb index d509fc392..ab3643e6c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -105,6 +105,8 @@ Rails.application.routes.draw do end end + resources :duplicate_logs, only: [:index] + resources :users do get "edit-dpo", to: "users#dpo" get "edit-key-contact", to: "users#key_contact"