Module: Sivel2Gen::Concerns::Models::Conscaso::ClassMethods

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

Instance Method Summary collapse

Instance Method Details

#consulta_baseObject



302
303
304
# File 'lib/sivel2_gen/concerns/models/conscaso.rb', line 302

def consulta_base
  consulta_base_sivel2_gen
end

#consulta_base_sivel2_genObject



265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
# File 'lib/sivel2_gen/concerns/models/conscaso.rb', line 265

def consulta_base_sivel2_gen
  r = "SELECT caso.id as caso_id, caso.fecha, caso.memo, 
        ARRAY_TO_STRING(ARRAY(SELECT COALESCE(departamento.nombre, '') ||  
        ' / ' || COALESCE(municipio.nombre, '')
        FROM public.msip_ubicacion AS ubicacion 
LEFT JOIN public.msip_departamento AS departamento 
  ON (ubicacion.departamento_id = departamento.id)
LEFT JOIN public.msip_municipio AS municipio 
  ON (ubicacion.municipio_id=municipio.id)
WHERE ubicacion.caso_id=caso.id), ', ')
        AS ubicaciones, 
        ARRAY_TO_STRING(ARRAY(SELECT nombres || ' ' || apellidos 
FROM public.msip_persona AS persona, 
public.sivel2_gen_victima AS victima 
WHERE persona.id=victima.persona_id 
AND victima.caso_id=caso.id), ', ')
        AS victimas, 
        ARRAY_TO_STRING(ARRAY(SELECT nombre 
FROM public.sivel2_gen_presponsable AS presponsable, 
public.sivel2_gen_caso_presponsable AS caso_presponsable
WHERE presponsable.id=caso_presponsable.presponsable_id
AND caso_presponsable.caso_id=caso.id), ', ')
        AS presponsables, 
        ARRAY_TO_STRING(ARRAY(SELECT supracategoria.tviolencia_id || ':' || 
categoria.supracategoria_id || ':' || categoria.id || ' ' ||
categoria.nombre FROM public.sivel2_gen_categoria AS categoria, 
public.sivel2_gen_supracategoria AS supracategoria,
public.sivel2_gen_acto
WHERE categoria.id=sivel2_gen_acto.categoria_id
AND supracategoria.id=categoria.supracategoria_id
AND sivel2_gen_acto.caso_id=caso.id), ', ')
        AS tipificacion
        FROM public.sivel2_gen_caso AS caso"
#Rails.logger.info r
return r
end

#interpreta_ordenar_por(campo) ⇒ Object

def refresca_conscaso



343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
# File 'lib/sivel2_gen/concerns/models/conscaso.rb', line 343

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

#refresca_conscasoObject

Retorna ” sii puede refrescar o crear sivel2_gen_conscaso en otro caso retorna cadena con problema o razón por la que no refresca



309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
# File 'lib/sivel2_gen/concerns/models/conscaso.rb', line 309

def refresca_conscaso
  if ARGV.include?("db:migrate")
    return 'Ejecutando migración'
  end
  if !ActiveRecord::Base.connection.data_source_exists? 'sivel2_gen_conscaso'
    ActiveRecord::Base.connection.execute("CREATE OR REPLACE 
        VIEW sivel2_gen_conscaso1 AS #{consulta_base};")
    ActiveRecord::Base.connection.execute(
      "CREATE MATERIALIZED VIEW sivel2_gen_conscaso AS
        SELECT caso_id, fecha, memo, ubicaciones, victimas, 
        presponsables, tipificacion, now() AS ultimo_refresco,
        to_tsvector('spanish', unaccent(caso_id || ' ' || 
        replace(cast(fecha AS varchar), '-', ' ') 
        || ' ' || memo || ' ' || ubicaciones || ' ' || 
         victimas || ' ' || presponsables || ' ' || tipificacion)) as q
        FROM public.sivel2_gen_conscaso1");
        ActiveRecord::Base.connection.execute(
"CREATE INDEX busca_sivel2_gen_conscaso 
    ON sivel2_gen_conscaso USING gin(q);"
        )
  else
    p = Msip::ProcesosHelper.procesos_OpenBSD
    r = p.select {|u| u[:command] =~ /REFRESH/ }
    if r.count > 0
      return "Ejecución de otro(s) REFRESH en curso (#{r.map {|x| x[:command]}})"
    else
      ActiveRecord::Base.connection.execute(
        'REFRESH MATERIALIZED VIEW sivel2_gen_conscaso'
      )
    end
  end
  return ''
end