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. 8
      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 class DuplicateLogsController < ApplicationController
include DuplicateLogsHelper
before_action :authenticate_user! before_action :authenticate_user!
before_action :authenticate_scope!, only: [:index]
before_action :find_resource_by_named_id before_action :find_resource_by_named_id
before_action :find_duplicate_logs before_action :find_duplicate_logs
before_action :find_original_log before_action :find_original_log
@ -22,6 +25,14 @@ class DuplicateLogsController < ApplicationController
render "logs/delete_duplicates" render "logs/delete_duplicates"
end 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 private
def find_resource_by_named_id def find_resource_by_named_id
@ -70,4 +81,11 @@ private
current_user.lettings_logs.find_by(id: original_log_id) current_user.lettings_logs.find_by(id: original_log_id)
end end
end end
def authenticate_scope!
case action_name
when :index
render_not_found unless current_user.data_provider?
end
end
end end

8
app/helpers/duplicate_logs_helper.rb

@ -39,25 +39,25 @@ module DuplicateLogsHelper
next if duplicate_lettings_ids.include? log.id next if duplicate_lettings_ids.include? log.id
duplicates = LettingsLog.filter_by_organisation(user.organisation).duplicate_logs(log) duplicates = LettingsLog.filter_by_organisation(user.organisation).duplicate_logs(log)
if duplicates.any? next if duplicates.none?
duplicate_ids = [log.id, *duplicates.map(&:id)] duplicate_ids = [log.id, *duplicates.map(&:id)]
duplicate_sets[:lettings][lettings_count] = duplicate_ids duplicate_sets[:lettings][lettings_count] = duplicate_ids
lettings_count += 1 lettings_count += 1
duplicate_lettings_ids << duplicate_ids duplicate_lettings_ids << duplicate_ids
end end
end
user.sales_logs(created_by: true).each do |log| user.sales_logs(created_by: true).each do |log|
next if duplicate_sales_ids.include? log.id next if duplicate_sales_ids.include? log.id
duplicates = SalesLog.filter_by_organisation(user.organisation).duplicate_logs(log) duplicates = SalesLog.filter_by_organisation(user.organisation).duplicate_logs(log)
if duplicates.any? next if duplicates.none?
duplicate_ids = [log.id, *duplicates.map(&:id)] duplicate_ids = [log.id, *duplicates.map(&:id)]
duplicate_sets[:sales][sales_count] = duplicate_ids duplicate_sets[:sales][sales_count] = duplicate_ids
sales_count += 1 sales_count += 1
duplicate_sales_ids << duplicate_ids duplicate_sales_ids << duplicate_ids
end end
end
return if duplicate_lettings_ids.empty? && duplicate_sales_ids.empty? 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 %> <% 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)) banner.with_heading(text: I18n.t("notification.duplicate_sets", count: @duplicate_sets_count))
end %> end %>
<% end %> <% end %>

2
config/routes.rb

@ -105,6 +105,8 @@ Rails.application.routes.draw do
end end
end end
resources :duplicate_logs, only: [:index]
resources :users do resources :users do
get "edit-dpo", to: "users#dpo" get "edit-dpo", to: "users#dpo"
get "edit-key-contact", to: "users#key_contact" get "edit-key-contact", to: "users#key_contact"

Loading…
Cancel
Save