From a1c636bba7b0a9d1219b862537f203782abfcf95 Mon Sep 17 00:00:00 2001 From: Samuel Date: Wed, 23 Apr 2025 16:01:22 +0100 Subject: [PATCH] add functionality to csv download filters --- .../sales_logs_filters_controller.rb | 4 ++-- app/helpers/filters_helper.rb | 7 +++++++ app/views/filters/salestype.html.erb | 20 +++++++++++++++++++ config/routes.rb | 4 ++-- 4 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 app/views/filters/salestype.html.erb diff --git a/app/controllers/sales_logs_filters_controller.rb b/app/controllers/sales_logs_filters_controller.rb index b58b9c585..ffa4f4bc4 100644 --- a/app/controllers/sales_logs_filters_controller.rb +++ b/app/controllers/sales_logs_filters_controller.rb @@ -3,7 +3,7 @@ class SalesLogsFiltersController < ApplicationController before_action -> { sales_filter_manager.serialize_filters_to_session }, if: :current_user before_action :authenticate_user! - %w[years status assigned_to owned_by managed_by].each do |filter| + %w[years status salestype assigned_to owned_by managed_by].each do |filter| define_method(filter) do @filter_type = "sales_logs" @filter = filter @@ -18,7 +18,7 @@ class SalesLogsFiltersController < ApplicationController end end - %w[status assigned_to owned_by managed_by].each do |filter| + %w[status salestype assigned_to owned_by managed_by].each do |filter| define_method("update_#{filter}") do @filter_type = "sales_logs" diff --git a/app/helpers/filters_helper.rb b/app/helpers/filters_helper.rb index 27ae70f2d..57a3cabc3 100644 --- a/app/helpers/filters_helper.rb +++ b/app/helpers/filters_helper.rb @@ -261,6 +261,7 @@ module FiltersHelper { id: "years", label: "Collection year", value: formatted_years_filter(session_filters) }, { id: "status", label: "Status", value: formatted_status_filter(session_filters) }, filter_type == "lettings_logs" ? { id: "needstype", label: "Needs type", value: formatted_needstype_filter(session_filters) } : nil, + filter_type == "sales_logs" ? { id: "salestype", label: "Sales type", value: formatted_salestype_filter(session_filters) } : nil, { id: "assigned_to", label: "Assigned to", value: formatted_assigned_to_filter(session_filters) }, { id: "owned_by", label: "Owned by", value: formatted_owned_by_filter(session_filters, filter_type) }, { id: "managed_by", label: "Managed by", value: formatted_managed_by_filter(session_filters, filter_type) }, @@ -337,6 +338,12 @@ private session_filters["needstypes"].map { |needstype| needstype_filters[needstype] }.to_sentence end + def formatted_salestype_filter(session_filters) + return unanswered_filter_value if session_filters["salestypes"].blank? + + session_filters["salestypes"].map { |salestype| salestype_filters[salestype] }.to_sentence + end + def formatted_assigned_to_filter(session_filters) return unanswered_filter_value if session_filters["assigned_to"].blank? return "All" if session_filters["assigned_to"].include?("all") diff --git a/app/views/filters/salestype.html.erb b/app/views/filters/salestype.html.erb new file mode 100644 index 000000000..304541dd6 --- /dev/null +++ b/app/views/filters/salestype.html.erb @@ -0,0 +1,20 @@ +<%= form_with html: { method: :get }, url: update_csv_filters_url(@filter_type, @filter, @organisation_id) do |f| %> + <%= render partial: "filters/checkbox_filter", + locals: { + f:, + options: salestype_filters, + label: "Sales type", + category: "salestypes", + size: "l", + } %> + + <% if request.params["search"].present? %> + <%= f.hidden_field :search, value: request.params["search"] %> + <% end %> + <%= f.hidden_field :codes_only, value: request.params["codes_only"] %> + +
+ <%= f.govuk_submit "Save changes" %> + <%= govuk_button_link_to "Cancel", cancel_csv_filters_update_url(@filter_type, request.params["search"], request.params["codes_only"], @organisation_id), secondary: true %> +
+<% end %> diff --git a/config/routes.rb b/config/routes.rb index 6b1b6458b..fc17244c4 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -197,7 +197,7 @@ Rails.application.routes.draw do get "lettings-logs/filters/#{filter}", to: "lettings_logs_filters#organisation_#{filter.underscore}" get "lettings-logs/filters/update-#{filter}", to: "lettings_logs_filters#update_organisation_#{filter.underscore}" end - %w[years status assigned-to owned-by managed-by].each do |filter| + %w[years status salestype assigned-to owned-by managed-by].each do |filter| get "sales-logs/filters/#{filter}", to: "sales_logs_filters#organisation_#{filter.underscore}" get "sales-logs/filters/update-#{filter}", to: "sales_logs_filters#update_organisation_#{filter.underscore}" end @@ -327,7 +327,7 @@ Rails.application.routes.draw do post "delete-logs-confirmation", to: "delete_logs#delete_sales_logs_confirmation" delete "delete-logs", to: "delete_logs#discard_sales_logs" - %w[years status assigned-to owned-by managed-by].each do |filter| + %w[years status salestype assigned-to owned-by managed-by].each do |filter| get "filters/#{filter}", to: "sales_logs_filters##{filter.underscore}" get "filters/update-#{filter}", to: "sales_logs_filters#update_#{filter.underscore}" end