public static void updateEstadosSolicitudUsuario() { java.util.List<TableKeyValue> rows = TableKeyValue.find("select tableKeyValue from TableKeyValue tableKeyValue").fetch(); Secure secure = InjectorConfig.getInjector().getInstance(Secure.class); Map<String, Long> ids = new HashMap<String, Long>(); List<TableKeyValue> rowsFiltered = new ArrayList<TableKeyValue>(); for (TableKeyValue tableKeyValue : rows) { Map<String, Object> vars = new HashMap<String, Object>(); vars.put("tableKeyValue", tableKeyValue); if (secure.check("tableKeyOnlyEstadosSolicitud", "read", ids, vars)) { rowsFiltered.add(tableKeyValue); } } // Ahora en "rowsFiltered" tenemos los estados de la solicitud original // Si no existe alguno de los estados originales en la lista de los usuarios, lo creamos for (TableKeyValue tableKeyValue : rowsFiltered) { if (!TableKeyValue.contains(USER_TABLE_NAME, tableKeyValue.key)) { play.Logger.info( "Creamos el estado \"" + tableKeyValue.key + "\" para la visibilidad del estado del usuario"); TableKeyValue.setValue(USER_TABLE_NAME, tableKeyValue.key, tableKeyValue.key); } } }
@Util public static void prepararParaFirmarFormPreparar(Long idSolicitud) { // Sobreescribir este método para asignar una acción Solicitud dbSolicitud = PaginaFirmaController.getSolicitud(idSolicitud); play.Logger.info("Preparamos para firmar"); FirmaService firmaService = InjectorConfig.getInjector().getInstance(FirmaService.class); FirmaUtils.generarOficial(dbSolicitud); if (!Messages.hasErrors()) { dbSolicitud.registro.fasesRegistro.borrador = true; dbSolicitud.solicitante.autorizaFuncionario = false; dbSolicitud.registro.fasesRegistro.setFase(FaseRegistroEnum.preparada); dbSolicitud.save(); // Borra firmantes anteriores List<Firmante> firmantesBack = new ArrayList<Firmante>(dbSolicitud.registro.firmantes); dbSolicitud.registro.firmantes.clear(); dbSolicitud.registro.save(); FirmaUtils.borrarFirmantes(firmantesBack); // Calcula quién puede firmar la solicitud dbSolicitud.registro.firmantes = dbSolicitud.solicitante.calcularFirmantes(); // dbSolicitud.solicitante.autorizaFuncionario = true; dbSolicitud.registro.save(); play.Logger.info("FIRMANTES"); for (Firmante f : dbSolicitud.registro.firmantes) { play.Logger.info(f.toString()); } } if (!Messages.hasErrors()) Messages.ok("Solicitud preparada para firmar"); }