Class: LookForController

Inherits:
ApplicationController
  • Object
show all
Defined in:
app/controllers/look_for_controller.rb

Instance Method Summary collapse

Instance Method Details

#searchObject



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

# logger.fatal '------------------------------------------------------'
# logger.fatal 'params = '+params.inspect
# logger.fatal '------------------------------------------------------'

  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|    	    	    	
#logger.fatal '------------------------------------------------------'
#logger.fatal 'incl = ' + incl.to_s
#logger.fatal 'incl re-writed = ' + rewrite_hash(incl).inspect
#logger.fatal '------------------------------------------------------'
      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|

#logger.fatal '------------------------------------------------------'
#logger.fatal 'esamino i filtri'
#logger.fatal 'key = '+key.inspect
#logger.fatal 'value = '+value.inspect
#logger.fatal '------------------------------------------------------'         	

      if value!=""   
#logger.fatal 'key spezzata e ricomposta = ' + key.split('.')[0...-1].join('.')               
        if @table_aliasing[key.split('.')[0...-1].join('.')]
#logger.fatal 'caso 1'          
          table_alias = @table_aliasing[key.split('.')[0...-1].join('.')]
          field = key.split('.').pop
        else
#logger.fatal 'caso 2'                    
          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}"

#logger.fatal 'table_alias_and_field = ' + table_alias_and_field.inspect
        
        if params[:no_case] && params[:no_case].include?(key)

#logger.fatal '------------------------------------------------------'
#logger.fatal 'no_case include la key'
#logger.fatal 'no_case = '+params[:no_case].inspect
#logger.fatal 'key = '+key.inspect
#logger.fatal 'value = '+value.inspect
#logger.fatal '------------------------------------------------------'                

#logger.fatal 'aggiungo referenza a ' + table_alias
          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)

#logger.fatal '------------------------------------------------------'
#logger.fatal 'use_upper include la key'
#logger.fatal 'use_upper = '+params[:use_upper].inspect
#logger.fatal 'key = '+key.inspect
#logger.fatal 'value = '+value.inspect
#logger.fatal '------------------------------------------------------'                  

#logger.fatal 'aggiungo referenza a ' + table_alias
          object_eval = object_eval.where("#{table_alias_and_field} like ? ",value.upcase+"%").references(table_alias)
        else

#logger.fatal '------------------------------------------------------'
#logger.fatal 'filtro pulito'
#logger.fatal 'key = '+key.inspect
#logger.fatal 'value = '+value.inspect
#logger.fatal '------------------------------------------------------'                

#logger.fatal 'aggiungo referenza a ' + table_alias
          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