Module: Sivel2Gen::Concerns::Models::Consexpcaso::ClassMethods

Defined in:
lib/sivel2_gen/concerns/models/consexpcaso.rb

Instance Method Summary collapse

Instance Method Details

#consulta_consexpcasoObject



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/sivel2_gen/concerns/models/consexpcaso.rb', line 62

def consulta_consexpcaso 
  "SELECT conscaso.*,
    caso.titulo,
    caso.hora,
    caso.duracion,
    caso.grconfiabilidad,
    caso.gresclarecimiento,
    caso.grimpunidad,
    caso.grinformacion,
    caso.bienes,
    caso.intervalo_id,
    caso.created_at,
    caso.updated_at
    FROM public.sivel2_gen_conscaso AS conscaso
    JOIN public.sivel2_gen_caso AS caso ON caso.id=conscaso.caso_id
    "
end

#crea_consexpcaso(conscaso, ordenar_por = nil) ⇒ Object



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/sivel2_gen/concerns/models/consexpcaso.rb', line 80

def crea_consexpcaso(conscaso, ordenar_por = nil)
  if ARGV.include?("db:migrate")
    return
  end
  if !ActiveRecord::Base.connection.data_source_exists? 'sivel2_gen_conscaso'
    Sivel2Gen::Conscaso.refresca_conscaso
  end
  if ActiveRecord::Base.connection.data_source_exists? 'sivel2_gen_consexpcaso'
    ActiveRecord::Base.connection.execute(
      "DROP MATERIALIZED VIEW IF EXISTS sivel2_gen_consexpcaso;")
  end
  w = "WHERE TRUE=FALSE"
  if conscaso && conscaso.count > 0
    w = "WHERE conscaso.caso_id IN (#{conscaso.select(:caso_id).to_sql})"
  end
  if ordenar_por
    w += ' ORDER BY ' + self.interpreta_ordenar_por(ordenar_por)
  end
  ActiveRecord::Base.connection.execute("CREATE 
    MATERIALIZED VIEW sivel2_gen_consexpcaso AS
    #{self.consulta_consexpcaso}
    #{w} ;")
end

#interpreta_ordenar_por(campo) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/sivel2_gen/concerns/models/consexpcaso.rb', line 40

def interpreta_ordenar_por(campo)
  critord = ""
  case campo.to_s
  when /^fechadesc/
    critord = "conscaso.fecha desc"
  when /^fecha/
    critord = "conscaso.fecha asc"
  when /^ubicaciondesc/
    critord = "conscaso.ubicaciones desc"
  when /^ubicacion/
    critord = "conscaso.ubicaciones asc"
  when /^codigodesc/
    critord = "conscaso.caso_id desc"
  when /^codigo/
    critord = "conscaso.caso_id asc"
  else
    raise(ArgumentError, "Ordenamiento invalido: #{ campo.inspect }")
  end
  critord += ", conscaso.caso_id"
  return critord
end