Browse Source

Show all bulk uploads

pull/2653/head
Manny Dinssa 2 years ago
parent
commit
b836169f3d
  1. 35
      app/components/bulk_upload_summary_component.html.erb
  2. 29
      app/components/bulk_upload_summary_component.rb
  3. 5
      app/components/create_log_actions_component.html.erb
  4. 18
      app/components/create_log_actions_component.rb
  5. 4
      app/components/search_component.rb
  6. 11
      app/controllers/lettings_logs_controller.rb
  7. 11
      app/controllers/sales_logs_controller.rb
  8. 49
      app/helpers/bulk_upload_helper.rb
  9. 0
      app/views/bulk_upload_shared/_upload_filters.html.erb
  10. 15
      app/views/bulk_upload_shared/_upload_list.html.erb
  11. 28
      app/views/bulk_upload_shared/uploads.html.erb
  12. 2
      config/routes.rb

35
app/components/bulk_upload_summary_component.html.erb

@ -0,0 +1,35 @@
<article class="app-log-summary">
<div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds">
<header class="app-log-summary__header">
<h2 class="app-log-summary__title govuk-heading-m govuk-!-font-weight-regular" style="white-space: normal; word-break: break-all">
<span class="govuk-!-margin-right-1"><%= bulk_upload.filename %></span>
<span class="app-metadata app-log-summary__details" style="white-space: nowrap;"><%= bulk_upload.year %>/<%= bulk_upload.year + 1 %></span>
</h2>
</header>
<div class="govuk-!-margin-bottom-2">
<p class="govuk-hint govuk-!-font-size-16 govuk-!-margin-bottom-1">Uploaded by: <%= bulk_upload.user.name %> (<%= bulk_upload.user.email %>)</p>
<p class="govuk-hint govuk-!-font-size-16 govuk-!-margin-bottom-1">Uploading organisation: <%= bulk_upload.user.organisation.name %></p>
<p class="govuk-hint govuk-!-font-size-16 govuk-!-margin-bottom-1">Time of upload: <%= bulk_upload.created_at.to_formatted_s(:govuk_date_and_time) %></p>
</div>
<p class="govuk-body govuk-!-margin-bottom-3">
<%= download_file_link %>
<%= view_error_report_link %>
<%= view_logs_link %>
</p>
</div>
<footer class="govuk-grid-column-one-third app-log-summary__footer">
<p class="govuk-body govuk-!-margin-bottom-3">
<%= upload_status %>
</p>
<div>
<%= counts(
[bulk_upload.total_logs_count, "total log"],
[setup_errors_count, "error on important questions", "errors on important questions"],
[critical_errors_count, "critical error"],
[potential_errors_count, "potential error"]
) %>
</div>
</footer>
</div>
</article>

29
app/components/bulk_upload_summary_component.rb

@ -0,0 +1,29 @@
class BulkUploadSummaryComponent < ViewComponent::Base
include BulkUploadHelper
attr_reader :bulk_upload
def initialize(bulk_upload:)
@bulk_upload = bulk_upload
@bulk_upload_errors = bulk_upload.bulk_upload_errors
super
end
def upload_status
helpers.status_tag("in_progress")
end
def setup_errors_count
@bulk_upload_errors.where(category: "setup").count
end
def critical_errors_count
@bulk_upload_errors.where(category: [nil, ""]).count
end
def potential_errors_count
@bulk_upload_errors.where(category: "soft_validations").count
end
end

5
app/components/create_log_actions_component.html.erb

@ -3,8 +3,11 @@
<% if create_button_href.present? %>
<%= govuk_button_to create_button_copy, create_button_href, class: "govuk-!-margin-right-6" %>
<% end %>
<% if upload_button_href.present? %>
<% if upload_button_href.present? && !user.support? %>
<%= govuk_button_link_to upload_button_copy, upload_button_href, secondary: true %>
<% end %>
<% if view_uploads_button_href.present? && user.support? %>
<%= govuk_button_link_to view_uploads_button_copy, view_uploads_button_href, secondary: true %>
<% end %>
</div>
<% end %>

18
app/components/create_log_actions_component.rb

@ -53,4 +53,22 @@ class CreateLogActionsComponent < ViewComponent::Base
bulk_upload_sales_log_path(id: "start")
end
end
def view_uploads_button_copy
case log_type
when "lettings"
"View lettings logs in bulk"
when "sales"
"View sales logs in bulk"
end
end
def view_uploads_button_href
case log_type
when "lettings"
bulk_uploads_lettings_logs_path
when "sales"
bulk_uploads_sales_logs_path
end
end
end

4
app/components/search_component.rb

@ -19,6 +19,10 @@ class SearchComponent < ViewComponent::Base
request.path
elsif request.path.include?("organisations") && request.path.include?("managing-agents")
request.path
elsif request.path.include?("bulk-uploads") && request.path.include?("sales-logs")
request.path
elsif request.path.include?("bulk-uploads") && request.path.include?("lettings-logs")
request.path
elsif request.path.include?("users")
user_path(current_user)
elsif request.path.include?("organisations")

11
app/controllers/lettings_logs_controller.rb

@ -115,6 +115,17 @@ class LettingsLogsController < LogsController
end
end
def bulk_uploads
uploads = BulkUpload.lettings.where("created_at >= ?", 30.days.ago)
# unpaginated_filtered_uploads = filter_manager.filtered_uploads(uploads, search_term, session_filters)
@pagy, @bulk_uploads = pagy(uploads)
@search_term = search_term
@searched = search_term.presence
@filter_type = "lettings_bulk_uploads"
render "bulk_upload_shared/uploads"
end
private
def session_filters

