Академический Документы
Профессиональный Документы
Культура Документы
domino
import grails.converters.JSON
import grails.plugins.springsecurity.Secured
import groovy.sql.Sql
import groovy.time.TimeCategory
import javax.script.ScriptEngine
import javax.script.ScriptEngineManager
import javax.script.ScriptException
import org.springframework.dao.DataIntegrityViolationException
import com.redoaxaca.java.Combo
import com.redoaxaca.java.ComboVariable
import com.redoaxaca.java.RVariable
import com.redoaxaca.java.Resultado
import com.redoaxaca.java.ResultadoIndicador
import com.redoaxaca.java.ResultadoTemporal
@Secured(['ROLE_DEP', 'ROLE_ADMIN'])
class IndicadorController {
def dataSource
@Secured(['ROLE_DEP','ROLE_NUCLEO','ROLE_LECTURA', 'ROLE_ADMIN'])
def index() {
@Secured(['ROLE_DEP','ROLE_NUCLEO','ROLE_LECTURA', 'ROLE_ADMIN'])
def list(Integer max) {
params.max = Math.min(max ?: 10, 100)
def usuario = springSecurityService.currentUser
def dependencia = usuario.dependencia
sendMail {
to indicador?.mailResponsable
subject asunto?.valor
html """
${cuerpo?.valor} <br><br>
Indicador: ${indicador?.nombre}.<br>
Responsable: ${indicador?.nombreResponsable}.
"""
}
render (text: "enviado", contentType: "text/html", encoding: "UTF-8")
}
println 'enviando:'
sendMail {
to me
subject asunto?.valor
html """
${cuerpo?.valor} <br><br>
Indicador: test.<br>
Responsable: test.
"""
}
println 'enviando!'
render (text: "enviado", contentType: "text/html", encoding: "UTF-8")
}
def create() {
def user =springSecurityService.currentUser
@Secured(['ROLE_DEP','ROLE_NUCLEO','ROLE_LECTURA', 'ROLE_ADMIN'])
def dataTablesListadoIndicadores = {
render dataTablesService.datosParaTablaQuery(query,params,
[
'i.idn_id as id',
'i.idn_nombre as nombre',
'i.idn_objetivo as objetivo',
'i.idn_nombre_responsable as nomr'
],
[
'i.idn_id ',
'i.idn_nombre ',
'i.idn_objetivo ',
'i.idn_nombre_responsable '
],
[
'id',
'nombre',
'objetivo',
'nomr'
],1,"text") as JSON
@Secured(['ROLE_DEP','ROLE_NUCLEO','ROLE_LECTURA', 'ROLE_ADMIN'])
def tabla(){
[dependencia:params.id]
@Secured(['ROLE_DEP','ROLE_NUCLEO','ROLE_LECTURA', 'ROLE_ADMIN'])
def visor(){
def num=0
def letra
def valorBase
for(anio in 2005..2020){
boolean b = true
switch (opcion) {
case 1:
/***
* PROCESO DE SALIDA POR ESTADO
*
* */
/***
* Comienza la busqueda en el origen de datos en base a las variable
* */
for(vari in indicadorInstance.variables){
if(vari.categorias){
def resultTipo
def result = sql.rows(queryTipo.toString())
if(cc!=tam)
query=query+" and "
cc++
}
if(vari.categorias){
query=query+" ) "
}
if(resultTotal.size()>0){
temVar= new RVariable()
temVar.letra=vari.clave
resultTotal?.each
{
ResultadoTemporal valorTem = new ResultadoTemporal()
switch (vari.poblacion.clave) {
case "H":
valorTem.indicador=it.hombres
valorTem.anio=anio
temVar.valores.add(valorTem)
temVar.descripcion=it.descripcion
break;
case "M":
valorTem.indicador=it.mujeres
valorTem.anio=anio
temVar.valores.add(valorTem)
temVar.descripcion=it.descripcion
break;
case "T":
valorTem.indicador=it.total
valorTem.anio=anio
temVar.valores.add(valorTem)
temVar.descripcion=it.descripcion
break;
default:
break;
}
}
rVariables.add(temVar)
}
sql.close()
}
/***
* Comienza el calculo del indicador en base a las variables
* */
if(rVariables.size()>0){
rVariables.each { var->
formula=formula.replaceAll(var.letra, String.valueOf(var.valores.get(0).indicador))
}
rTemp.resultadoIndicador =js.eval("eval('"+formula+"')")
rTemp.anio=anio
listTemp.add(rTemp)
} catch (Exception e) {
e.printStackTrace();
}
formula= indicadorInstance?.formula?.sentencia
}
/***
* Comienza el proceso de ordenamiento para salida
* */
listTemp.each { actual->
def ban=0
if(resultados.size()>0){
ri.resultados.add(res)
resultados.add(ri)
}
}
num=0
rVariables= new ArrayList<RVariable>()
listTemp = new ArrayList<ResultadoTemporal>()
break;
case 2:
/***
* PROCESO DE SALIDA POR REGIONES
*
* */
/***
* Comienza la busqueda en el origen de datos en base a las variable
* */
for(vari in indicadorInstance.variables){
def sql = new Sql(sessionFactory.currentSession.connection())
if(vari.categorias){
}
def queryTipo="select ctt_id from cat_categoria ca ,cat_tipo ct where
ca.cct_ctt_id=ct.ctt_id "+
" and ca.cct_id in ( select cdc_cct_id from cat_dvariable_categoria where
cdc_cdv_id = "+ vari.id+") group by ctt_id"
def resultTipo
def result = sql.rows(queryTipo.toString())
if(cc!=tam)
query=query+" and "
cc++
if(vari.categorias){
query=query+" ) "
if(resultTotal.size()>0){
temVar= new RVariable()
temVar.letra=vari.clave
resultTotal?.each
{
ResultadoTemporal valorTem = new ResultadoTemporal()
switch (vari.poblacion.clave) {
case "H":
valorTem.region=it.region
valorTem.idRegion = it.region_id
valorTem.indicador=it.hombres
valorTem.anio=anio
temVar.valores.add(valorTem)
temVar.descripcion=it.descripcion
break;
case "M":
valorTem.region=it.region
valorTem.idRegion =it.region_id
valorTem.indicador=it.mujeres
valorTem.anio=anio
temVar.valores.add(valorTem)
temVar.descripcion=it.descripcion
break;
case "T":
valorTem.region=it.region
valorTem.idRegion =it.region_id
valorTem.indicador=it.total
valorTem.anio=anio
temVar.valores.add(valorTem)
temVar.descripcion=it.descripcion
break;
default:
break;
}
}
rVariables.add(temVar)
}
sql.close()
}
/***
* Comienza el calculo del indicador en base a las variables
* */
if(rVariables.size()>0){
num=rVariables.get(0).letra
letra=rVariables.get(0).valores.size()
rVariables.each {
if( it.valores.size()<num){
num=it.valores.size()
letra=it.letra
valorBase=it.valores
}
}
valorBase.each { base->
formula=formula.replaceAll(letra, String.valueOf(base.indicador))
rVariables.each { var->
if(var.letra!=letra){
var.valores.each {
if(base.idRegion==it.idRegion){
formula=formula.replaceAll(var.letra, String.valueOf(it.indicador))
}
}
}
}
rTemp.resultadoIndicador =js.eval("eval('"+formula+"')")
rTemp.region= base.region
rTemp.idRegion= base.idRegion
rTemp.anio=base.anio
listTemp.add(rTemp)
} catch (Exception e) {
e.printStackTrace();
}
formula= indicadorInstance?.formula?.sentencia
/***
* Comienza el proceso de ordenamiento para salida
* */
listTemp.each { actual->
def ban=0
if(resultados.size()>0){
resultados.each {
if(it.idRegion==actual.idRegion){
Resultado res= new Resultado()
res.anio=actual.anio
if(!Double.isNaN(actual.resultadoIndicador)){
res.indicador=actual.resultadoIndicador
}else{
res=null;
}
it.resultados.add(res)
ban=1
}
}
if(ban!=1){
Resultado res= new Resultado()
res.anio=actual.anio
if(!Double.isNaN(actual.resultadoIndicador)){
res.indicador=actual.resultadoIndicador
}else{
res=null;
}
ResultadoIndicador ri = new ResultadoIndicador()
ri.region=actual.region
ri.idRegion=actual.idRegion
ri.resultados.add(res)
resultados.add(ri)
}
}else{
Resultado res= new Resultado()
res.anio=actual.anio
if(!Double.isNaN(actual.resultadoIndicador)){
res.indicador=actual.resultadoIndicador
}else{
res=null;
}
ResultadoIndicador ri = new ResultadoIndicador()
ri.region=actual.region
ri.idRegion=actual.idRegion
ri.resultados.add(res)
resultados.add(ri)
}
}
num=0
rVariables= new ArrayList<RVariable>()
listTemp = new ArrayList<ResultadoTemporal>()
break;
case 3:
/***
* PROCESO DE SALIDA POR MUNICIPIOS
*
* */
/***
* Comienza la busqueda en el origen de datos en base a las variable
* */
for(vari in indicadorInstance.variables){
def sql = new Sql(sessionFactory.currentSession.connection())
if(vari.categorias){
}
def queryTipo="select ctt_id from cat_categoria ca ,cat_tipo ct where
ca.cct_ctt_id=ct.ctt_id "+
" and ca.cct_id in ( select cdc_cct_id from cat_dvariable_categoria where
cdc_cdv_id = "+ vari.id+") group by ctt_id"
def resultTipo
def result = sql.rows(queryTipo.toString())
if(cc!=tam)
query=query+" and "
cc++
if(vari.categorias){
query=query+" ) "
if(resultTotal.size()>0){
temVar= new RVariable()
temVar.letra=vari.clave
resultTotal?.each
{
ResultadoTemporal valorTem = new ResultadoTemporal()
switch (vari.poblacion.clave) {
case "H":
valorTem.region=it.region
valorTem.idRegion = it.region_id
valorTem.municipio=it.municipio
valorTem.idMunicipio = it.municipio_id
valorTem.indicador=it.hombres
valorTem.anio=anio
temVar.valores.add(valorTem)
temVar.descripcion=it.descripcion
break;
case "M":
valorTem.region=it.region
valorTem.idRegion =it.region_id
valorTem.municipio=it.municipio
valorTem.idMunicipio = it.municipio_id
valorTem.indicador=it.mujeres
valorTem.anio=anio
temVar.valores.add(valorTem)
temVar.descripcion=it.descripcion
break;
case "T":
valorTem.region=it.region
valorTem.idRegion =it.region_id
valorTem.municipio=it.municipio
valorTem.idMunicipio = it.municipio_id
valorTem.indicador=it.total
valorTem.anio=anio
temVar.valores.add(valorTem)
temVar.descripcion=it.descripcion
break;
default:
break;
}
}
rVariables.add(temVar)
}
sql.close()
}
/***
* Comienza el calculo del indicador en base a las variables
* */
if(rVariables.size()>0){
letra=rVariables.get(0).letra
num=rVariables.get(0).valores.size()
rVariables.each {
if( it.valores.size()!=0){
num=it.valores.size()
letra=it.letra
valorBase=it.valores
}
}
valorBase.each { base->
formula=formula.replaceAll(letra, String.valueOf(base.indicador))
rVariables.each { var->
if(var.letra!=letra){
var.valores.each {
if(base.idMunicipio==it.idMunicipio){
formula=formula.replaceAll(var.letra, String.valueOf(it.indicador))
}
}
}
}
ResultadoTemporal rTemp = new ResultadoTemporal()
rTemp.resultadoIndicador =js.eval("eval('"+formula+"')")
rTemp.region= base.region
rTemp.idRegion= base.idRegion
rTemp.municipio= base.municipio
rTemp.idMunicipio= base.idMunicipio
rTemp.anio=base.anio
listTemp.add(rTemp)
} catch (Exception e) {
e.printStackTrace();
}
formula= indicadorInstance?.formula?.sentencia
/***
* Comienza el proceso de ordenamiento para salida
* */
listTemp.each { actual->
def ban=0
if(resultados.size()>0){
resultados.each {
if(it.idMunicipio==actual.idMunicipio){
Resultado res= new Resultado()
res.anio=actual.anio
if(!Double.isNaN(actual.resultadoIndicador)){
res.indicador=actual.resultadoIndicador
}else{
res=null;
}
it.resultados.add(res)
ban=1
}
}
if(ban!=1){
Resultado res= new Resultado()
res.anio=actual.anio
if(!Double.isNaN(actual.resultadoIndicador)){
res.indicador=actual.resultadoIndicador
}else{
res=null;
}
ResultadoIndicador ri = new ResultadoIndicador()
ri.region=actual.region
ri.idRegion=actual.idRegion
ri.municipio= actual.municipio
ri.idMunicipio= actual.idMunicipio
ri.resultados.add(res)
resultados.add(ri)
}
}else{
Resultado res= new Resultado()
res.anio=actual.anio
if(!Double.isNaN(actual.resultadoIndicador)){
res.indicador=actual.resultadoIndicador
}else{
res=null;
}
ResultadoIndicador ri = new ResultadoIndicador()
ri.region=actual.region
ri.idRegion=actual.idRegion
ri.municipio= actual.municipio
ri.idMunicipio= actual.idMunicipio
ri.resultados.add(res)
resultados.add(ri)
}
}
num=0
rVariables= new ArrayList<RVariable>()
break;
case 4:
/***
* PROCESO DE SALIDA POR LOCALIDADES
*
* */
/***
* Comienza la busqueda en el origen de datos en base a las variable
* */
for(vari in indicadorInstance.variables){
def sql = new Sql(sessionFactory.currentSession.connection())
if(vari.categorias){
}
def queryTipo="select ctt_id from cat_categoria ca ,cat_tipo ct where
ca.cct_ctt_id=ct.ctt_id "+
" and ca.cct_id in ( select cdc_cct_id from cat_dvariable_categoria where
cdc_cdv_id = "+ vari.id+") group by ctt_id"
def resultTipo
def result = sql.rows(queryTipo.toString())
if(cc!=tam)
query=query+" and "
cc++
if(vari.categorias){
query=query+" ) "
if(resultTotal.size()>0){
temVar= new RVariable()
temVar.letra=vari.clave
resultTotal?.each
{
ResultadoTemporal valorTem = new ResultadoTemporal()
switch (vari.poblacion.clave) {
case "H":
valorTem.region=it.region
valorTem.idRegion = it.region_id
valorTem.municipio=it.municipio
valorTem.idMunicipio = it.municipio_id
valorTem.localidad=it.localidad
valorTem.idLocalidad = it.localidad_id
valorTem.indicador=it.hombres
valorTem.anio=anio
temVar.valores.add(valorTem)
temVar.descripcion=it.descripcion
break;
case "M":
valorTem.region=it.region
valorTem.idRegion =it.region_id
valorTem.municipio=it.municipio
valorTem.idMunicipio = it.municipio_id
valorTem.localidad=it.localidad
valorTem.idLocalidad = it.localidad_id
valorTem.indicador=it.mujeres
valorTem.anio=anio
temVar.valores.add(valorTem)
temVar.descripcion=it.descripcion
break;
case "T":
valorTem.region=it.region
valorTem.idRegion =it.region_id
valorTem.municipio=it.municipio
valorTem.idMunicipio = it.municipio_id
valorTem.localidad=it.localidad
valorTem.idLocalidad = it.localidad_id
valorTem.indicador=it.total
valorTem.anio=anio
temVar.valores.add(valorTem)
temVar.descripcion=it.descripcion
break;
default:
break;
}
}
rVariables.add(temVar)
}
sql.close()
}
/***
* Comienza el calculo del indicador en base a las variables
* */
if(rVariables.size()>0){
num=rVariables.get(0).letra
letra=rVariables.get(0).valores.size()
rVariables.each {
if( it.valores.size()<num){
num=it.valores.size()
letra=it.letra
valorBase=it.valores
}
}
valorBase.each { base->
formula=formula.replaceAll(letra, String.valueOf(base.indicador))
rVariables.each { var->
if(var.letra!=letra){
var.valores.each {
if(base.idLocalidad==it.idLocalidad){
formula=formula.replaceAll(var.letra, String.valueOf(it.indicador))
}
}
}
rTemp.resultadoIndicador =js.eval("eval('"+formula+"')")
rTemp.region= base.region
rTemp.idRegion= base.idRegion
rTemp.municipio= base.municipio
rTemp.idMunicipio= base.idMunicipio
rTemp.localidad= base.localidad
rTemp.idLocalidad= base.idLocalidad
rTemp.anio=base.anio
listTemp.add(rTemp)
} catch (ScriptException e) {
e.printStackTrace();
}
formula= indicadorInstance?.formula?.sentencia
/***
* Comienza el proceso de ordenamiento para salida
* */
listTemp.each { actual->
def ban=0
if(resultados.size()>0){
resultados.each {
if(it.idLocalidad==actual.idLocalidad){
Resultado res= new Resultado()
res.anio=actual.anio
if(!Double.isNaN(actual.resultadoIndicador)){
res.indicador=actual.resultadoIndicador
}else{
res=null;
}
it.resultados.add(res)
ban=1
}
}
if(ban==1){
Resultado res= new Resultado()
res.anio=actual.anio
if(!Double.isNaN(actual.resultadoIndicador)){
res.indicador=actual.resultadoIndicador
}else{
res=null;
}
ResultadoIndicador ri = new ResultadoIndicador()
ri.region=actual.region
ri.idRegion=actual.idRegion
ri.municipio= actual.municipio
ri.idMunicipio= actual.idMunicipio
ri.localidad= actual.localidad
ri.idLocalidad= actual.idLocalidad
ri.resultados.add(res)
resultados.add(ri)
}
}else{
Resultado res= new Resultado()
res.anio=actual.anio
if(!Double.isNaN(actual.resultadoIndicador)){
res.indicador=actual.resultadoIndicador
}else{
res=null;
}
ResultadoIndicador ri = new ResultadoIndicador()
ri.municipio= actual.municipio
ri.idMunicipio= actual.idMunicipio
ri.localidad= actual.localidad
ri.idLocalidad= actual.idLocalidad
ri.resultados.add(res)
resultados.add(ri)
}
}
}
num=0
rVariables= new ArrayList<RVariable>()
listTemp = new ArrayList<ResultadoTemporal>()
break;
[indicadorInstance:indicadorInstance,resultados:resultados]
}
def getOrigenDatos(clave,indicador){
@Secured(['ROLE_DEP','ROLE_NUCLEO','ROLE_LECTURA', 'ROLE_ADMIN'])
def encuentraVariablesAndCategoria(Variable v, Categoria cat){
def ban = false
for(c in v.categorias){
if(c.id==cat.id)
ban=true
}
return ban;
}
@Secured(['ROLE_DEP','ROLE_NUCLEO','ROLE_LECTURA', 'ROLE_ADMIN'])
def descripciones(){
def cvar= new ArrayList<ComboVariable>()
def sql = new Sql(sessionFactory.currentSession.connection())
def query = "select cvv_clave as clave ,cvv_descripcion as descripcion from cat_variable
group by cvv_clave,cvv_descripcion"
cvar=result?.each
{
def v= new Combo();
v.descripcion=it.clave+"-"+it.descripcion;
v.clave=it.clave
cvar.add(v)
}
sql.close()
render cvar as JSON
}
@Secured(['ROLE_DEP','ROLE_NUCLEO','ROLE_ADMIN','ROLE_LECTURA'])
def categoriasByModulo(){
def modulo = Eje.get(params.id as long)
def divisiones
if(modulo){
divisiones=Division.findAllByEje(modulo)
}else{
divisiones =Division.list()
}
render divisiones as JSON
}
@Secured(['ROLE_DEP','ROLE_NUCLEO','ROLE_ADMIN','ROLE_LECTURA'])
def temaByEje(){
if(params.id!='null'){
def eje = PNDesarrollo.get(params.id)
def temas
if(eje){
temas = Tema.findAllByEje(eje)
}else{
temas = Tema.list()
}
render temas as JSON
}else{
def temas = [[id:'null', descripcion: '-No pertenece al PED-']]
render temas as JSON
}
def save() {
if (!indicadorInstance?.calculoFijo){
def variables= sentencia.split("\\|")
for(v in variables){
if(numCategorias){
for(i in 1 .. numCategorias){
indicadorInstance.addToVariables(dVariable)
}
}
/* indicadorInstance.valorNivelNacional =
params.valorNivelNacional!=''?params.valorNivelNacional:null
indicadorInstance.fuenteNivelNacional =
params.fuenteNivelNacional!=''?params.fuenteNivelNacional:null
indicadorInstance.calcularPorPeriodoNivelNacional =
params.calcularPorPeriodoNivelNacional.toBoolean()
if (!indicadorInstance.save(flush: true)) {
render(view: "create", model: [indicadorInstance: indicadorInstance])
return
}
flash.message = message(code: 'default.created.message', args: [message(code:
'indicador.label', default: 'Indicador'), indicadorInstance.id])
redirect(action: "show", id: indicadorInstance.id)
}
@Secured(['ROLE_DEP','ROLE_NUCLEO','ROLE_LECTURA', 'ROLE_ADMIN'])
def show(Long id) {
def indicadorInstance = Indicador.get(id)
if (!indicadorInstance) {
flash.message = message(code: 'default.not.found.message', args: [message(code:
'indicador.label', default: 'Indicador'), id])
redirect(action: "list")
return
}
[indicadorInstance: indicadorInstance]
}
@Secured(['ROLE_DEP','ROLE_NUCLEO','ROLE_LECTURA', 'ROLE_ADMIN'])
def edit(Long id) {
def indicadorInstance = Indicador.get(id)
if (!indicadorInstance) {
flash.message = message(code: 'default.not.found.message', args: [message(code:
'indicador.label', default: 'Indicador'), id])
redirect(action: "list")
return
}
[indicadorInstance: indicadorInstance,dep:dep,decimalesList:decimalesList]
}
if (version != null) {
if (indicadorInstance.version > version) {
indicadorInstance.errors.rejectValue("version", "default.optimistic.locking.failure",
[message(code: 'indicador.label', default: 'Indicador')] as Object[],
"Another user has updated this Indicador while you were editing")
render(view: "edit", model: [indicadorInstance: indicadorInstance])
return
}
}
indicadorInstance.properties = params
if (!indicadorInstance?.calculoFijo){
def variables = sentencia.split("\\|")
def variablesAux = indicadorInstance.variables
if (variablesAux.size() != variables.size()) {
def ids = variablesAux.id
ids.each { idVariable ->
def variable = indicadorInstance.variables.find { it.id == idVariable }
def frecuencias = FrecuenciaIndicador.findAllByVariable(variable)
frecuencias?.each {
it.delete()
}
indicadorInstance.removeFromVariables(variable)
variable.delete()
}
}
variables.each { v ->
if (nuevo.equals('false')) {
variable.clave = v
variable.descripcion = params.getAt("descripcion_" + v)
variable.claveVar = params.getAt("claveVar_" + v)
variable.intervalo = params.getAt("intervalo_" + v).toInteger()
variable.poblacion = Poblacion.get(params.getAt("poblacion_" + v))
variable.mostrarCiclo = params.getAt("mostrarCiclo_" + v)
variable.categorias.clear()
if (numCategorias) {
for (i in 1..numCategorias) {
def categoria = Categoria.get(params.getAt("categoria_" + i + "_" + v))
if (categoria) {
variable.addToCategorias(categoria)
}
}
}
} else {
def dVariable = new DVariable()
dVariable.clave = v
dVariable.descripcion = params.getAt("descripcion_" + v)
dVariable.claveVar = params.getAt("claveVar_" + v)
dVariable.intervalo = params.getAt("intervalo_" + v).toInteger()
dVariable.poblacion = Poblacion.get(params.getAt("poblacion_" + v))
if (numCategorias) {
for (i in 1..numCategorias) {
def categoria = Categoria.get(params.getAt("categoria_" + i + "_" + v))
if (categoria) {
dVariable.addToCategorias(categoria)
}
}
}
if (variable) {
def frecuencias = FrecuenciaIndicador.findAllByVariable(variable)
frecuencias?.each {
it.delete()
}
indicadorInstance.removeFromVariables(variable)
variable.delete()
}
indicadorInstance.addToVariables(dVariable)
}
}
indicadorInstance.totalIndicador=null;
indicadorInstance.anioIndicador = null;
}
def dVariable = DVariable.findAllByIndicador(indicadorInstance);
dVariable?.each {
it.delete()
}
/*indicadorInstance.valorNivelNacional =
params.valorNivelNacional!=''?params.valorNivelNacional:null
indicadorInstance.fuenteNivelNacional =
params.fuenteNivelNacional!=''?params.fuenteNivelNacional:null
indicadorInstance.calcularPorPeriodoNivelNacional =
params.calcularPorPeriodoNivelNacional.toBoolean()
if (!indicadorInstance.save(flush: true)) {
render(view: "edit", model: [indicadorInstance: indicadorInstance])
return
}
@Secured(['ROLE_DEP','ROLE_NUCLEO','ROLE_LECTURA', 'ROLE_ADMIN'])
def categorias(){
[var:var,con:con]
}
@Secured(['ROLE_DEP','ROLE_NUCLEO','ROLE_LECTURA', 'ROLE_ADMIN'])
def buscadorVariable() {
def formula = Formula.get(params.id);
def var
def resultado
def claveVar
if (formula) {
var = formula.variables.split("\\|")
var = indicador.variables
[variable: var, sentencia: formula.sentencia, descripcion: formula.descripcion]
} else {
def vare = new ArrayList<DVariable>()
for (s in var) {
def tem = new DVariable()
tem.clave = s
vare.add(tem);
}
[variable: vare, sentencia: formula.sentencia, descripcion: formula.descripcion]
}
}
}
else {
def vare = new ArrayList<DVariable>()
for (s in var) {
@Secured(['ROLE_DEP','ROLE_NUCLEO','ROLE_LECTURA', 'ROLE_ADMIN'])
def resultadoVariable(){
def variable=params.id
def var =
Variable.findAllByLocalidadAndMunicipioAndRegionAndEstadoAndAnio(localidad,municipio,region,
estado,anio);
[var:var,nomVar:params.id]
@Secured(['ROLE_ADMIN'])
def delete(Long id) {
def indicadorInstance = Indicador.get(id)
if (!indicadorInstance) {
flash.message = message(code: 'default.not.found.message', args: [message(code:
'indicador.label', default: 'Indicador'), id])
redirect(action: "list")
return
}
try {
indicadorInstance.delete(flush: true)
flash.message = message(code: 'default.deleted.message', args: [message(code:
'indicador.label', default: 'Indicador'), id])
redirect(action: "list")
}
catch (DataIntegrityViolationException e) {
flash.message = message(code: 'default.not.deleted.message', args: [message(code:
'indicador.label', default: 'Indicador'), id])
redirect(action: "show", id: id)
}
}
if(fecuenciaIndicadorInstance!=null){
fechaLimite = fecuenciaIndicadorInstance?.fechaActualizacion
println 'fechaLimite:'+fechaLimite
if(fechaLimite<new Date()){
while(fechaLimite<new Date()){
fechaLimite = use(TimeCategory) {
if(fecuenciaIndicadorInstance?.frecuencia?.mes){
fechaLimite + fecuenciaIndicadorInstance?.frecuencia?.nmeses?.month
}else{
fechaLimite + fecuenciaIndicadorInstance?.frecuencia?.nmeses?.days
}
}
}
fechaLimite = use(TimeCategory) {
if(fecuenciaIndicadorInstance?.frecuencia?.mes){
fechaLimite - fecuenciaIndicadorInstance?.frecuencia?.nmeses?.month
}else{
fechaLimite - fecuenciaIndicadorInstance?.frecuencia?.nmeses?.days
}
}
}else{
status=true
}
}else{
fechaLimite=null
}
def variable = CatOrigenDatos.findByClave(dVariableInstance?.claveVar)?.descripcion
println 'fechaLimite 2:'+fechaLimite
if(fechaLimite!=null && fechaLimite<=dVariableInstance?.fechaActualizacion){
status = true
}
filas.add([dVariableInstance?.claveVar, variable,
fecuenciaIndicadorInstance?.frecuencia?.descripcion, dVariableInstance?.fechaActualizacion,
status])
}
[dependencia:dependencia, indicadorInstance:indicadorInstance, filas:filas]
}
@Secured(['ROLE_ADMIN'])
def correo(){
def asunto = Valor.findByKey('asunto')
def cuerpo = Valor.findByKey('cuerpo')
[asunto:asunto?.valor, cuerpo:cuerpo?.valor]
}
@Secured(['ROLE_ADMIN'])
def actualizarCorreo(){
def asunto = Valor.findByKey('asunto')
def cuerpo = Valor.findByKey('cuerpo')
asunto.valor = params.asunto
cuerpo.valor = params.cuerpo
if (!asunto.save(flush: true)) {
flash.message = 'Error al guardar el asunto'
render(view: "correo", model: [asunto:params.asunto, cuerpo:params.cuerpo])
return
}
if (!cuerpo.save(flush: true)) {
flash.message = 'Error al guardar el cuerpo del correo'
render(view: "correo", model: [asunto:params.asunto, cuerpo:params.cuerpo])
return
}
flash.message = 'Datos guardados correctamente'
render(view: "correo", model: [asunto:asunto?.valor, cuerpo:cuerpo?.valor])
}
def verificarFrecuenciaActualizacion(){
render(text:params.fechaActualizacion)
}
def esAdmin(){
def user =springSecurityService.currentUser
boolean admin = false
user.authorities.each{
if(it.authority.equals('ROLE_ADMIN')){
admin = true
}
}
return admin
}
def descargarManual(){
def valorInstance = Valor.findByKey("rutaManual")
if(valorInstance){
descargarArchivo(valorInstance.valor)
}else{
response.sendError(500)
}
}
def descargarCatalogoIndicadores(){
def valorInstance = Valor.findByKey("rutaCatalogoIndicadores")
if(valorInstance){
descargarArchivo(valorInstance.valor)
}else{
response.sendError(500)
}
}
@Secured(['ROLE_ADMIN'])
def ordenar(){
@Secured(['ROLE_DEP','ROLE_NUCLEO','ROLE_ADMIN','ROLE_LECTURA'])
def getDivisionByEje(Long id){
def modulo = Eje.get(id)
def divisiones
if(modulo){
// en esta linea se hace el filtrado de las areas tematicas segun su domino ("eje"), y
ademas se ordena segun su el numero que tengan en su atributo orden.
divisiones=Division.findAllByEje(modulo).sort{it.orden}
}else{
divisiones =Division.list()
}
@Secured(['ROLE_DEP','ROLE_NUCLEO','ROLE_ADMIN','ROLE_LECTURA'])
def getIndicadorByDivision(Long id){
def division = Division.get(id)
render template:'division', model:[division: division]
}
@Secured(['ROLE_DEP','ROLE_NUCLEO','ROLE_LECTURA', 'ROLE_ADMIN'])
def ordenarIndicadores(){
return
}
/**
* Metodo para listar todas las dimension que pertenecen a un derecho
* @param: int id : Id del derecho para buscar dimensiones
* @return List dominios: Lista de dimensiones
*/
@Secured(['ROLE_DEP','ROLE_NUCLEO','ROLE_LECTURA', 'ROLE_ADMIN'])
def getdimension(){
def iddom = params.id
def query="select d.dim_id as id, d.dim_descripcion as descripcion from cat_dimension
as d"
query += " WHERE d.derecho_id = " + iddom
def sql = new Sql(dataSource)
render(contentType: 'text/json'){[
dimensiones:sql.rows(query)
]}
return
}
@Secured(['ROLE_DEP','ROLE_NUCLEO','ROLE_LECTURA', 'ROLE_ADMIN'])
def getareatematica(){
return
}
@Secured(['ROLE_DEP','ROLE_NUCLEO','ROLE_LECTURA', 'ROLE_ADMIN'])
def getlineaAccion(){
from="${mx.gob.redoaxaca.cednna.domino.LineaAccion.findByAreaTematica(indicadorInstance?.d
ivision)}" optionKey="id"
optionValue="descripcion" required=""
value="${indicadorInstance?.lineaAccion?.id}" class="many-to-one" noSelection="['': '–
No pertenece al pacto-']" />
%{--<select name="areatematica" id="areatematica" class="many-to-one"
value="${indicadorInstance?.areatematica}">--}%
</select>
</div>
</div>
publico _division
<span class="lineaAccion" style="color: #ec971f; font-size: x-
large">${indicador?.lineaAccion?.descripcion }</span>
<br/>
/**
* Funcion que se ejecuta al seleccionar una area tematica y busca todas las lienas de accion de
esa area
*/
$('#division').change(function(){
var clv=$(this).val();
if($(this).val()!=""){
$.ajax({
type:'POST',
data:{'id':clv},
url: CONTEXT_ROOT +'/indicador/getlineaAccion'
,success:function(data,textStatus){
//console.log(data)
html="";
html+=" <option value=''>Seleccione opcion</option>";
$.each( data.lineaAcciones, function( key, value ) {
html+="<option value='"+value.id+"'>"+value.descripcion+"</option>";
});
$('#lineaAccion').empty();
$('#lineaAccion').append(html);
$('#lineaAccion').trigger("chosen:updated");
}
});
}else{
$("#lineaAccion").empty();
}
});