/**
  * @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;
 }