public function getIndicadoresSala(GrupoIndicadores $sala)
 {
     $em = $this->getEntityManager();
     $dql = "SELECT i.filtro, i.dimension, i.posicion, i.tipoGrafico, i.orden,\n                    f.id as idIndicador, i.filtroPosicionDesde, i.filtroPosicionHasta,\n                    i.filtroElementos\n                    FROM IndicadoresBundle:GrupoIndicadoresIndicador i\n                    JOIN i.indicador f\n                    WHERE\n                        i.grupo = :sala";
     $query = $em->createQuery($dql);
     $query->setParameter('sala', $sala->getId());
     return $query->getArrayResult();
 }
예제 #2
0
 /**
  * @Route("/sala/guardar", name="sala_guardar", options={"expose"=true})
  */
 public function guardarSala()
 {
     $em = $this->getDoctrine()->getManager();
     $req = $this->getRequest();
     $resp = array();
     $sala = json_decode($req->get('datos'));
     $em->getConnection()->beginTransaction();
     try {
         if ($sala->id != '') {
             $grupoIndicadores = $em->find('IndicadoresBundle:GrupoIndicadores', $sala->id);
             //Borrar los indicadores antiguos de la sala
             foreach ($grupoIndicadores->getIndicadores() as $ind) {
                 $em->remove($ind);
             }
             $em->flush();
             //$grupoIndicadores->removeIndicadore($ind);
         } else {
             $grupoIndicadores = new \MINSAL\IndicadoresBundle\Entity\GrupoIndicadores();
         }
         $grupoIndicadores->setNombre($sala->nombre);
         foreach ($sala->datos_indicadores as $grafico) {
             if (!empty($grafico->id_indicador)) {
                 $indG = new \MINSAL\IndicadoresBundle\Entity\GrupoIndicadoresIndicador();
                 $ind = $em->find('IndicadoresBundle:FichaTecnica', $grafico->id_indicador);
                 $indG->setDimension($grafico->dimension);
                 $indG->setFiltro($grafico->filtros);
                 $indG->setFiltroPosicionDesde($grafico->filtro_desde);
                 $indG->setFiltroPosicionHasta($grafico->filtro_hasta);
                 $indG->setFiltroElementos($grafico->filtro_elementos);
                 $indG->setIndicador($ind);
                 $indG->setPosicion($grafico->posicion);
                 if (property_exists($grafico, 'orden')) {
                     $indG->setOrden($grafico->orden);
                 }
                 $indG->setTipoGrafico($grafico->tipo_grafico);
                 $indG->setGrupo($grupoIndicadores);
                 $grupoIndicadores->addIndicadore($indG);
             }
         }
         $em->persist($grupoIndicadores);
         $em->flush();
         if ($sala->id == '') {
             $usuarioGrupoIndicadores = new \MINSAL\IndicadoresBundle\Entity\UsuarioGrupoIndicadores();
             $usuarioGrupoIndicadores->setUsuario($this->getUser());
             $usuarioGrupoIndicadores->setEsDuenio(true);
             $usuarioGrupoIndicadores->setGrupoIndicadores($grupoIndicadores);
             $em->persist($usuarioGrupoIndicadores);
             $em->flush();
         }
         $resp['estado'] = 'ok';
         $em->getConnection()->commit();
     } catch (Exception $e) {
         $em->getConnection()->rollback();
         $em->close();
         $resp['estado'] = 'error';
         throw $e;
     }
     $resp['id_sala'] = $grupoIndicadores->getId();
     return new Response(json_encode($resp));
 }