Browse Source

refactor: rename to filter manager

pull/1675/head
natdeanlewissoftwire 3 years ago
parent
commit
61b87e77cd
  1. 16
      app/controllers/lettings_logs_controller.rb
  2. 4
      app/controllers/modules/search_filter.rb
  3. 16
      app/controllers/organisations_controller.rb
  4. 16
      app/controllers/sales_logs_controller.rb
  5. 4
      app/jobs/email_csv_job.rb
  6. 2
      app/services/filter_manager.rb
  7. 2
      spec/services/filter_manager_spec.rb

16
app/controllers/lettings_logs_controller.rb

@ -4,7 +4,7 @@ class LettingsLogsController < LogsController
before_action :find_resource, only: %i[update show]
before_action :session_filters, if: :current_user, only: %i[index email_csv download_csv]
before_action -> { filter_service.serialize_filters_to_session }, if: :current_user, only: %i[index email_csv download_csv]
before_action -> { filter_manager.serialize_filters_to_session }, if: :current_user, only: %i[index email_csv download_csv]
before_action :authenticate_scope!, only: %i[download_csv email_csv]
before_action :extract_bulk_upload_from_session_filters, only: [:index]
@ -14,7 +14,7 @@ class LettingsLogsController < LogsController
respond_to do |format|
format.html do
all_logs = current_user.lettings_logs.visible
unpaginated_filtered_logs = filter_service.filtered_logs(all_logs, search_term, session_filters)
unpaginated_filtered_logs = filter_manager.filtered_logs(all_logs, search_term, session_filters)
@search_term = search_term
@pagy, @logs = pagy(unpaginated_filtered_logs)
@ -87,7 +87,7 @@ class LettingsLogsController < LogsController
end
def download_csv
unpaginated_filtered_logs = filter_service.filtered_logs(current_user.lettings_logs, search_term, session_filters)
unpaginated_filtered_logs = filter_manager.filtered_logs(current_user.lettings_logs, search_term, session_filters)
render "download_csv", locals: { search_term:, count: unpaginated_filtered_logs.size, post_path: email_csv_lettings_logs_path, codes_only: codes_only_export? }
end
@ -115,11 +115,11 @@ class LettingsLogsController < LogsController
private
def session_filters
filter_service.session_filters
filter_manager.session_filters
end
def filter_service
FilterService.new(current_user:, session:, params:, filter_type: "lettings_logs")
def filter_manager
FilterManager.new(current_user:, session:, params:, filter_type: "lettings_logs")
end
def org_params
@ -139,8 +139,8 @@ private
end
def extract_bulk_upload_from_session_filters
filter_service = FilterService.new(current_user:, session:, params:, filter_type: "lettings_logs")
@bulk_upload = filter_service.bulk_upload
filter_manager = FilterManager.new(current_user:, session:, params:, filter_type: "lettings_logs")
@bulk_upload = filter_manager.bulk_upload
end
def permitted_log_params

4
app/controllers/modules/search_filter.rb

@ -1,9 +1,9 @@
module Modules::SearchFilter
def filtered_collection(base_collection, search_term = nil)
FilterService.filter_by_search(base_collection, search_term)
FilterManager.filter_by_search(base_collection, search_term)
end
def filtered_users(base_collection, search_term = nil)
FilterService.filter_by_search(base_collection, search_term).includes(:organisation)
FilterManager.filter_by_search(base_collection, search_term).includes(:organisation)
end
end

16
app/controllers/organisations_controller.rb

@ -6,7 +6,7 @@ class OrganisationsController < ApplicationController
before_action :find_resource, except: %i[index new create]
before_action :authenticate_scope!, except: [:index]
before_action :session_filters, if: -> { current_user.support? || current_user.organisation.has_managing_agents? }, only: %i[lettings_logs sales_logs email_lettings_csv download_lettings_csv email_sales_csv download_sales_csv]
before_action -> { filter_service.serialize_filters_to_session }, if: -> { current_user.support? || current_user.organisation.has_managing_agents? }, only: %i[lettings_logs sales_logs email_lettings_csv download_lettings_csv email_sales_csv download_sales_csv]
before_action -> { filter_manager.serialize_filters_to_session }, if: -> { current_user.support? || current_user.organisation.has_managing_agents? }, only: %i[lettings_logs sales_logs email_lettings_csv download_lettings_csv email_sales_csv download_sales_csv]
def index
redirect_to organisation_path(current_user.organisation) unless current_user.support?
@ -90,7 +90,7 @@ class OrganisationsController < ApplicationController
def lettings_logs
organisation_logs = LettingsLog.visible.where(owning_organisation_id: @organisation.id)
unpaginated_filtered_logs = filter_service.filtered_logs(organisation_logs, search_term, session_filters)
unpaginated_filtered_logs = filter_manager.filtered_logs(organisation_logs, search_term, session_filters)
respond_to do |format|
format.html do
@ -107,7 +107,7 @@ class OrganisationsController < ApplicationController
def download_lettings_csv
organisation_logs = LettingsLog.visible.where(owning_organisation_id: @organisation.id)
unpaginated_filtered_logs = filter_service.filtered_logs(organisation_logs, search_term, session_filters)
unpaginated_filtered_logs = filter_manager.filtered_logs(organisation_logs, search_term, session_filters)
codes_only = params.require(:codes_only) == "true"
render "logs/download_csv", locals: { search_term:, count: unpaginated_filtered_logs.size, post_path: lettings_logs_email_csv_organisation_path, codes_only: }
@ -120,7 +120,7 @@ class OrganisationsController < ApplicationController
def sales_logs
organisation_logs = SalesLog.where(owning_organisation_id: @organisation.id)
unpaginated_filtered_logs = filter_service.filtered_logs(organisation_logs, search_term, session_filters)
unpaginated_filtered_logs = filter_manager.filtered_logs(organisation_logs, search_term, session_filters)
respond_to do |format|
format.html do
@ -141,7 +141,7 @@ class OrganisationsController < ApplicationController
def download_sales_csv
organisation_logs = SalesLog.visible.where(owning_organisation_id: @organisation.id)
unpaginated_filtered_logs = filter_service.filtered_logs(organisation_logs, search_term, session_filters)
unpaginated_filtered_logs = filter_manager.filtered_logs(organisation_logs, search_term, session_filters)
codes_only = params.require(:codes_only) == "true"
render "logs/download_csv", locals: { search_term:, count: unpaginated_filtered_logs.size, post_path: sales_logs_email_csv_organisation_path, codes_only: }
@ -167,11 +167,11 @@ private
end
def session_filters
filter_service.session_filters
filter_manager.session_filters
end
def filter_service
FilterService.new(current_user:, session:, params:, filter_type:)
def filter_manager
FilterManager.new(current_user:, session:, params:, filter_type:)
end
def org_params

