Class: FiltrosPersonalizados::FiltrosBase
- Inherits:
-
Object
- Object
- FiltrosPersonalizados::FiltrosBase
- Defined in:
- lib/filtros_personalizados/filtros_base.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#consulta_outros ⇒ Object
Returns the value of attribute consulta_outros.
-
#consulta_personalizada ⇒ Object
Returns the value of attribute consulta_personalizada.
-
#errors ⇒ Object
Returns the value of attribute errors.
-
#modulo ⇒ Object
Returns the value of attribute modulo.
-
#open_fields ⇒ Object
Returns the value of attribute open_fields.
-
#require_fields ⇒ Object
Returns the value of attribute require_fields.
Instance Method Summary collapse
- #abrir_campos_filtrados ⇒ Object
- #all_fields ⇒ Object
- #carrega_consulta_personalizada(args) ⇒ Object
-
#initialize(args = {}) ⇒ FiltrosBase
constructor
A new instance of FiltrosBase.
- #montar_relatorio(args = {}) ⇒ Object
- #not_require_fields ⇒ Object
- #salva_selecao(args = {}) ⇒ Object
- #selecao ⇒ Object
- #set_require_fields(campos = []) ⇒ Object
- #where ⇒ Object
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_outros ⇒ Object
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_personalizada ⇒ Object
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 |
#errors ⇒ Object
Returns the value of attribute errors.
3 4 5 |
# File 'lib/filtros_personalizados/filtros_base.rb', line 3 def errors @errors end |
#modulo ⇒ Object
Returns the value of attribute modulo.
3 4 5 |
# File 'lib/filtros_personalizados/filtros_base.rb', line 3 def modulo @modulo end |
#open_fields ⇒ Object
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_fields ⇒ Object
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_filtrados ⇒ Object
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_fields ⇒ Object
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_fields ⇒ Object
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 |
#selecao ⇒ Object
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 |
#where ⇒ Object
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 |