From c1b3570eb36320f2bf2e8f9d4f99a8548512bfde Mon Sep 17 00:00:00 2001 From: natdeanlewissoftwire Date: Mon, 20 Feb 2023 15:57:27 +0000 Subject: [PATCH] feat: add correct sales log search filter behaviour --- app/models/lettings_log.rb | 1 - app/models/log.rb | 1 + app/models/sales_log.rb | 7 ++++++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/app/models/lettings_log.rb b/app/models/lettings_log.rb index 02236f70b..1809e04ae 100644 --- a/app/models/lettings_log.rb +++ b/app/models/lettings_log.rb @@ -40,7 +40,6 @@ class LettingsLog < Log scope :filter_by_year, ->(year) { where(startdate: Time.zone.local(year.to_i, 4, 1)...Time.zone.local(year.to_i + 1, 4, 1)) } scope :filter_by_tenant_code, ->(tenant_code) { where("tenancycode ILIKE ?", "%#{tenant_code}%") } scope :filter_by_propcode, ->(propcode) { where("propcode ILIKE ?", "%#{propcode}%") } - scope :filter_by_postcode, ->(postcode_full) { where("REPLACE(postcode_full, ' ', '') ILIKE ?", "%#{postcode_full.delete(' ')}%") } scope :filter_by_location_postcode, ->(postcode_full) { left_joins(:location).where("REPLACE(locations.postcode, ' ', '') ILIKE ?", "%#{postcode_full.delete(' ')}%") } scope :search_by, lambda { |param| filter_by_location_postcode(param) diff --git a/app/models/log.rb b/app/models/log.rb index 0cd3add92..c88a2037e 100644 --- a/app/models/log.rb +++ b/app/models/log.rb @@ -18,6 +18,7 @@ class Log < ApplicationRecord years.each { |year| query = query.or(filter_by_year(year)) } query.all } + scope :filter_by_postcode, ->(postcode_full) { where("REPLACE(postcode_full, ' ', '') ILIKE ?", "%#{postcode_full.delete(' ')}%") } scope :filter_by_id, ->(id) { where(id:) } scope :filter_by_user, lambda { |selected_user, user| if !selected_user.include?("all") && user.present? diff --git a/app/models/sales_log.rb b/app/models/sales_log.rb index 6ed653955..eea41678a 100644 --- a/app/models/sales_log.rb +++ b/app/models/sales_log.rb @@ -32,7 +32,12 @@ class SalesLog < Log before_validation :set_derived_fields! scope :filter_by_year, ->(year) { where(saledate: Time.zone.local(year.to_i, 4, 1)...Time.zone.local(year.to_i + 1, 4, 1)) } - scope :search_by, ->(param) { filter_by_id(param) } + scope :filter_by_purchaser_code, ->(purchid) { where("purchid ILIKE ?", "%#{purchid}%") } + scope :search_by, lambda { |param| + filter_by_purchaser_code(param) + .or(filter_by_postcode(param)) + .or(filter_by_id(param)) + } scope :filter_by_organisation, ->(org, _user = nil) { where(owning_organisation: org) } OPTIONAL_FIELDS = %w[saledate_check purchid monthly_charges_value_check old_persons_shared_ownership_value_check].freeze