Ejemplo n.º 1
0
  public static void finalizarExclusion(Long idSolicitud, String finalizarExclusionBoton) {
    checkAuthenticity();
    if (!permisoFinalizarExclusion("editar")) {
      Messages.error("No tiene permisos suficientes para realizar la acción");
    }
    SolicitudGenerica sol = getSolicitudGenerica(idSolicitud);
    if (!Messages.hasErrors()) {
      if (sol.exclusion.codigos.size() == 0) {
        Messages.error("Debe asignar al menos un códio de exclusión a la Solicitud para excluirla");
      }
    }

    if (!Messages.hasErrors()) {
      ExclusionController.finalizarExclusionValidateRules();
    }
    if (!Messages.hasErrors()) {
      Messages.ok("La Solicitud ha pasado al estado Excluido");
      sol.estado = EstadosSolicitudEnum.excluido.name();
      sol.save();
      log.info(
          "Acción Editar de página: " + "gen/Exclusion/Exclusion.html" + " , intentada con éxito");
    } else
      log.info(
          "Acción Editar de página: "
              + "gen/Exclusion/Exclusion.html"
              + " , intentada sin éxito (Problemas de Validación)");
    ExclusionController.finalizarExclusionRender(idSolicitud);
  }
  @Util
  public static void guardarPCEValidateCopy(
      String accion,
      CEconomicosManuales dbCEconomicosManuales,
      CEconomicosManuales cEconomicosManuales) {
    CustomValidation.clearValidadas();
    if (secure.checkGrafico(
        "modificacionTrasPresentacionDeSolicitud",
        "editable",
        accion,
        (Map<String, Long>) tags.TagMapStack.top("idParams"),
        null)) {
      CustomValidation.valid("cEconomicosManuales", cEconomicosManuales);

      // Código de Copia
      // (1) Caso de modificacion (Existe y lo cambio) (2) Caso de Creacion (Lo creo desde 0)

      String idSolicitud = params.get("idSolicitud");
      SolicitudGenerica dbSolicitud = SolicitudGenerica.findById(Long.parseLong(idSolicitud));

      PeticionModificacion peticionModificacion = new PeticionModificacion();
      peticionModificacion.campoPagina = "Solicitud.ceconomicos.otros";

      Map<String, String> allSimpleTabla = params.allSimple();
      for (Map.Entry<String, String> entry : allSimpleTabla.entrySet()) {
        if (entry.getKey().startsWith("id")) {
          try {
            peticionModificacion.idSimples.put(entry.getKey(), Long.parseLong(entry.getValue()));
          } catch (Exception e) {
            // El parámetro no era un long
          }
        }
      }
      peticionModificacion.idSimples.put("idCEconomicosManuales", dbCEconomicosManuales.id);
      List<String> valoresAntiguos = new ArrayList<String>();
      List<String> valoresNuevos = new ArrayList<String>();
      Boolean hayModificaciones = false;

      // Validando el tipo.nombre
      CustomValidation.valid("cEconomicosManuales.tipo", cEconomicosManuales.tipo);
      CustomValidation.required("cEconomicosManuales.tipo.nombre", cEconomicosManuales.tipo.nombre);

      // Código de Copia del tipo.nombre
      if (((dbCEconomicosManuales.tipo.nombre != null)
              && (cEconomicosManuales.tipo.nombre.toString() != null)
              && (!dbCEconomicosManuales
                  .tipo
                  .nombre
                  .toString()
                  .equals(cEconomicosManuales.tipo.nombre.toString())))
          || ((cEconomicosManuales.tipo.nombre == null)
              && (!cEconomicosManuales.tipo.nombre.equals(dbCEconomicosManuales.tipo.nombre)))) {
        valoresAntiguos = new ArrayList<String>();
        if (dbCEconomicosManuales.tipo.nombre != null)
          valoresAntiguos.add(dbCEconomicosManuales.tipo.nombre.toString());
        valoresNuevos = new ArrayList<String>();
        valoresNuevos.add(cEconomicosManuales.tipo.nombre.toString());
        peticionModificacion.setValorModificado(
            "Solicitud.ceconomicos.otros.tipo.nombre", valoresAntiguos, valoresNuevos);
        hayModificaciones = true;
      }
      dbCEconomicosManuales.tipo.nombre = cEconomicosManuales.tipo.nombre;

      // Código de Copia del tipo.descripcion
      if (((dbCEconomicosManuales.tipo.descripcion != null)
              && (cEconomicosManuales.tipo.descripcion.toString() != null)
              && (!dbCEconomicosManuales
                  .tipo
                  .descripcion
                  .toString()
                  .equals(cEconomicosManuales.tipo.descripcion.toString())))
          || ((cEconomicosManuales.tipo.descripcion == null)
              && (!cEconomicosManuales.tipo.descripcion.equals(
                  dbCEconomicosManuales.tipo.descripcion)))) {
        valoresAntiguos = new ArrayList<String>();
        if (dbCEconomicosManuales.tipo.descripcion != null)
          valoresAntiguos.add(dbCEconomicosManuales.tipo.descripcion.toString());
        valoresNuevos = new ArrayList<String>();
        valoresNuevos.add(cEconomicosManuales.tipo.descripcion.toString());
        peticionModificacion.setValorModificado(
            "Solicitud.ceconomicos.otros.tipo.descripcion", valoresAntiguos, valoresNuevos);
        hayModificaciones = true;
      }
      dbCEconomicosManuales.tipo.descripcion = cEconomicosManuales.tipo.descripcion;

      // Código de Copia del comentarioAdministracion
      if (((dbCEconomicosManuales.comentariosAdministracion != null)
              && (cEconomicosManuales.comentariosAdministracion.toString() != null)
              && (!dbCEconomicosManuales
                  .comentariosAdministracion
                  .toString()
                  .equals(cEconomicosManuales.comentariosAdministracion.toString())))
          || ((cEconomicosManuales.comentariosAdministracion == null)
              && (!cEconomicosManuales.comentariosAdministracion.equals(
                  dbCEconomicosManuales.comentariosAdministracion)))) {
        valoresAntiguos = new ArrayList<String>();
        if (dbCEconomicosManuales.comentariosAdministracion != null)
          valoresAntiguos.add(dbCEconomicosManuales.comentariosAdministracion.toString());
        valoresNuevos = new ArrayList<String>();
        valoresNuevos.add(cEconomicosManuales.comentariosAdministracion.toString());
        peticionModificacion.setValorModificado(
            "Solicitud.ceconomicos.otros.comentariosAdministracion",
            valoresAntiguos,
            valoresNuevos);
        hayModificaciones = true;
      }
      dbCEconomicosManuales.comentariosAdministracion =
          cEconomicosManuales.comentariosAdministracion;

      // Código de Copia del comentarioSolicitante
      if (((dbCEconomicosManuales.comentariosSolicitante != null)
              && (cEconomicosManuales.comentariosSolicitante.toString() != null)
              && (!dbCEconomicosManuales
                  .comentariosSolicitante
                  .toString()
                  .equals(cEconomicosManuales.comentariosSolicitante.toString())))
          || ((cEconomicosManuales.comentariosSolicitante == null)
              && (!cEconomicosManuales.comentariosSolicitante.equals(
                  dbCEconomicosManuales.comentariosSolicitante)))) {
        valoresAntiguos = new ArrayList<String>();
        if (dbCEconomicosManuales.comentariosSolicitante != null)
          valoresAntiguos.add(dbCEconomicosManuales.comentariosSolicitante.toString());
        valoresNuevos = new ArrayList<String>();
        valoresNuevos.add(cEconomicosManuales.comentariosSolicitante.toString());
        peticionModificacion.setValorModificado(
            "Solicitud.ceconomicos.otros.comentariosSolicitante", valoresAntiguos, valoresNuevos);
        hayModificaciones = true;
      }
      dbCEconomicosManuales.comentariosSolicitante = cEconomicosManuales.comentariosSolicitante;

      // Guardo en el json los valores simples:
      // Json por todos los valores
      if (hayModificaciones) {
        // peticionModificacion.setValorModificado("Solicitud.ceconomicos.otros", valoresAntiguos,
        // valoresNuevos);
        peticionModificacion.idSimples.put("idCEconomicosManuales", dbCEconomicosManuales.id);
        Gson gson = new Gson();
        String jsonPM = gson.toJson(peticionModificacion);
        JsonPeticionModificacion jsonPeticionModificacion = new JsonPeticionModificacion();
        jsonPeticionModificacion.jsonPeticion = jsonPM;
        dbSolicitud
            .registroModificacion
            .get(dbSolicitud.registroModificacion.size() - 1)
            .jsonPeticionesModificacion
            .add(jsonPeticionModificacion);
        dbSolicitud.save();
      }

      // Copia de los valores: O2M Un json por cada valor

      // Logica de copia a BBDD
      List<String> valoresAntiguosTabla = new ArrayList<String>();
      List<String> valoresNuevosTabla = new ArrayList<String>();

      if ((dbCEconomicosManuales.valores == null)
          || (dbCEconomicosManuales.valores.size() == 0)) { // Dead code?
        // peticionModificacion.idSimples.put("idCEconomicosManuales",dbCEconomicosManuales.id);
        // //Viernes añadido
        // Guardo todos los nuevos valores
        for (int i = 0; i < cEconomicosManuales.valores.size(); i++) { // Modificando
          valoresNuevosTabla = new ArrayList<String>();
          valoresNuevosTabla.add(cEconomicosManuales.valores.get(i).valorSolicitado.toString());

          // Json por todos los valores
          PeticionModificacion peticionModificacionTabla = new PeticionModificacion();
          peticionModificacionTabla.campoPagina =
              "Solicitud.ceconomicos.otros.valores.valorSolicitado";
          peticionModificacionTabla.idSimples = peticionModificacion.idSimples;
          peticionModificacionTabla.idSimples.put(
              "idValoresCEconomicoManuales", cEconomicosManuales.valores.get(i).id);

          peticionModificacionTabla.setValorCreado(
              "Solicitud.ceconomicos.otros.valores.valorSolicitado",
              new ArrayList<String>(),
              valoresNuevosTabla); // PRUEBA
          Gson gsonTabla = new Gson();
          String jsonPMTabla = gsonTabla.toJson(peticionModificacionTabla);
          JsonPeticionModificacion jsonPeticionModificaciontabla = new JsonPeticionModificacion();
          jsonPeticionModificaciontabla.jsonPeticion = jsonPMTabla;
          dbSolicitud
              .registroModificacion
              .get(dbSolicitud.registroModificacion.size() - 1)
              .jsonPeticionesModificacion
              .add(jsonPeticionModificaciontabla);
          dbSolicitud.save();
        }
        dbCEconomicosManuales.valores = cEconomicosManuales.valores;

      } else {
        for (int i = 0; i < cEconomicosManuales.valores.size(); i++) { // Modificando
          valoresAntiguosTabla = new ArrayList<String>();
          valoresNuevosTabla = new ArrayList<String>();
          hayModificaciones = false;

          PeticionModificacion peticionModificacionTabla = new PeticionModificacion();
          peticionModificacionTabla.campoPagina =
              "Solicitud.ceconomicos.otros.valores.valorSolicitado";
          peticionModificacionTabla.idSimples = peticionModificacion.idSimples;

          if ((cEconomicosManuales.valores.get(i).valorSolicitado != null)
              && (cEconomicosManuales.valores.get(i).valorSolicitado.toString()
                  != dbCEconomicosManuales.valores.get(i).valorSolicitado.toString())) {
            valoresAntiguosTabla.add(
                dbCEconomicosManuales.valores.get(i).valorSolicitado.toString());
            dbCEconomicosManuales.valores.get(i).valorSolicitado =
                cEconomicosManuales.valores.get(i).valorSolicitado; // Logica
            valoresNuevosTabla.add(cEconomicosManuales.valores.get(i).valorSolicitado.toString());
            peticionModificacionTabla.idSimples.put(
                "idValoresCEconomico",
                dbCEconomicosManuales.valores.get(i).id); // AQUI idValoresCEconomo

            // Json
            peticionModificacionTabla.setValorModificado(
                "Solicitud.ceconomicos.otros.valores.valorSolicitado",
                valoresAntiguosTabla,
                valoresNuevosTabla); // PRUEBA
            Gson gsonTabla = new Gson();
            String jsonPMTabla = gsonTabla.toJson(peticionModificacionTabla);
            JsonPeticionModificacion jsonPeticionModificaciontabla = new JsonPeticionModificacion();
            jsonPeticionModificaciontabla.jsonPeticion = jsonPMTabla;
            dbSolicitud
                .registroModificacion
                .get(dbSolicitud.registroModificacion.size() - 1)
                .jsonPeticionesModificacion
                .add(jsonPeticionModificaciontabla);
            dbSolicitud.save();
          }
        }
      }
      // dbCEconomicosManuales.valores=cEconomicosManuales.valores;
    }
  }
  @Util
  // Este @Util es necesario porque en determinadas circunstancias crear(..) llama a editar(..).
  public static void frmRegistrar(
      Long idSolicitud, Long idRegistroModificacion, Long idRegistro, String botonRegistrar) {
    checkAuthenticity();
    if (!permisoFrmRegistrar("editar")) {
      Messages.error("No tiene permisos suficientes para realizar la acción");
    }

    SolicitudGenerica dbSolicitud =
        SolicitudPresentarModificacionFAPController.getSolicitudGenerica(idSolicitud);
    idRegistroModificacion =
        dbSolicitud.registroModificacion.get(dbSolicitud.registroModificacion.size() - 1).id;
    RegistroModificacion registroModificacion =
        RegistroModificacion.findById(idRegistroModificacion);
    Registro dbRegistro =
        SolicitudPresentarModificacionFAPController.getRegistro(idRegistroModificacion, idRegistro);

    if (!Messages.hasErrors()) {
      try {
        PresentacionModificacionFapController.invoke(
            "comprobarFechaLimitePresentacion", idSolicitud);
      } catch (Throwable e1) {
        log.error(
            "Hubo un problema al invocar los métodos comprobarFechaLimitePresentacion: "
                + e1.getMessage());
        Messages.error("Error al validar las comprobaciones de la Fecha Límite de Presentación");
      }
    }

    if (!Messages.hasErrors()) {
      try {
        PresentacionModificacionFapController.invoke("beforeRegistro", idSolicitud);
      } catch (Throwable e1) {
        log.error("Hubo un problema al invocar los métodos beforeRegistro: " + e1.getMessage());
        Messages.error("Error al validar elementos previos al Registro");
      }
    }

    if (!Messages.hasErrors()) {

      try {
        TramiteBase tramite =
            PresentacionModificacionFapController.invoke("getTramiteObject", idSolicitud);
        try {
          dbRegistro.fasesRegistro.borrador = true;
          dbRegistro.fasesRegistro.firmada = true;
          tramite.registrar();
          if (dbRegistro.fasesRegistro.clasificarAed) {
            tramite.cambiarEstadoSolicitud();
            registroModificacion.fechaRegistro = dbRegistro.informacionRegistro.fechaRegistro;
            registroModificacion.save();
          } else {
            play.Logger.error(
                "No se registro la solicitud de modificación correctamente por lo que no se cambiara el estado de la misma.");
            Messages.error("Error al intentar sólo registrar.");
          }
          if (!Messages.hasErrors()) {
            try {
              PresentacionModificacionFapController.invoke("afterRegistro", idSolicitud);
            } catch (Throwable e1) {
              log.error(
                  "Hubo un problema al invocar los métodos afterRegistro: " + e1.getMessage());
              Messages.error("Error al validar elementos posteriores al registro");
            }
          }
        } catch (RegistroServiceException e) {
          log.error(
              "Error al intentar registrar en la presentacion en frmRegistrar: " + e.getMessage());
          Messages.error("Error al intentar sólo registrar");
        }
      } catch (Throwable e1) {
        log.error(
            "Error al invocar al TramiteBase en frmRegistrar de SolicitudPresentarModificacionFAPController: "
                + e1.getMessage());
        Messages.error("Error al intentar sólo registrar");
      }
    }

    if (!Messages.hasErrors()) {
      SolicitudPresentarModificacionFAPController.frmRegistrarValidateRules();
    }
    if (!Messages.hasErrors()) {
      dbSolicitud.save();
      Messages.ok("Solicitud Registrada correctamente");
      log.info(
          "Acción Editar de página: "
              + "gen/SolicitudPresentarModificacionFAP/SolicitudPresentarModificacionFAP.html"
              + " , intentada con éxito");
      redirect("PresentarFAPController.index", "editar", idSolicitud, dbSolicitud.registro.id);
    } else
      log.info(
          "Acción Editar de página: "
              + "gen/SolicitudPresentarModificacionFAP/SolicitudPresentarModificacionFAP.html"
              + " , intentada sin éxito (Problemas de Validación)");
    SolicitudPresentarModificacionFAPController.frmRegistrarRender(
        idSolicitud, idRegistroModificacion, idRegistro);
  }
  public static void CreandoEnModificacionSolicitudes(
      String accion,
      CEconomicosManuales dbCEconomicosManuales,
      CEconomicosManuales cEconomicosManuales) {

    String idSolicitud = params.get("idSolicitud");
    SolicitudGenerica dbSolicitud = SolicitudGenerica.findById(Long.parseLong(idSolicitud));

    PeticionModificacion peticionModificacion = new PeticionModificacion();
    peticionModificacion.campoPagina = "Solicitud.ceconomicos.otros"; // OJO

    Map<String, String> allSimpleTabla = params.allSimple();
    for (Map.Entry<String, String> entry : allSimpleTabla.entrySet()) {
      if (entry.getKey().startsWith("id")) {
        try {
          peticionModificacion.idSimples.put(entry.getKey(), Long.parseLong(entry.getValue()));
        } catch (Exception e) {
          // El parámetro no era un long
        }
      }
    }
    List<String> valoresNuevos = new ArrayList<String>();

    if (cEconomicosManuales.tipo.nombre != null) {
      valoresNuevos = new ArrayList<String>();
      valoresNuevos.add(cEconomicosManuales.tipo.nombre.toString());
      peticionModificacion.setValorCreado(
          "Solicitud.ceconomicos.otros.tipo.nombre", new ArrayList<String>(), valoresNuevos);
      dbCEconomicosManuales.tipo.nombre = cEconomicosManuales.tipo.nombre;
    }

    if (cEconomicosManuales.tipo.descripcion != null) {
      valoresNuevos = new ArrayList<String>();
      valoresNuevos.add(cEconomicosManuales.tipo.descripcion.toString());
      peticionModificacion.setValorCreado(
          "Solicitud.ceconomicos.otros.tipo.descripcion", new ArrayList<String>(), valoresNuevos);
      dbCEconomicosManuales.tipo.descripcion = cEconomicosManuales.tipo.descripcion;
    }

    if (cEconomicosManuales.comentariosAdministracion != null) {
      valoresNuevos = new ArrayList<String>();
      valoresNuevos.add(cEconomicosManuales.tipo.comentariosAdministracion.toString());
      peticionModificacion.setValorCreado(
          "Solicitud.ceconomicos.otros.comentariosAdministracion",
          new ArrayList<String>(),
          valoresNuevos);
      dbCEconomicosManuales.comentariosAdministracion =
          cEconomicosManuales.comentariosAdministracion;
    }

    if (cEconomicosManuales.comentariosSolicitante != null) {
      valoresNuevos = new ArrayList<String>();
      valoresNuevos.add(cEconomicosManuales.tipo.comentariosSolicitante.toString());
      peticionModificacion.setValorCreado(
          "Solicitud.ceconomicos.otros.comentariosSolicitante",
          new ArrayList<String>(),
          valoresNuevos);
      dbCEconomicosManuales.comentariosSolicitante = cEconomicosManuales.comentariosSolicitante;
    }

    peticionModificacion.idSimples.put("idCEconomicosManuales", dbCEconomicosManuales.id);
    Gson gson = new Gson();
    String jsonPM = gson.toJson(peticionModificacion);
    JsonPeticionModificacion jsonPeticionModificacion = new JsonPeticionModificacion();
    jsonPeticionModificacion.jsonPeticion = jsonPM;
    dbSolicitud
        .registroModificacion
        .get(dbSolicitud.registroModificacion.size() - 1)
        .jsonPeticionesModificacion
        .add(jsonPeticionModificacion);
    dbSolicitud.save();
  }