We were inconsistent on this one. I consider it particularly useful when a method starts with a `return` statement. In other cases, we probably shouldn't have a guard rule in the middle of a method in any case, but that's a different refactoring.
58 lines
1.4 KiB
Ruby
58 lines
1.4 KiB
Ruby
module Search
|
|
extend ActiveSupport::Concern
|
|
|
|
included do
|
|
before_action :parse_search_terms, only: [:index, :suggest]
|
|
before_action :parse_advanced_search_terms, only: :index
|
|
before_action :set_search_order, only: :index
|
|
end
|
|
|
|
def parse_search_terms
|
|
@search_terms = params[:search] if params[:search].present?
|
|
end
|
|
|
|
def parse_advanced_search_terms
|
|
@advanced_search_terms = params[:advanced_search] if params[:advanced_search].present?
|
|
parse_search_date
|
|
end
|
|
|
|
def parse_search_date
|
|
return unless search_by_date?
|
|
|
|
params[:advanced_search][:date_range] = search_date_range
|
|
end
|
|
|
|
def search_by_date?
|
|
params[:advanced_search] && params[:advanced_search][:date_min].present?
|
|
end
|
|
|
|
def search_start_date
|
|
case params[:advanced_search][:date_min]
|
|
when "1"
|
|
24.hours.ago
|
|
when "2"
|
|
1.week.ago
|
|
when "3"
|
|
1.month.ago
|
|
when "4"
|
|
1.year.ago
|
|
else
|
|
Date.parse(params[:advanced_search][:date_min]) rescue 100.years.ago
|
|
end
|
|
end
|
|
|
|
def search_finish_date
|
|
(params[:advanced_search][:date_max].to_date rescue Date.current) || Date.current
|
|
end
|
|
|
|
def search_date_range
|
|
[100.years.ago, search_start_date].max.beginning_of_day..[search_finish_date, Date.current].min.end_of_day
|
|
end
|
|
|
|
def set_search_order
|
|
if params[:search].present? && params[:order].blank?
|
|
params[:order] = "relevance"
|
|
end
|
|
end
|
|
end
|