/**
  * @Route("/usuario/{id}/sala/{id_sala}/{accion}", name="usuario_asignar_sala", options={"expose"=true})
  * @ParamConverter("sala", class="IndicadoresBundle:GrupoIndicadores", options={"id" = "id_sala"})
  */
 public function asignarSala(User $usuario, GrupoIndicadores $sala, $accion)
 {
     $em = $this->getDoctrine()->getManager();
     if ($accion == 'add') {
         $salaUsuario = new UsuarioGrupoIndicadores();
         $salaUsuario->setUsuario($usuario);
         $salaUsuario->setGrupoIndicadores($sala);
         $em->persist($salaUsuario);
     } else {
         $salaUsuario = $em->getRepository('IndicadoresBundle:UsuarioGrupoIndicadores')->findOneBy(array('usuario' => $usuario, 'grupoIndicadores' => $sala));
         $em->remove($salaUsuario);
     }
     $em->flush();
     return new Response();
 }
 /**
  * @Route("/sala/{id}/set_usuario/{id_usuario}/{accion}", name="sala_set_usuario", options={"expose"=true})
  */
 public function setUsuarioSala(GrupoIndicadores $sala, $id_usuario, $accion)
 {
     $em = $this->getDoctrine()->getManager();
     if ($accion == 'borrar') {
         $usuarios_asignados = $em->getRepository('IndicadoresBundle:UsuarioGrupoIndicadores')->findOneBy(array('usuario' => $id_usuario, 'grupoIndicadores' => $sala));
         $em->remove($usuarios_asignados);
     } else {
         $usuario = $em->find('IndicadoresBundle:User', $id_usuario);
         $usuarioSala = new UsuarioGrupoIndicadores();
         $usuarioSala->setGrupoIndicadores($sala);
         $usuarioSala->setUsuario($usuario);
         $usuarioSala->setUsuarioAsigno($this->getUser());
         $em->persist($usuarioSala);
     }
     $em->flush();
     return new Response();
 }
 /**
  * @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));
 }