Browse Source

create user journey to view duplicate sets adn navigate to a given set

create a new route and add it to the link from the logs index page
create controller method and related view file
pull/1776/head
Arthur Campbell 3 years ago committed by Kat
parent
commit
7737f55bbb
  1. 18
      app/controllers/duplicate_logs_controller.rb
  2. 24
      app/helpers/duplicate_logs_helper.rb
  3. 29
      app/views/duplicate_logs/index.html.erb
  4. 2
      app/views/logs/index.html.erb
  5. 2
      config/routes.rb

18
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

24
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?

29
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 %>

2
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 %>

2
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"

Loading…
Cancel
Save