16
app/controllers/sales_logs_controller.rb

@ -2,7 +2,7 @@ class SalesLogsController < LogsController
rescue_from ActiveRecord::RecordNotFound, with: :render_not_found
before_action :session_filters, if: :current_user, only: %i[index email_csv download_csv]
before_action -> { filter_service.serialize_filters_to_session }, if: :current_user, only: %i[index email_csv download_csv]
before_action -> { filter_manager.serialize_filters_to_session }, if: :current_user, only: %i[index email_csv download_csv]
before_action :authenticate_scope!, only: %i[download_csv email_csv]
before_action :extract_bulk_upload_from_session_filters, only: [:index]
@ -16,7 +16,7 @@ class SalesLogsController < LogsController
respond_to do |format|
format.html do
all_logs = current_user.sales_logs.visible
unpaginated_filtered_logs = filter_service.filtered_logs(all_logs, search_term, session_filters)
unpaginated_filtered_logs = filter_manager.filtered_logs(all_logs, search_term, session_filters)
@search_term = search_term
@pagy, @logs = pagy(unpaginated_filtered_logs)
@ -58,7 +58,7 @@ class SalesLogsController < LogsController
end
def download_csv
unpaginated_filtered_logs = filter_service.filtered_logs(current_user.sales_logs, search_term, session_filters)
unpaginated_filtered_logs = filter_manager.filtered_logs(current_user.sales_logs, search_term, session_filters)
render "download_csv", locals: { search_term:, count: unpaginated_filtered_logs.size, post_path: email_csv_sales_logs_path, codes_only: codes_only_export? }
end
@ -82,16 +82,16 @@ class SalesLogsController < LogsController
private
def session_filters
filter_service.session_filters
filter_manager.session_filters
end
def filter_service
FilterService.new(current_user:, session:, params:, filter_type: "sales_logs")
def filter_manager
FilterManager.new(current_user:, session:, params:, filter_type: "sales_logs")
end
def extract_bulk_upload_from_session_filters
filter_service = FilterService.new(current_user:, session:, params:, filter_type: "lettings_logs")
@bulk_upload = filter_service.bulk_upload
filter_manager = FilterManager.new(current_user:, session:, params:, filter_type: "lettings_logs")
@bulk_upload = filter_manager.bulk_upload
end
def redirect_if_bulk_upload_resolved

4
app/jobs/email_csv_job.rb

@ -9,11 +9,11 @@ class EmailCsvJob < ApplicationJob
case log_type
when "lettings"
unfiltered_logs = organisation.present? && user.support? ? LettingsLog.visible.where(owning_organisation_id: organisation.id) : user.lettings_logs.visible
filtered_logs = FilterService.filter_logs(unfiltered_logs, search_term, filters, all_orgs, user)
filtered_logs = FilterManager.filter_logs(unfiltered_logs, search_term, filters, all_orgs, user)
csv_string = filtered_logs.to_csv(user, codes_only_export:)
when "sales"
unfiltered_logs = organisation.present? && user.support? ? SalesLog.visible.where(owning_organisation_id: organisation.id) : user.sales_logs.visible
filtered_logs = FilterService.filter_logs(unfiltered_logs, search_term, filters, all_orgs, user)
filtered_logs = FilterManager.filter_logs(unfiltered_logs, search_term, filters, all_orgs, user)
export_type = codes_only_export ? "codes" : "labels"
csv_string = Csv::SalesLogCsvService.new(export_type:).prepare_csv(filtered_logs)
end

2
app/services/filter_service.rb → app/services/filter_manager.rb

@ -1,4 +1,4 @@
class FilterService
class FilterManager
attr_reader :current_user, :session, :params, :filter_type
def initialize(current_user:, session:, params:, filter_type:)

2
spec/services/filter_service_spec.rb → spec/services/filter_manager_spec.rb

@ -1,6 +1,6 @@
require "rails_helper"
describe FilterService do
describe FilterManager do
describe "filter_by_search" do
context "when filtering organisations" do
before do
Loading…
Cancel
Save