/** * @Route("/indicador/dimensiones/{id}", name="indicador_dimensiones", options={"expose"=true}) */ public function getDimensiones(FichaTecnica $fichaTec) { $resp = array(); $em = $this->getDoctrine()->getManager(); if ($fichaTec) { $resp['nombre_indicador'] = $fichaTec->getNombre(); $resp['id_indicador'] = $fichaTec->getId(); $resp['unidad_medida'] = $fichaTec->getUnidadMedida(); if ($fichaTec->getUpdatedAt() != "") { $resp["origen_dato_actualizacion"] = date('d/m/Y H:i:s', $fichaTec->getUpdatedAt()->getTimestamp()); } if ($fichaTec->getCamposIndicador() != '') { $campos = explode(',', str_replace(array("'", ' '), array('', ''), $fichaTec->getCamposIndicador())); } else { $campos = array(); } $dimensiones = array(); foreach ($campos as $campo) { $significado = $em->getRepository('IndicadoresBundle:SignificadoCampo')->findOneByCodigo($campo); if (count($significado->getTiposGraficosArray()) > 0) { $dimensiones[$significado->getCodigo()]['descripcion'] = ucfirst(preg_replace('/^Identificador /i', '', $significado->getDescripcion())); $dimensiones[$significado->getCodigo()]['escala'] = $significado->getEscala(); $dimensiones[$significado->getCodigo()]['origenX'] = $significado->getOrigenX(); $dimensiones[$significado->getCodigo()]['origenY'] = $significado->getOrigenY(); $dimensiones[$significado->getCodigo()]['graficos'] = $significado->getTiposGraficosArray(); } } $rangos_alertas_aux = array(); foreach ($fichaTec->getAlertas() as $k => $rango) { $rangos_alertas_aux[$rango->getLimiteSuperior()]['limite_sup'] = $rango->getLimiteSuperior(); $rangos_alertas_aux[$rango->getLimiteSuperior()]['limite_inf'] = $rango->getLimiteInferior(); $rangos_alertas_aux[$rango->getLimiteSuperior()]['color'] = $rango->getColor()->getCodigo(); $rangos_alertas_aux[$rango->getLimiteSuperior()]['comentario'] = $rango->getComentario(); } ksort($rangos_alertas_aux); $rangos_alertas = array(); foreach ($rangos_alertas_aux as $rango) { $rangos_alertas[] = $rango; } $resp['rangos'] = $rangos_alertas; $resp['formula'] = $fichaTec->getFormula(); $resp['meta'] = $fichaTec->getMeta(); $resp['dimensiones'] = $dimensiones; //Verificar que se tiene la más antigua de las últimas lecturas de los orígenes //de datos del indicador $ultima_lectura = new \DateTime("NOW"); foreach ($fichaTec->getVariables() as $var) { $fecha_lectura = $em->getRepository('IndicadoresBundle:OrigenDatos')->getUltimaActualizacion($var->getOrigenDatos()); if ($fecha_lectura < $ultima_lectura) { $ultima_lectura = $fecha_lectura; } $conexion = "Excel o csv"; foreach ($var->getOrigenDatos()->getConexiones() as $od) { $conexion = $od->__toString(); } $fuente = null; if (method_exists($var->getIdFuenteDato(), '__toString')) { $fuente = $var->getIdFuenteDato()->__toString(); } $responsable = null; if (method_exists($var->getIdResponsableDato(), '__toString')) { $responsable = $var->getIdResponsableDato()->__toString(); } $resp["origen_dato_"][] = array("origen_dato_nombre" => $var->getNombre(), "origen_dato_confiabilidad" => $var->getConfiabilidad(), "origen_dato_fuente" => $fuente, "origen_dato_responsable" => $responsable, "origen_dato_origen" => $var->getOrigenDatos()->getNombre(), "origen_dato_conexion" => $conexion); } $fichaTec->setUltimaLectura(new \DateTime($ultima_lectura)); $em->flush(); $resp['ultima_lectura'] = date('d/m/Y H:i:s', $fichaTec->getUltimaLectura()->getTimestamp()); $resp['resultado'] = 'ok'; } else { $resp['resultado'] = 'error'; } $response = new Response(json_encode($resp)); if ($this->get('kernel')->getEnvironment() != 'dev') { $response->setMaxAge($this->container->getParameter('indicador_cache_consulta')); } return $response; }