public static void index(Long idEvaluacion, String accion) { Map<String, Long> ids = (Map<String, Long>) tags.TagMapStack.top("idParams"); if (secure.checkGrafico("accesoEvaluacion", "visible", "leer", ids, null)) { TipoEvaluacion tipoEvaluacion = TipoEvaluacion.all().first(); Evaluacion evaluacion = Evaluacion.findById(idEvaluacion); if (evaluacion != null) { BaremacionUtils.ordenarTiposCEconomicos(evaluacion.tipo.ceconomicos); BaremacionUtils.ordenarCEconomicos(evaluacion.ceconomicos); BaremacionUtils.ordenarTiposCriterios(evaluacion.tipo.criterios); BaremacionUtils.ordenarCriterios(evaluacion.criterios); } notFoundIfNull(evaluacion); String expedienteUrl = redirectToFirstPage(evaluacion.solicitud.id); int duracion = tipoEvaluacion.duracion - 1; // Stupid hack boolean admin = "administradorgestor".contains(AgenteController.getAgente().rolActivo); if (!EstadosEvaluacionEnum.evaluada.name().equals(evaluacion.estado)) { BaremacionService.calcularTotales(evaluacion, admin, true); } boolean puedoGuardar = secure.checkGrafico("guardarEvaluacion", "editable", accion, ids, null); renderTemplate( "fap/Baremacion/fichaEvaluador.html", evaluacion, expedienteUrl, duracion, idEvaluacion, accion, puedoGuardar); } else { play.Logger.error("No se cumple el permiso \"accesoEvaluacion\" con ids: " + ids); forbidden(); } }
@Util public static void generaPDF(Long idEvaluacion, Integer duracion) { Evaluacion evaluacion = Evaluacion.findById(idEvaluacion); if (evaluacion == null) { Messages.error("Error al recuperar la evaluacion"); } try { if (evaluacion != null) { BaremacionUtils.ordenarTiposCEconomicos(evaluacion.tipo.ceconomicos); BaremacionUtils.ordenarCEconomicos(evaluacion.ceconomicos); BaremacionUtils.ordenarTiposCriterios(evaluacion.tipo.criterios); BaremacionUtils.ordenarCriterios(evaluacion.criterios); } // Stupid hack boolean admin = "administradorgestor".contains(AgenteController.getAgente().rolActivo); if (!EstadosEvaluacionEnum.evaluada.name().equals(evaluacion.estado)) { BaremacionService.calcularTotales(evaluacion, admin, true); } new Report("reports/baremacion/Borrador.html") .header("reports/header.html") .footer("reports/footer-borrador.html") .renderResponse(evaluacion, duracion); } catch (Exception e) { play.Logger.error("Error al generar el borrador del documento %s", e.getMessage()); Messages.error("Error al generar el borrador del documento"); } }
@Util public static void save(Long idEvaluacion) { Map<String, Long> ids = (Map<String, Long>) tags.TagMapStack.top("idParams"); if (secure.checkGrafico("guardarEvaluacion", "editable", "editar", ids, null)) { boolean actionSave = params.get("save") != null; boolean actionPdf = params.get("pdf") != null; boolean actionEnd = params.get("end") != null; if (!(actionSave || actionPdf || actionEnd)) { // No se específico una acción notFound("Acción no especificada"); } Evaluacion evaluacion = Evaluacion.findById(params.get("evaluacion.id", Long.class)); if (evaluacion == null) { notFound("Fallo al recuperar la evaluación"); } if (!evaluacion.estado.equals(EstadosEvaluacionEnum.enTramite.name())) { Messages.error("No se puede guardar porque esta evaluación ya ha sido finalizada"); Messages.keep(); index(evaluacion.id, "leer"); } // Comentarios if (evaluacion.tipo.comentariosAdministracion) { evaluacion.comentariosAdministracion = params.get("evaluacion.comentariosAdministracion"); } if (evaluacion.tipo.comentariosSolicitante) { evaluacion.comentariosSolicitante = params.get("evaluacion.comentariosSolicitante"); } boolean guardarMaximo = false; // Criterios de evaluacion for (Criterio criterio : evaluacion.criterios) { String param = "criterio[" + criterio.id + "]"; String key = param + ".valor"; Double valor = params.get(key, Double.class); if (criterio.tipo.claseCriterio.equals("manual") || criterio.tipo.claseCriterio.equals("automod")) { // Únicamente valida cuando se va a finalizar // la verificación if (actionEnd || actionSave) { if (actionEnd) validation.required(key, valor); // TODO validaciones de tamaño máximo if (criterio.tipo.valorMaximo != null && valor != null && criterio.tipo.valorMaximo.compareTo(valor) < 0) { // validation.addError(key, "El valor "+valor+" es superior al valor máximo permitido: // "+criterio.tipo.valorMaximo); Messages.warning( "El valor del criterio manual '" + criterio.tipo.jerarquia + " - " + criterio.tipo.nombre + "' (" + FapFormat.formatMoneda(valor) + ") es superior al permitido en ese tipo de criterio: " + FapFormat.formatMoneda(criterio.tipo.valorMaximo)); if (actionEnd) { criterio.valor = criterio.tipo.valorMaximo; guardarMaximo = true; } } if (criterio.tipo.valorMinimo != null && valor != null && criterio.tipo.valorMinimo.compareTo(valor) > 0) { Messages.warning( "El criterio manual/automod " + criterio.tipo.jerarquia + " (" + FapFormat.formatMoneda(valor) + ") no llega al mínimo valor permitido: " + criterio.tipo.valorMinimo + ". Se ha establecido como valor a 0,00"); if (actionEnd) criterio.valor = 0.0; } } if (!validation.hasErrors()) { if (guardarMaximo) guardarMaximo = false; else criterio.valor = valor; } } if (!validation.hasErrors()) { // Comentarios if (criterio.tipo.comentariosAdministracion) { criterio.comentariosAdministracion = params.get(param + ".comentariosAdministracion"); } if (criterio.tipo.comentariosSolicitante) { criterio.comentariosSolicitante = params.get(param + ".comentariosSolicitante"); } } } if (!validation.hasErrors()) { boolean admin = "administradorgestor".contains(AgenteController.getAgente().rolActivo); BaremacionService.calcularTotales(evaluacion, admin); for (Criterio criterio : evaluacion.criterios) { if (criterio.tipo.claseCriterio.equals("auto")) { if (actionEnd || actionSave) { if (criterio.tipo.valorMaximo != null && criterio.valor != null && criterio.tipo.valorMaximo.compareTo(criterio.valor) < 0) { if (actionSave) Messages.warning( "El criterio automático '" + criterio.tipo.jerarquia + " - " + criterio.tipo.nombre + "' (" + FapFormat.formatMoneda(criterio.valor) + ") sobrepasaba el máximo valor permitido. Se ha establecido como valor, su valor máximo posible: " + FapFormat.formatMoneda(criterio.tipo.valorMaximo)); criterio.valor = criterio.tipo.valorMaximo; } if (criterio.tipo.valorMinimo != null && criterio.valor != null && criterio.tipo.valorMinimo.compareTo(criterio.valor) > 0) { Messages.warning( "El criterio automático " + criterio.tipo.jerarquia + " (" + criterio.valor + ") no llega al mínimo valor permitido: " + FapFormat.formatMoneda(criterio.tipo.valorMinimo) + ". Se ha establecido como valor a 0,00"); criterio.valor = 0.0; } } } } if (!Messages.hasErrors()) { BaremacionService.calcularTotales(evaluacion, true, true); } evaluacion.save(); } else { flash(evaluacion); } if (actionSave || actionEnd) { if (actionEnd && !validation.hasErrors()) { // Si no hubo errores anteriores, se comprueba si existen validaciones propias de la // aplicacion botonFinalizar(); if (!Messages.hasErrors()) { evaluacion.estado = EstadosEvaluacionEnum.evaluada.name(); evaluacion.save(); Messages.ok( "La evaluación del expediente " + evaluacion.solicitud.expedienteAed.idAed + " finalizó correctamente"); ConsultarEvaluacionesController.index(); } } if (actionSave && !validation.hasErrors()) { Messages.ok( "La evaluación del expediente " + evaluacion.solicitud.expedienteAed.idAed + " se guardó correctamente"); } Messages.keep(); redirect("fap.FichaEvaluadorController.index", evaluacion.id, "editar"); } } else { play.Logger.error("No se cumple el permiso \"guardarEvaluacion\" con ids: " + ids); forbidden(); } }