Sha256: b6b4a97824a44025e319463a808f83786234358a07b4274ed9bc5e1c4d3ba435

Contents?: true

Size: 1.98 KB

Versions: 19

Compression:

Stored size: 1.98 KB

Contents

module Spree
  module Admin
    module RansackDateSearch
      extend ActiveSupport::Concern

      module ClassMethods
        def ransack_date_searchable(options={})
          raise ArgumentError, "Hash expected, got #{options.class.name}" unless options.is_a?(Hash)
          class_attribute :ransack_date_search_config, :ransack_date_search_col_ref, :ransack_date_search_param_gt, :ransack_date_search_param_lt
          self.ransack_date_search_config = { date_col: "created_at" }.merge!(options)
          # self.ransack_date_search_config[:before_action] = [ransack_date_search_config[:before_action]] unless ransack_date_search_config[:before_action].is_a?(Array)
          self.ransack_date_search_col_ref = ransack_date_search_config[:date_col]
          self.ransack_date_search_param_gt = "#{ransack_date_search_col_ref}_gt"
          self.ransack_date_search_param_lt = "#{ransack_date_search_col_ref}_lt"
        end
      end

      included do
        before_action :parse_ransack_date_search_param!, only: 'index'
      end
      
      private

      def parse_ransack_date_search_param!
        params[:q] = {} unless params[:q]
        parse_ransack_date_search_param_gt!
        parse_ransack_date_search_param_lt!
        params[:q][:s] ||= "#{ransack_date_search_col_ref} desc"
        params[:q].delete_if{ |k, v| v.blank? }
      end

      def parse_ransack_date_search_param_gt!
        if params[:q][ransack_date_search_param_gt].blank?
          params[:q][ransack_date_search_param_gt] = Time.current.beginning_of_month
        else
          params[:q][ransack_date_search_param_gt] = Time.zone.parse(params[:q][ransack_date_search_param_gt]).beginning_of_day rescue Time.current.beginning_of_month
        end
      end

      def parse_ransack_date_search_param_lt!
        if params[:q][ransack_date_search_param_lt].present?
          params[:q][ransack_date_search_param_lt] = Time.zone.parse(params[:q][ransack_date_search_param_lt]).end_of_day rescue ""
        end
      end
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
spree_account_recurring-2.0.0 app/controllers/concerns/spree/admin/ransack_date_search.rb
spree_account_recurring-1.3.1 app/controllers/concerns/spree/admin/ransack_date_search.rb
spree_account_recurring-1.2.1 app/controllers/concerns/spree/admin/ransack_date_search.rb
spree_account_recurring-1.3.0 app/controllers/concerns/spree/admin/ransack_date_search.rb
spree_account_recurring-1.2.0 app/controllers/concerns/spree/admin/ransack_date_search.rb
spree_account_recurring-1.1.5 app/controllers/concerns/spree/admin/ransack_date_search.rb
spree_account_recurring-1.0.7 app/controllers/concerns/spree/admin/ransack_date_search.rb
spree_account_recurring-1.1.4 app/controllers/concerns/spree/admin/ransack_date_search.rb
spree_account_recurring-1.0.6 app/controllers/concerns/spree/admin/ransack_date_search.rb
spree_account_recurring-1.0.5 app/controllers/concerns/spree/admin/ransack_date_search.rb
spree_account_recurring-1.1.3 app/controllers/concerns/spree/admin/ransack_date_search.rb
spree_account_recurring-1.1.2 app/controllers/concerns/spree/admin/ransack_date_search.rb
spree_account_recurring-1.0.4 app/controllers/concerns/spree/admin/ransack_date_search.rb
spree_account_recurring-1.0.3 app/controllers/concerns/spree/admin/ransack_date_search.rb
spree_account_recurring-1.0.2 app/controllers/concerns/spree/admin/ransack_date_search.rb
spree_account_recurring-1.1.1 app/controllers/concerns/spree/admin/ransack_date_search.rb
spree_account_recurring-1.1.0 app/controllers/concerns/spree/admin/ransack_date_search.rb
spree_account_recurring-1.0.1 app/controllers/concerns/spree/admin/ransack_date_search.rb
spree_account_recurring-1.0.0 app/controllers/concerns/spree/admin/ransack_date_search.rb