2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
# File 'app/controllers/look_for_controller.rb', line 2
def search
get_table_aliasing params[:include], params[:object_name]
if eval("current_user.service.respond_to? '#{params[:object_name].downcase.pluralize}'") && (!params[:all_services] || params[:all_services] != 'true') && (!params[:all_companies] || params[:all_companies] != 'true')
object_eval = eval("current_user.service.#{params[:object_name].downcase.pluralize}")
elsif params[:all_companies] && params[:all_companies] == 'true'
object_eval = eval("#{params[:object_name].classify}.all")
else
object_eval = eval("current_user.company.#{params[:object_name].downcase.pluralize}")
end
if params[:include]
params[:include].each do |incl|
rewr_incl = rewrite_hash(incl)
object_eval = object_eval.includes(rewr_incl).references(rewr_incl)
end
end
params[:base_id] ||= "look_for_#{params[:object_name].downcase.pluralize}"
if params[:look_for_filter]
params[:look_for_filter].each do |key, value|
if value!=""
if @table_aliasing[key.split('.')[0...-1].join('.')]
table_alias = @table_aliasing[key.split('.')[0...-1].join('.')]
field = key.split('.').pop
else
table_alias_and_field = key
table_alias_and_field = "#{params[:object_name].underscore}.#{key}" if key.split('.').length == 1
ar = table_alias_and_field.split('.')
table_alias = ar[ar.length-2]
field = ar[ar.length-1]
table_alias = table_alias.pluralize
end
translated_column = multilanguage(params[:object_name],field)
table_alias_and_field = "#{table_alias}.#{translated_column}"
if params[:no_case] && params[:no_case].include?(key)
object_eval = object_eval.where("upper(#{table_alias_and_field}) like ? ",value.upcase+"%").references(table_alias)
elsif params[:use_upper] && params[:use_upper].include?(key)
object_eval = object_eval.where("#{table_alias_and_field} like ? ",value.upcase+"%").references(table_alias)
else
object_eval = object_eval.where("#{table_alias_and_field} like ? ",value+"%").references(table_alias)
end
end
end
end
if params[:conditions] && params[:conditions].class == Array
params[:conditions].collect! do |a|
if a=='true'
true
elsif a=='false'
false
else
a
end
end
end
object_eval = object_eval.where(params[:conditions]) if params[:conditions]
object_eval = object_eval.where(params[:with]) if params[:with]
@records = object_eval.paginate(:per_page => 20,:page => params["#{params[:base_id]}_page".to_sym]).order(params[:order])
template = 'look_for'
template = 'assign_first' if @records.length == 1 && params[:validate] == 'true'
template = 'clear' if params[:clear] == 'true'
respond_to do |format|
format.js { render template}
end
end
|