From 37d8693049d7384e0e8a2c905a50657ed43856bd Mon Sep 17 00:00:00 2001 From: rgarcia Date: Thu, 4 May 2017 04:23:53 +0200 Subject: [PATCH 1/2] extracts advanced search to controller concern --- .../concerns/commentable_actions.rb | 47 --------------- app/controllers/concerns/search.rb | 57 +++++++++++++++++++ app/controllers/debates_controller.rb | 4 +- app/controllers/proposals_controller.rb | 4 +- 4 files changed, 59 insertions(+), 53 deletions(-) create mode 100644 app/controllers/concerns/search.rb diff --git a/app/controllers/concerns/commentable_actions.rb b/app/controllers/concerns/commentable_actions.rb index ee69ac809..57d476b45 100644 --- a/app/controllers/concerns/commentable_actions.rb +++ b/app/controllers/concerns/commentable_actions.rb @@ -100,53 +100,6 @@ module CommentableActions end 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.today) || Date.today - end - - def search_date_range - [100.years.ago, search_start_date].max.beginning_of_day..[search_finish_date, Date.today].min.end_of_day - end - - def set_search_order - if params[:search].present? && params[:order].blank? - params[:order] = 'relevance' - end - end - def set_resource_votes(instance) send("set_#{resource_name}_votes", instance) end diff --git a/app/controllers/concerns/search.rb b/app/controllers/concerns/search.rb new file mode 100644 index 000000000..922ad93cc --- /dev/null +++ b/app/controllers/concerns/search.rb @@ -0,0 +1,57 @@ +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.today) || Date.today + end + + def search_date_range + [100.years.ago, search_start_date].max.beginning_of_day..[search_finish_date, Date.today].min.end_of_day + end + + def set_search_order + if params[:search].present? && params[:order].blank? + params[:order] = 'relevance' + end + end + +end \ No newline at end of file diff --git a/app/controllers/debates_controller.rb b/app/controllers/debates_controller.rb index 6d17eb749..8becb6124 100644 --- a/app/controllers/debates_controller.rb +++ b/app/controllers/debates_controller.rb @@ -2,11 +2,9 @@ class DebatesController < ApplicationController include FeatureFlags include CommentableActions include FlagActions + include Search - before_action :parse_search_terms, only: [:index, :suggest] - before_action :parse_advanced_search_terms, only: :index before_action :parse_tag_filter, only: :index - before_action :set_search_order, only: :index before_action :authenticate_user!, except: [:index, :show, :map] feature_flag :debates diff --git a/app/controllers/proposals_controller.rb b/app/controllers/proposals_controller.rb index daec4a051..1a2844136 100644 --- a/app/controllers/proposals_controller.rb +++ b/app/controllers/proposals_controller.rb @@ -1,11 +1,9 @@ class ProposalsController < ApplicationController include CommentableActions include FlagActions + include Search - before_action :parse_search_terms, only: [:index, :suggest] - before_action :parse_advanced_search_terms, only: :index before_action :parse_tag_filter, only: :index - before_action :set_search_order, only: :index before_action :load_categories, only: [:index, :new, :edit, :map, :summary] before_action :load_geozones, only: [:edit, :map, :summary] before_action :authenticate_user!, except: [:index, :show, :map, :summary] From 87dd15b7bf8c8f00fb4eba7061eb511749df3131 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Thu, 4 May 2017 20:42:21 +0200 Subject: [PATCH 2/2] includes search concern in commendable actions --- app/controllers/concerns/commentable_actions.rb | 1 + app/controllers/debates_controller.rb | 1 - app/controllers/proposals_controller.rb | 1 - 3 files changed, 1 insertion(+), 2 deletions(-) diff --git a/app/controllers/concerns/commentable_actions.rb b/app/controllers/concerns/commentable_actions.rb index 57d476b45..287f2d418 100644 --- a/app/controllers/concerns/commentable_actions.rb +++ b/app/controllers/concerns/commentable_actions.rb @@ -1,6 +1,7 @@ module CommentableActions extend ActiveSupport::Concern include Polymorphic + include Search def index @resources = @search_terms.present? ? resource_model.search(@search_terms) : resource_model.all diff --git a/app/controllers/debates_controller.rb b/app/controllers/debates_controller.rb index 8becb6124..9b29080dd 100644 --- a/app/controllers/debates_controller.rb +++ b/app/controllers/debates_controller.rb @@ -2,7 +2,6 @@ class DebatesController < ApplicationController include FeatureFlags include CommentableActions include FlagActions - include Search before_action :parse_tag_filter, only: :index before_action :authenticate_user!, except: [:index, :show, :map] diff --git a/app/controllers/proposals_controller.rb b/app/controllers/proposals_controller.rb index 1a2844136..d1707a8a7 100644 --- a/app/controllers/proposals_controller.rb +++ b/app/controllers/proposals_controller.rb @@ -1,7 +1,6 @@ class ProposalsController < ApplicationController include CommentableActions include FlagActions - include Search before_action :parse_tag_filter, only: :index before_action :load_categories, only: [:index, :new, :edit, :map, :summary]