11
app/controllers/sales_logs_controller.rb

@ -85,6 +85,17 @@ class SalesLogsController < LogsController
params.require(:sales_log).permit(SalesLog.editable_fields)
end
def bulk_uploads
uploads = BulkUpload.sales.where("created_at >= ?", 30.days.ago)
# unpaginated_filtered_uploads = filter_manager.filtered_uploads(uploads, search_term, session_filters)
@pagy, @bulk_uploads = pagy(uploads)
@search_term = search_term
@searched = search_term.presence
@filter_type = "sales_bulk_uploads"
render "bulk_upload_shared/uploads"
end
private
def session_filters

49
app/helpers/bulk_upload_helper.rb

@ -0,0 +1,49 @@
module BulkUploadHelper
def bulk_upload_title(controller)
case controller.controller_name
when "lettings_logs"
"Lettings Bulk Uploads"
when "sales_logs"
"Sales Bulk Uploads"
else
"Bulk Uploads"
end
end
def bulk_upload_details(bulk_upload)
content_tag(:span) do
concat("Uploaded by: #{bulk_upload.user.name} (#{bulk_upload.user.email})<br>".html_safe)
concat("Uploading organisation: #{bulk_upload.user.organisation.name}<br>".html_safe)
concat("Time of upload: #{bulk_upload.created_at.to_formatted_s(:govuk_date)}".html_safe)
end
end
def formatted_count_text(count, singular_text, plural_text = nil)
return if count.nil? || count <= 0
text = count > 1 ? (plural_text || singular_text.pluralize(count)) : singular_text
content_tag(:p, class: "govuk-hint govuk-!-font-size-16 govuk-!-margin-bottom-1") do
concat(content_tag(:strong, count))
concat(" #{text}")
end
end
def counts(*counts_with_texts)
counts_with_texts.map { |count, singular_text, plural_text|
formatted_count_text(count, singular_text, plural_text) if count.present?
}.compact.join("").html_safe
end
def download_file_link
link_to "Download file", "#", class: "govuk-link govuk-!-margin-right-2"
end
def view_error_report_link
link_to "View error report", "#", class: "govuk-link"
end
def view_logs_link
link_to "View logs", "#", class: "govuk-link"
end
end

0
app/views/bulk_upload_shared/_upload_filters.html.erb

15
app/views/bulk_upload_shared/_upload_list.html.erb

@ -0,0 +1,15 @@
<h2 class="govuk-body">
<div class="govuk-grid-row app-search__caption">
<div class="govuk-grid-column-three-quarters">
<%= render(SearchResultCaptionComponent.new(searched:, count: pagy.count, item_label:, total_count:, item: "files uploaded in the last 30 days", filters_count: applied_filters_count(@filter_type))) %>
</div>
<div class="govuk-grid-column-one-quarter govuk-!-text-align-right">
<% if searched || applied_filters_count(@filter_type).positive? %>
<br>
<% end %>
</div>
</div>
</h2>
<% bulk_uploads.map do |bulk_upload| %>
<%= render BulkUploadSummaryComponent.new(bulk_upload:) %>
<% end %>

28
app/views/bulk_upload_shared/uploads.html.erb

@ -0,0 +1,28 @@
<% item_label = format_label(@pagy.count, "uploads") %>
<% title = format_title(@searched, "Lettings bulk uploads", current_user, item_label, @pagy.count, nil) %>
<% content_for :title, title %>
<h1 class="govuk-heading-l govuk-!-margin-bottom-8">
<%= "#{log_type_for_controller(controller).capitalize} bulk uploads" %>
</h1>
<div class="app-filter-layout" data-controller="filter-layout">
<%= render partial: "bulk_upload_shared/upload_filters" %>
<div class="app-filter-layout__content">
<%= render SearchComponent.new(current_user:, search_label: "Search by file name, user's name or email, or organisation", value: @searched) %>
<%= govuk_section_break(visible: true, size: "m") %>
<%= render partial: "bulk_upload_shared/upload_list",
locals: {
bulk_uploads: @bulk_uploads,
title: "Bulk uploads",
pagy: @pagy,
searched: @searched,
item_label:,
total_count: @total_count,
filter_type: @filter_type,
} %>
<%== render partial: "pagy/nav", locals: { pagy: @pagy, item_name: "bulk uploads" } %>
</div>
</div>

2
config/routes.rb

@ -236,6 +236,7 @@ Rails.application.routes.draw do
get "csv-download", to: "lettings_logs#download_csv"
post "email-csv", to: "lettings_logs#email_csv"
get "csv-confirmation", to: "lettings_logs#csv_confirmation"
get "bulk-uploads", to: "lettings_logs#bulk_uploads"
get "delete-logs", to: "delete_logs#delete_lettings_logs"
post "delete-logs", to: "delete_logs#delete_lettings_logs_with_selected_ids"
@ -308,6 +309,7 @@ Rails.application.routes.draw do
get "csv-download", to: "sales_logs#download_csv"
post "email-csv", to: "sales_logs#email_csv"
get "csv-confirmation", to: "sales_logs#csv_confirmation"
get "bulk-uploads", to: "sales_logs#bulk_uploads"
get "delete-logs", to: "delete_logs#delete_sales_logs"
post "delete-logs", to: "delete_logs#delete_sales_logs_with_selected_ids"

Loading…
Cancel
Save