Class: FiltrosPersonalizados::FiltrosBase

Inherits:
Object
  • Object
show all
Defined in:
lib/filtros_personalizados/filtros_base.rb

Direct Known Subclasses

Fornecedores

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args = {}) ⇒ FiltrosBase

Returns a new instance of FiltrosBase.



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/filtros_personalizados/filtros_base.rb', line 5

def initialize args={}
  self.modulo = $modulo.sigla.upcase
  self.errors = ActiveModel::Errors.new(self)
  rels_ultima_selecao_ativa = Parametro.where(nome: "rels_ultima_selecao_ativa").first
  rels_ultima_selecao_ativa = Parametro.create(nome: "rels_ultima_selecao_ativa") if rels_ultima_selecao_ativa.blank?
  if args[:consulta_personalizada_id].present?
    self.consulta_personalizada = ConsultaPersonalizada.where(id: args[:consulta_personalizada_id]).first rescue nil
  else
    if rels_ultima_selecao_ativa.valor == "true"
      self.consulta_personalizada = ConsultaPersonalizada.ultima_selecao_feita(args[:current_user].try(:id), args[:controller_name], self.modulo).first rescue nil
    end
  end
  self.require_fields = []
  self.open_fields = []
  carrega_consulta_personalizada(args)
  self.consulta_outros = (eval(self.consulta_personalizada.try(:outros_filtros).to_s) || {}) if self.errors.blank?
  self.consulta_outros = {} if self.consulta_outros.nil?
end

Instance Attribute Details

#consulta_outrosObject

Returns the value of attribute consulta_outros.



3
4
5
# File 'lib/filtros_personalizados/filtros_base.rb', line 3

def consulta_outros
  @consulta_outros
end

#consulta_personalizadaObject

Returns the value of attribute consulta_personalizada.



3
4
5
# File 'lib/filtros_personalizados/filtros_base.rb', line 3

def consulta_personalizada
  @consulta_personalizada
end

#errorsObject

Returns the value of attribute errors.



3
4
5
# File 'lib/filtros_personalizados/filtros_base.rb', line 3

def errors
  @errors
end

#moduloObject

Returns the value of attribute modulo.



3
4
5
# File 'lib/filtros_personalizados/filtros_base.rb', line 3

def modulo
  @modulo
end

#open_fieldsObject

Returns the value of attribute open_fields.



2
3
4
# File 'lib/filtros_personalizados/filtros_base.rb', line 2

def open_fields
  @open_fields
end

#require_fieldsObject

Returns the value of attribute require_fields.



2
3
4
# File 'lib/filtros_personalizados/filtros_base.rb', line 2

def require_fields
  @require_fields
end

Instance Method Details

#abrir_campos_filtradosObject



73
74
75
76
77
# File 'lib/filtros_personalizados/filtros_base.rb', line 73

def abrir_campos_filtrados
  self.all_fields.each do |campo|
    self.open_fields << campo if campo.is_open
  end
end

#all_fieldsObject



46
47
48
49
50
51
52
# File 'lib/filtros_personalizados/filtros_base.rb', line 46

def all_fields
  lista = []
  self.instance_variable_names.each do |c|
    lista << eval(c.gsub("@","")) unless ["require_fields", "open_fields", "errors", "consulta_personalizada", "consulta_outros"].include?(c.gsub("@",""))
  end
  lista
end

#carrega_consulta_personalizada(args) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/filtros_personalizados/filtros_base.rb', line 24

def carrega_consulta_personalizada(args)
  if self.consulta_personalizada.present?
    conversor = FiltrosPersonalizados::Conversor.new(self.consulta_personalizada)
    conversor.converter
    self.consulta_personalizada.reload
    if conversor.errors.present?
      self.errors.add(:base, "Ocorreu um erro ao tentar carregar o filtro. Por favor, recrie esse filtro.")
    else
      fields_consulta = eval(self.consulta_personalizada.consulta_gerada)
      if fields_consulta.present?
        montar_relatorio(fields_consulta)
        fields_consulta.first.keys.each do |f|
          self.open_fields << self.send(f)
        end
      end
    end
  end
# rescue Exception => e
  # self.errors.add(:base, "Ocorreu um erro ao tentar carregar o filtro. Por favor, recrie esse filtro.")
end

#montar_relatorio(args = {}) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/filtros_personalizados/filtros_base.rb', line 54

def montar_relatorio args={}
  unless args.blank?
    filtro_tela = args.first
    filtro_tela.each do |nome, opcoes|
      p "+"*80
      p self.send(nome)
      p nome
      p "+"*80
      self.send(nome).dias = opcoes["dias"] if ["data_entrada","data_nascimento", "data_alta"].include?(nome)
      self.send(nome).tipo_selecionado = opcoes["tipo_selecionado"]
      values = opcoes["values"].reject{ |v| v.empty? } rescue nil
      self.send(nome).values = values
      self.send(nome).is_open = true
    end
  nil
  end
end

#not_require_fieldsObject



87
88
89
# File 'lib/filtros_personalizados/filtros_base.rb', line 87

def not_require_fields
  all_fields - require_fields
end

#salva_selecao(args = {}) ⇒ Object



114
115
116
117
118
119
120
121
122
123
# File 'lib/filtros_personalizados/filtros_base.rb', line 114

def salva_selecao args={}
  ultima_selecao = FiltrosPersonalizados::UltimaSelecaoUser.new(
    current_user:    args[:current_user],
    tela:            args[:tela],
    consulta_gerada: args[:consulta_gerada],
    outros_filtros:  args[:outros_filtros],
    modulo:          self.modulo
  )
  ultima_selecao.save
end

#selecaoObject



100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'lib/filtros_personalizados/filtros_base.rb', line 100

def selecao
  sSelecao = ''
  all_fields.each do |campo|
    valores =  campo.values.reject{ |v| v.empty? } rescue nil
    sAux = campo.selecao 
    if sAux.present?
      sSelecao = sSelecao.to_s + " <br /> " if sSelecao.present?
      sSelecao = sSelecao.to_s + sAux.to_s
    end
    sAux = ''
  end
  sSelecao
end

#set_require_fields(campos = []) ⇒ Object



79
80
81
82
83
84
85
# File 'lib/filtros_personalizados/filtros_base.rb', line 79

def set_require_fields(campos=[])
  self.require_fields = []
  campos.each do |obr|
    self.require_fields << eval("self.#{obr}") if (self.respond_to?(obr) rescue false) && eval("self.#{obr}")
  end
  self.require_fields
end

#whereObject



91
92
93
94
95
96
97
98
# File 'lib/filtros_personalizados/filtros_base.rb', line 91

def where
  sWhere = nil
  all_fields.each do |campo|
    sAux = campo.where
    sWhere = sWhere.to_s + " AND "  + sAux.to_s if sAux.present?
  end
  sWhere || ' AND TRUE '
end