Module: Cullender::Controllers::FilterLogic

Included in:
RulesController
Defined in:
lib/cullender/controllers/filter_logic.rb

Instance Method Summary collapse

Instance Method Details

#add_and_filter(key, params, field) ⇒ Object



21
22
23
24
25
26
27
28
# File 'lib/cullender/controllers/filter_logic.rb', line 21

def add_and_filter(key, params, field)
  clean_field(field) unless field.is_a? String
  if params.present? && params.has_key?(key)
    params[key].deep_merge!(add_operator(field))
  else
    params[key] = add_operator(field)
  end
end

#add_operator(field) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/cullender/controllers/filter_logic.rb', line 51

def add_operator(field)
  if field.is_a?(Hash)
    hash = {}
    field.each do |key, value|
      if ["o", "v"].include?(key)
        hash = field
        break
      else
        hash.merge!({key => add_operator(value)}) unless ["o", "v"].include?(key)
      end
    end
  elsif
    hash = {field => {"o" => nil}} 
  end
  hash
end

#add_or_filter(key, params, field, should_raise = false) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/cullender/controllers/filter_logic.rb', line 4

def add_or_filter(key, params, field, should_raise = false)
  if params.present? && params.has_key?(key)
    if should_raise
      params[key] = {1 => params[key], 2 => add_operator(field)}
    else
      idx = params[key].keys.last.to_i + 1
      params[key].deep_merge!({idx => add_operator(field)})
    end
  else
    if should_raise
      params[key] = add_operator(field)
    else
      params[key] = add_operator(field)
    end
  end
end

#apply_filter_actions(name, filter_params, params) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/cullender/controllers/filter_logic.rb', line 68

def apply_filter_actions(name, filter_params, params)
  # debugger
  updated = false
  if params.has_key?("or") && (params["or"].has_key?("commit") || params["or"].has_key?("raise"))
    nfilter = params.delete("or")
    should_raise = nfilter.has_key?("raise")
    add_or_filter(name, filter_params, should_raise ? nfilter["raise_field"] : nfilter["field"],  should_raise) if (nfilter["field"].present? || nfilter["raise_field"].present?)
    updated = true
  elsif params.has_key?("and") && params["and"].has_key?("commit")
    nfilter = params.delete("and")
    add_and_filter(name, filter_params, nfilter["field"]) if nfilter["field"].present?
    updated = true
  elsif params.has_key?("remove")
    nfilter = params.delete("remove")
    remove_and_filter(name, filter_params, nfilter)
    updated = true
  end
  updated
end

#clean_field(field) ⇒ Object



30
31
32
33
34
35
36
37
38
39
# File 'lib/cullender/controllers/filter_logic.rb', line 30

def clean_field(field)

  field.each do |key, value|
    if value.is_a?(Hash)
      clean_field(value)
    else
      field.delete(key) if value.blank?
    end
  end
end

#remove_and_filter(key, params, field) ⇒ Object



41
42
43
44
45
46
47
48
49
# File 'lib/cullender/controllers/filter_logic.rb', line 41

def remove_and_filter(key, params, field)
  if params.present? && params.has_key?(key)
    if field.is_a? String
      params[key].delete(field)
    else 
      params[key].deep_delete(field)
    end
  end
end