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