public function getTgen() { if (!$this->Tgen) { // TODO: que se pueda configurar el generador $this->Tgen = TgenExtension::getDefaultTgen(); } return $this->Tgen; }
/** * Ver un requerimiento, con formulario para publicar una novedad. * * @Route("ver/") * @Template() */ public function verAction(Request $request) { $ResultadoVer = $this->parent_verAction($request); $res = $ResultadoVer['res']; $UsuarioConectado = $this->get('security.token_storage')->getToken()->getUser(); if (!is_string($UsuarioConectado)) { $AntiguedadEnDias = $res->Entidad->getUpdatedAt()->diff(new \DateTime()); if ($res->Entidad->getEstado() < 50 || $AntiguedadEnDias->days < 30) { // Sólo se permite publicar novedades si el requerimiento todavía no fue cerrado // o si tuvo actividad en los últimos 30 días. // O sea, los requerimientos cerrados siguen siendo comentables durante 30 días. $NuevaNovedad = new \Yacare\RequerimientosBundle\Entity\Novedad(); $NuevaNovedad->setPrivada(0); $NuevaNovedad->setRequerimiento($res->Entidad); $NuevaNovedad->setUsuario($UsuarioConectado); $FormEditar = $this->createForm('Yacare\\RequerimientosBundle\\Form\\NovedadType', $NuevaNovedad); $res->FormularioNovedad = $FormEditar->createView(); } } $Requerimiento = $res->Entidad; // Genero las opciones apropiadas para el botón avance $Tgen = \Tapir\TemplateBundle\Twig\TgenExtension::getDefaultTgen(); $EnlaceIniciar = $Tgen->Link('Iniciar', ['icon' => 'play', 'ajax' => true, 'href' => $res->UrlAccion('cambiarestado', ['id' => $Requerimiento->getId(), 'nuevoestado' => 10, 'hisapi' => 0])]); $EnlaceContinuar = $Tgen->Link('Continuar', ['icon' => 'play', 'ajax' => true, 'href' => $res->UrlAccion('cambiarestado', ['id' => $Requerimiento->getId(), 'nuevoestado' => 10, 'hisapi' => 0])]); $EnlaceReabrir = $Tgen->Link('Reabrir', ['icon' => 'play', 'ajax' => true, 'href' => $res->UrlAccion('cambiarestado', ['id' => $Requerimiento->getId(), 'nuevoestado' => 10, 'hisapi' => 0])]); $EnlaceEspera = $Tgen->Link('Poner en espera', ['icon' => 'refresh', 'ajax' => true, 'href' => $res->UrlAccion('cambiarestado', ['id' => $Requerimiento->getId(), 'nuevoestado' => 20, 'hisapi' => 0])]); $EnlaceCancelar = $Tgen->Link('Cancelar', ['icon' => 'times', 'ajax' => true, 'href' => $res->UrlAccion('cambiarestado', ['id' => $Requerimiento->getId(), 'nuevoestado' => 80, 'hisapi' => 0])]); $EnlaceTerminar = $Tgen->Link('Terminar', ['icon' => 'check', 'ajax' => true, 'href' => $res->UrlAccion('cambiarestado', ['id' => $Requerimiento->getId(), 'nuevoestado' => 90, 'hisapi' => 0])]); $EnlaceCerrar = $Tgen->Link('Cerrar y archivar', ['icon' => 'flag-checkered', 'ajax' => true, 'href' => $res->UrlAccion('cambiarestado', ['id' => $Requerimiento->getId(), 'nuevoestado' => 99, 'hisapi' => 0])]); $OpcionesAvance = []; switch ($Requerimiento->getEstado()) { case 0: // Nuevo $OpcionesAvance[] = $EnlaceIniciar; $OpcionesAvance[] = 'bootstrap-divider'; $OpcionesAvance[] = $EnlaceCancelar; break; case 10: // Iniciado $OpcionesAvance[] = $EnlaceEspera; $OpcionesAvance[] = $EnlaceTerminar; $OpcionesAvance[] = 'bootstrap-divider'; $OpcionesAvance[] = $EnlaceCancelar; break; case 20: // En espera $OpcionesAvance[] = $EnlaceContinuar; $OpcionesAvance[] = $EnlaceTerminar; $OpcionesAvance[] = 'bootstrap-divider'; $OpcionesAvance[] = $EnlaceCancelar; break; case 80: // Cancelado $OpcionesAvance[] = $EnlaceReabrir; break; case 90: // Terminado $OpcionesAvance[] = $EnlaceCerrar; $OpcionesAvance[] = 'bootstrap-divider'; $OpcionesAvance[] = $EnlaceReabrir; break; case 99: // Cerrado $OpcionesAvance[] = $EnlaceReabrir; break; } $res->BotonAvance = $Tgen->DropdownButton('Avance', $OpcionesAvance, ['menu-right' => true]); return $ResultadoVer; }