Browse Source

implement same work for sales as for lettings

pull/1657/head
Arthur Campbell 3 years ago
parent
commit
a9f5086c56
  1. 47
      app/controllers/delete_logs_controller.rb
  2. 1
      app/controllers/sales_logs_controller.rb
  3. 48
      app/views/logs/delete_sales_logs.html.erb
  4. 7
      config/routes.rb

47
app/controllers/delete_logs_controller.rb

@ -6,13 +6,13 @@ class DeleteLogsController < ApplicationController
before_action :session_filters, if: :current_user, except: [:delete_logs]
def delete_lettings_logs
@delete_logs_form = delete_logs_form
@delete_logs_form = delete_logs_form(log_type: :lettings)
render "logs/delete_lettings_logs"
end
def delete_lettings_logs_with_selected_ids
selected_ids = params.require(:selected_ids).split.map(&:to_i)
@delete_logs_form = delete_logs_form(selected_ids:)
@delete_logs_form = delete_logs_form(selected_ids:, log_type: :lettings)
render "logs/delete_lettings_logs"
end
@ -44,10 +44,49 @@ class DeleteLogsController < ApplicationController
redirect_to lettings_logs_path, notice: I18n.t("notification.logs_deleted", count: logs.count)
end
def delete_sales_logs
@delete_logs_form = delete_logs_form(log_type: :sales)
render "logs/delete_sales_logs"
end
def delete_sales_logs_with_selected_ids
selected_ids = params.require(:selected_ids).split.map(&:to_i)
@delete_logs_form = delete_logs_form(selected_ids:, log_type: :sales)
render "logs/delete_sales_logs"
end
def delete_sales_logs_confirmation
default_attributes = {
current_user:,
log_filters: @session_filters,
log_type: :sales,
}
form_attributes = params.require(:forms_delete_logs_form).permit(:search_term, selected_ids: [])
attributes = form_attributes.merge(default_attributes)
attributes[:selected_ids] = [] unless attributes.key? :selected_ids
@delete_path = delete_logs_sales_logs_path
@delete_logs_form = Forms::DeleteLogsForm.new(attributes)
if @delete_logs_form.valid?
render "logs/delete_logs_confirmation"
else
render "logs/delete_sales_logs"
end
end
def discard_sales_logs
logs = SalesLog.find(params.require(:ids))
logs.each do |log|
authorize log, :destroy?
log.discard!
end
redirect_to sales_logs_path, notice: I18n.t("notification.logs_deleted", count: logs.count)
end
private
def delete_logs_form(selected_ids: nil)
Forms::DeleteLogsForm.new(current_user:, search_term:, log_filters: @session_filters, log_type: :lettings, selected_ids:)
def delete_logs_form(selected_ids: nil, log_type:)
Forms::DeleteLogsForm.new(current_user:, search_term:, log_filters: @session_filters, log_type:, selected_ids:)
end
def search_term

1
app/controllers/sales_logs_controller.rb

@ -18,6 +18,7 @@ class SalesLogsController < LogsController
all_logs = current_user.sales_logs.visible
unpaginated_filtered_logs = filter_manager.filtered_logs(all_logs, search_term, session_filters)
@delete_logs_path = delete_logs_sales_logs_path(search: search_term)
@search_term = search_term
@pagy, @logs = pagy(unpaginated_filtered_logs)
@searched = search_term.presence

48
app/views/logs/delete_sales_logs.html.erb

@ -0,0 +1,48 @@
<% title = "Delete logs" %>
<% content_for :title, title %>
<% content_for :before_content do %>
<%= govuk_back_link(href: :back) %>
<% end %>
<h1 class="govuk-heading-l">
<span class="govuk-caption-l"><%= title %></span>
Review the logs you want to delete
</h1>
<p>You've selected <%= @delete_logs_form.log_count %> <%= "log".pluralize(@delete_logs_form.log_count) %> to delete</p>
<%= form_with model: @delete_logs_form, url: delete_logs_confirmation_sales_logs_path do |f| %>
<%= f.hidden_field :search_term, value: @delete_logs_form.search_term %>
<%= f.govuk_error_summary %>
<%= govuk_table do |table| %>
<% table.head do |head| %>
<% head.row do |row| %>
<% row.cell(header: true, text: "Log ID") %>
<% row.cell(header: true, text: "Owning Organisation") %>
<% row.cell(header: true, text: "Created") %>
<% row.cell(header: true, text: "Status") %>
<% row.cell(header: true, text: "Delete?") %>
<% end %>
<% end %>
<% table.body do |body| %>
<% f.govuk_check_boxes_fieldset :selected_ids, small: true do %>
<% @delete_logs_form.logs.each do |log| %>
<% body.row do |row| %>
<% row.cell(text: log.id) %>
<% row.cell(text: log.owning_organisation&.name) %>
<% row.cell(text: log.created_at&.to_formatted_s(:govuk_date)) %>
<% row.cell(text: status_tag(log.status)) %>
<% row.cell do %>
<% f.govuk_check_box :selected_ids, log.id,
label: { text: log.id, hidden: true },
size: "s",
checked: @delete_logs_form.selected_ids.include?(log.id) %>
<% end %>
<% end %>
<% end %>
<% end %>
<% end %>
<% end %>
<%= f.govuk_submit "Continue" do %>
<%= govuk_button_link_to "Cancel", sales_logs_path(search: @delete_logs_form.search_term), secondary: true %>
<% end %>
<% end %>

7
config/routes.rb

@ -232,9 +232,10 @@ Rails.application.routes.draw do
post "email-csv", to: "sales_logs#email_csv"
get "csv-confirmation", to: "sales_logs#csv_confirmation"
get "delete-logs", to: "sales_logs#delete_logs_list"
get "delete-logs-confirmation", to: "sales_logs#delete_logs_confirmation"
delete "delete-logs", to: "sales_logs#delete_logs"
get "delete-logs", to: "delete_logs#delete_sales_logs"
post "delete-logs", to: "delete_logs#delete_sales_logs_with_selected_ids"
post "delete-logs-confirmation", to: "delete_logs#delete_sales_logs_confirmation"
delete "delete-logs", to: "delete_logs#discard_sales_logs"
resources :bulk_upload_sales_logs, path: "bulk-upload-logs" do
collection do

Loading…
Cancel
Save