PageRenderTime 52ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 0ms

/fap/app/controllers/SolicitudPresentarFAPController.java

https://github.com/FAP-Team/Fap-Module
Java | 479 lines | 412 code | 61 blank | 6 comment | 58 complexity | de303753c7748283c74cb2e7489384a2 MD5 | raw file
  1. package controllers;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import com.sun.xml.internal.fastinfoset.sax.Properties;
  7. import platino.FirmaUtils;
  8. import play.mvc.Util;
  9. import properties.FapProperties;
  10. import services.RegistroServiceException;
  11. import tramitacion.TramiteBase;
  12. import messages.Messages;
  13. import models.Agente;
  14. import models.Documento;
  15. import models.Firmante;
  16. import models.Registro;
  17. import models.SolicitudGenerica;
  18. import models.TableKeyValue;
  19. import controllers.fap.AgenteController;
  20. import controllers.fap.PresentacionFapController;
  21. import controllers.gen.SolicitudPresentarFAPControllerGen;
  22. import emails.Mails;
  23. public class SolicitudPresentarFAPController extends SolicitudPresentarFAPControllerGen {
  24. public static void index(String accion, Long idSolicitud, Long idRegistro) {
  25. if (accion == null)
  26. accion = getAccion();
  27. if (!permiso(accion)) {
  28. Messages.fatal("No tiene suficientes privilegios para acceder a esta solicitud");
  29. renderTemplate("fap/Presentacion/SolicitudPresentarFAP.html");
  30. }
  31. SolicitudGenerica solicitud = SolicitudPresentarFAPController.getSolicitudGenerica(idSolicitud);
  32. Registro registro = null;
  33. if ("crear".equals(accion))
  34. registro = SolicitudPresentarFAPController.getRegistro();
  35. else if (!"borrado".equals(accion))
  36. registro = SolicitudPresentarFAPController.getRegistro(idSolicitud, idRegistro);
  37. log.info("Visitando página: " + "fap/Presentacion/SolicitudPresentarFAP.html");
  38. renderTemplate("fap/Presentacion/SolicitudPresentarFAP.html", accion, idSolicitud, idRegistro, solicitud, registro);
  39. }
  40. @Util
  41. // Este @Util es necesario porque en determinadas circunstancias crear(..) llama a editar(..).
  42. public static void formFirmaFH(Long idSolicitud, Long idRegistro, String firma, String firmarRegistrarFH) {
  43. checkAuthenticity();
  44. if (!permisoFormFirmaFH("editar")) {
  45. Messages.error("No tiene permisos suficientes para realizar la acción");
  46. }
  47. if (!Messages.hasErrors()) {
  48. try {
  49. PresentacionFapController.invoke(PresentacionFapController.class, "comprobarFechaLimitePresentacion", idSolicitud);
  50. } catch (Throwable e1) {
  51. log.error("Hubo un problema al invocar los métodos comprobarFechaLimitePresentacion: "+e1.getMessage());
  52. Messages.error("Error al validar las comprobaciones de la Fecha Límite de Presentación");
  53. }
  54. }
  55. if (!Messages.hasErrors()) {
  56. try {
  57. PresentacionFapController.invoke(PresentacionFapController.class, "beforeFirma", idSolicitud);
  58. } catch (Throwable e1) {
  59. log.error("Hubo un problema al invocar los métodos beforeFirma: "+e1.getMessage());
  60. Messages.error("Error al validar elementos previos a la firma");
  61. }
  62. }
  63. if (!Messages.hasErrors()) {
  64. SolicitudGenerica dbSolicitud = SolicitudPresentarFAPController.getSolicitudGenerica(idSolicitud);
  65. try {
  66. TramiteBase tramite = PresentacionFapController.invoke(PresentacionFapController.class, "getTramiteObject", idSolicitud);
  67. SolicitudPresentarFAPController.firmarRegistrarFHFormFirmaFH(idSolicitud, idRegistro, firma);
  68. if (!Messages.hasErrors()) {
  69. try {
  70. PresentacionFapController.invoke(PresentacionFapController.class, "afterFirma", idSolicitud);
  71. } catch (Throwable e1) {
  72. log.error("Hubo un problema al invocar los métodos afterFirma: "+e1.getMessage());
  73. Messages.error("Error al validar elementos posteriores a la firma");
  74. }
  75. }
  76. if (!Messages.hasErrors()) {
  77. try {
  78. PresentacionFapController.invoke(PresentacionFapController.class, "beforeRegistro", idSolicitud);
  79. } catch (Throwable e1) {
  80. log.error("Hubo un problema al invocar los métodos beforeRegistro: "+e1.getMessage());
  81. Messages.error("Error al validar elementos previos al registro");
  82. }
  83. }
  84. if (!Messages.hasErrors()) {
  85. try {
  86. tramite.registrar();
  87. if (dbSolicitud.registro.fasesRegistro.clasificarAed)
  88. tramite.cambiarEstadoSolicitud();
  89. else{
  90. play.Logger.error("No se registro la solicitud correctamente por lo que no se cambiara el estado de la misma.");
  91. Messages.error("Error al intentar sólo registrar.");
  92. }
  93. if (!Messages.hasErrors()) {
  94. try {
  95. PresentacionFapController.invoke(PresentacionFapController.class, "afterRegistro", idSolicitud);
  96. } catch (Throwable e1) {
  97. log.error("Hubo un problema al invocar los métodos afterRegistro: "+e1.getMessage());
  98. Messages.error("Error al validar elementos posteriores al registro");
  99. }
  100. }
  101. } catch (Exception e) {
  102. log.error("Hubo un error al registrar la solicitud: "+ e.getMessage());
  103. Messages.error("No se pudo registrar la solicitud");
  104. }
  105. }
  106. } catch (Throwable e1) {
  107. log.error("Hubo un problema al invocar el metodo que devuelve la clase TramiteBase en la firma: "+e1.getMessage());
  108. Messages.error("Error al intentar firmar antes de registrar");
  109. }
  110. }
  111. if (!Messages.hasErrors()) {
  112. SolicitudPresentarFAPController.formFirmaFHValidateRules(firma);
  113. }
  114. if (!Messages.hasErrors()) {
  115. Messages.ok("Solicitud Firmada y Registrada correctamente");
  116. log.info("Acción Editar de página: " + "gen/SolicitudPresentarFAP/SolicitudPresentarFAP.html" + " , intentada con éxito");
  117. redirect("PresentarFAPController.index", "editar", idSolicitud, idRegistro);
  118. } else
  119. log.info("Acción Editar de página: " + "gen/SolicitudPresentarFAP/SolicitudPresentarFAP.html" + " , intentada sin éxito (Problemas de Validación)");
  120. SolicitudPresentarFAPController.formFirmaFHRender(idSolicitud, idRegistro);
  121. }
  122. @Util
  123. public static void firmarRegistrarFHFormFirmaFH(Long idSolicitud, Long idRegistro, String firma) {
  124. SolicitudGenerica solicitud = SolicitudPresentarFAPController.getSolicitudGenerica(idSolicitud);
  125. play.Logger.info("Metodo: firmarRegistrarFHFormFirmaFH");
  126. Agente agente = AgenteController.getAgente();
  127. if (agente.getFuncionario()){
  128. List<Firmante> firmantes = new ArrayList<Firmante>();
  129. firmantes.add(new Firmante(agente));
  130. FirmaUtils.firmar(solicitud.registro.oficial, firmantes, firma, null);
  131. } else {
  132. //ERROR
  133. Messages.error("No tiene permisos suficientes para realizar la acción");
  134. }
  135. if (!Messages.hasErrors()) {
  136. solicitud.registro.fasesRegistro.firmada = true;
  137. solicitud.save();
  138. }
  139. }
  140. @Util
  141. public static void formFirmaFHRender(Long idSolicitud, Long idRegistro) {
  142. Messages.keep();
  143. redirect("SolicitudPresentarFAPController.index", "editar", idSolicitud, idRegistro);
  144. }
  145. public static void tablatablaFirmantesHecho(Long idSolicitud) {
  146. java.util.List<Firmante> rows = Firmante
  147. .find("select firmante from SolicitudGenerica solicitud join solicitud.registro.firmantes.todos firmante where solicitud.id=? and firmante.tipo=? and firmante.fechaFirma is not null",
  148. idSolicitud, "representante").fetch();
  149. Map<String, Long> ids = (Map<String, Long>) tags.TagMapStack.top("idParams");
  150. List<Firmante> rowsFiltered = rows; //Tabla sin permisos, no filtra
  151. tables.TableRenderResponse<Firmante> response = new tables.TableRenderResponse<Firmante>(rowsFiltered, false, false, false, "", "", "", getAccion(), ids);
  152. renderJSON(response.toJSON("idvalor", "nombre", "fechaFirma", "id"));
  153. }
  154. public static void tablatablaFirmantesEspera(Long idSolicitud) {
  155. java.util.List<Firmante> rows = Firmante
  156. .find("select firmante from SolicitudGenerica solicitud join solicitud.registro.firmantes.todos firmante where solicitud.id=? and firmante.tipo=? and firmante.fechaFirma is null", idSolicitud, "representante").fetch();
  157. Map<String, Long> ids = (Map<String, Long>) tags.TagMapStack.top("idParams");
  158. List<Firmante> rowsFiltered = rows; //Tabla sin permisos, no filtra
  159. tables.TableRenderResponse<Firmante> response = new tables.TableRenderResponse<Firmante>(rowsFiltered, false, false, false, "", "", "", getAccion(), ids);
  160. renderJSON(response.toJSON("idvalor", "nombre", "id"));
  161. }
  162. @Util
  163. // Este @Util es necesario porque en determinadas circunstancias crear(..) llama a editar(..).
  164. public static void formFirmaPF(Long idSolicitud, Long idRegistro, String firma, String firmarRegistrarNif) {
  165. checkAuthenticity();
  166. if (!permisoFormFirmaPF("editar")) {
  167. Messages.error("No tiene permisos suficientes para realizar la acción");
  168. }
  169. if (!Messages.hasErrors()) {
  170. try {
  171. PresentacionFapController.invoke(PresentacionFapController.class, "comprobarFechaLimitePresentacion", idSolicitud);
  172. } catch (Throwable e1) {
  173. log.error("Hubo un problema al invocar los métodos comprobarFechaLimitePresentacion: "+e1.getMessage());
  174. Messages.error("Error al validar las comprobaciones de la Fecha Límite de Presentación");
  175. }
  176. }
  177. if (!Messages.hasErrors()) {
  178. try {
  179. PresentacionFapController.invoke(PresentacionFapController.class, "beforeFirma", idSolicitud);
  180. } catch (Throwable e1) {
  181. log.error("Hubo un problema al invocar los métodos beforeFirma: "+e1.getMessage());
  182. Messages.error("Error al validar elementos previos a la firma");
  183. }
  184. }
  185. SolicitudGenerica dbSolicitud = SolicitudPresentarFAPController.getSolicitudGenerica(idSolicitud);
  186. if (!Messages.hasErrors()) {
  187. try {
  188. TramiteBase tramite = PresentacionFapController.invoke(PresentacionFapController.class, "getTramiteObject", idSolicitud);
  189. tramite.firmar(firma);
  190. if (!Messages.hasErrors()) {
  191. try {
  192. PresentacionFapController.invoke(PresentacionFapController.class, "afterFirma", idSolicitud);
  193. } catch (Throwable e1) {
  194. log.error("Hubo un problema al invocar los métodos afterFirma: "+e1.getMessage());
  195. Messages.error("Error al validar elementos posteriores a la firma");
  196. }
  197. }
  198. if (!Messages.hasErrors()) {
  199. try {
  200. PresentacionFapController.invoke(PresentacionFapController.class,"beforeRegistro", idSolicitud);
  201. } catch (Throwable e1) {
  202. log.error("Hubo un problema al invocar los métodos beforeRegistro: "+e1.getMessage());
  203. Messages.error("Error al validar elementos previos al Registro");
  204. }
  205. }
  206. if (!Messages.hasErrors()) {
  207. if(dbSolicitud.registro.fasesRegistro.firmada){
  208. try {
  209. tramite.registrar();
  210. if (dbSolicitud.registro.fasesRegistro.clasificarAed)
  211. tramite.cambiarEstadoSolicitud();
  212. else{
  213. play.Logger.error("No se registro la solicitud correctamente por lo que no se cambiara el estado de la misma.");
  214. Messages.error("Error al intentar sólo registrar.");
  215. }
  216. if (!Messages.hasErrors()) {
  217. try {
  218. PresentacionFapController.invoke(PresentacionFapController.class, "afterRegistro", idSolicitud);
  219. } catch (Throwable e1) {
  220. log.error("Hubo un problema al invocar los métodos afterRegistro: "+e1.getMessage());
  221. Messages.error("Error al validar elementos posteriores al registro");
  222. }
  223. }
  224. } catch (Exception e) {
  225. log.error("Hubo un error al registrar la solicitud: "+ e.getMessage());
  226. Messages.error("No se pudo registrar la solicitud");
  227. }
  228. }
  229. }
  230. } catch (Throwable e1) {
  231. log.error("Hubo un problema al invocar el metodo que devuelve la clase TramiteBase en la firma: "+e1.getMessage());
  232. Messages.error("Error al intentar firmar antes de registrar");
  233. }
  234. }
  235. if (!Messages.hasErrors()) {
  236. SolicitudPresentarFAPController.formFirmaPFValidateRules(firma);
  237. }
  238. if (!Messages.hasErrors() && (!dbSolicitud.registro.fasesRegistro.registro)) {
  239. redirect("SolicitudPresentarFAPController.index", "editar", idSolicitud, idRegistro);
  240. }
  241. if (!Messages.hasErrors() && (dbSolicitud.registro.fasesRegistro.registro)) {
  242. Messages.ok("Solicitud registrada correctamente");
  243. log.info("Acción Editar de página: " + "fap/Presentacion/SolicitudPresentarFAP.html" + " , intentada con éxito");
  244. redirect("PresentarFAPController.index", "editar", idSolicitud, idRegistro);
  245. } else
  246. log.info("Acción Editar de página: " + "fap/Presentacion/SolicitudPresentarFAP.html" + " , intentada sin éxito (Problemas de Validación)");
  247. SolicitudPresentarFAPController.formFirmaPFRender(idSolicitud, idRegistro);
  248. }
  249. @Util
  250. public static void formFirmaPFRender(Long idSolicitud, Long idRegistro) {
  251. Messages.keep();
  252. redirect("SolicitudPresentarFAPController.index", "editar", idSolicitud, idRegistro);
  253. }
  254. @Util
  255. // Este @Util es necesario porque en determinadas circunstancias crear(..) llama a editar(..).
  256. public static void formFirmaRepresentante(Long idSolicitud, Long idRegistro, String firma, String firmarRepresentante) {
  257. checkAuthenticity();
  258. if (!permisoFormFirmaRepresentante("editar")) {
  259. Messages.error("No tiene permisos suficientes para realizar la acción");
  260. }
  261. if (!Messages.hasErrors()) {
  262. try {
  263. PresentacionFapController.invoke(PresentacionFapController.class, "comprobarFechaLimitePresentacion", idSolicitud);
  264. } catch (Throwable e1) {
  265. log.error("Hubo un problema al invocar los métodos comprobarFechaLimitePresentacion: "+e1.getMessage());
  266. Messages.error("Error al validar las comprobaciones de la Fecha Límite de Presentación");
  267. }
  268. }
  269. if (!Messages.hasErrors()) {
  270. try {
  271. PresentacionFapController.invoke(PresentacionFapController.class, "beforeFirma", idSolicitud);
  272. } catch (Throwable e1) {
  273. log.error("Hubo un problema al invocar los métodos beforeFirma, en la firma con representantes: "+e1.getMessage());
  274. Messages.error("Error al validar elementos previos a la firma de representante");
  275. }
  276. }
  277. if (!Messages.hasErrors()) {
  278. try {
  279. TramiteBase tramite = PresentacionFapController.invoke(PresentacionFapController.class, "getTramiteObject", idSolicitud);
  280. tramite.firmar(firma);
  281. } catch (Throwable e1) {
  282. log.error("Hubo un problema al firmar con representante en presentacion: "+e1.getMessage());
  283. Messages.error("Error al intentar firmar el representante");
  284. }
  285. }
  286. if (!Messages.hasErrors()) {
  287. try {
  288. PresentacionFapController.invoke(PresentacionFapController.class, "afterFirma", idSolicitud);
  289. } catch (Throwable e1) {
  290. log.error("Hubo un problema al invocar los métodos afterFirma, en la firma con representantes: "+e1.getMessage());
  291. Messages.error("Error al validar elementos posteriores a la firma de representante");
  292. }
  293. }
  294. if (!Messages.hasErrors()) {
  295. SolicitudPresentarFAPController.formFirmaRepresentanteValidateRules(firma);
  296. }
  297. if (!Messages.hasErrors()) {
  298. log.info("Acción Editar de página: " + "fap/Presentacion/SolicitudPresentarFAP.html" + " , intentada con éxito");
  299. Messages.ok("Solicitud Firmada correctamente.");
  300. } else
  301. log.info("Acción Editar de página: " + "fap/Presentacion/SolicitudPresentarFAP.html" + " , intentada sin éxito (Problemas de Validación)");
  302. SolicitudPresentarFAPController.formFirmaRepresentanteRender(idSolicitud, idRegistro);
  303. }
  304. @Util
  305. // Este @Util es necesario porque en determinadas circunstancias crear(..) llama a editar(..).
  306. public static void frmRegistrar(Long idSolicitud, Long idRegistro, String botonRegistrar) {
  307. checkAuthenticity();
  308. if (!permisoFrmRegistrar("editar")) {
  309. Messages.error("No tiene permisos suficientes para realizar la acción");
  310. }
  311. SolicitudGenerica dbSolicitud = SolicitudPresentarFAPController.getSolicitudGenerica(idSolicitud);
  312. if (!Messages.hasErrors()) {
  313. try {
  314. PresentacionFapController.invoke(PresentacionFapController.class, "comprobarFechaLimitePresentacion", idSolicitud);
  315. } catch (Throwable e1) {
  316. log.error("Hubo un problema al invocar los métodos comprobarFechaLimitePresentacion: "+e1.getMessage());
  317. Messages.error("Error al validar las comprobaciones de la Fecha Límite de Presentación");
  318. }
  319. }
  320. if (!Messages.hasErrors()) {
  321. try {
  322. PresentacionFapController.invoke(PresentacionFapController.class, "beforeRegistro", idSolicitud);
  323. } catch (Throwable e1) {
  324. log.error("Hubo un problema al invocar los métodos beforeRegistro: "+e1.getMessage());
  325. Messages.error("Error al validar elementos previos al Registro");
  326. }
  327. }
  328. if (!Messages.hasErrors()) {
  329. try {
  330. TramiteBase tramite = PresentacionFapController.invoke(PresentacionFapController.class, "getTramiteObject", idSolicitud);
  331. try {
  332. dbSolicitud.registro.fasesRegistro.borrador = true;
  333. dbSolicitud.registro.fasesRegistro.firmada = true;
  334. tramite.registrar();
  335. if (dbSolicitud.registro.fasesRegistro.clasificarAed)
  336. tramite.cambiarEstadoSolicitud();
  337. else{
  338. play.Logger.error("No se registro la solicitud correctamente por lo que no se cambiara el estado de la misma.");
  339. Messages.error("Error al intentar sólo registrar.");
  340. }
  341. if (!Messages.hasErrors()) {
  342. try {
  343. PresentacionFapController.invoke(PresentacionFapController.class, "afterRegistro", idSolicitud);
  344. } catch (Throwable e1) {
  345. log.error("Hubo un problema al invocar los métodos afterRegistro: "+e1.getMessage());
  346. Messages.error("Error al validar elementos posteriores al registro");
  347. }
  348. }
  349. } catch (RegistroServiceException e) {
  350. log.error("Error al intentar registrar en la presentacion en frmRegistrar: "+e.getMessage());
  351. Messages.error("Error al intentar sólo registrar");
  352. }
  353. } catch (Throwable e1) {
  354. log.error("Error al invocar al TramiteBase en frmRegistrar de SolicitudPresentarFAPController: "+e1.getMessage());
  355. Messages.error("Error al intentar sólo registrar");
  356. }
  357. }
  358. if (!Messages.hasErrors()) {
  359. dbSolicitud.save();
  360. SolicitudPresentarFAPController.frmRegistrarValidateRules();
  361. }
  362. if (!Messages.hasErrors()) {
  363. log.info("Acción Editar de página: " + "fap/Presentacion/SolicitudPresentarFAP.html" + " , intentada con éxito");
  364. Messages.ok("Solicitud Registrada correctamente");
  365. redirect("PresentarFAPController.index", "editar", idSolicitud, idRegistro);
  366. } else
  367. log.info("Acción Editar de página: " + "fap/Presentacion/SolicitudPresentarFAP.html" + " , intentada sin éxito (Problemas de Validación)");
  368. SolicitudPresentarFAPController.frmRegistrarRender(idSolicitud, idRegistro);
  369. }
  370. @Util
  371. // Este @Util es necesario porque en determinadas circunstancias crear(..) llama a editar(..).
  372. public static void formHabilitarFH(Long idSolicitud, Long idRegistro, String btnHabilitarFH) {
  373. checkAuthenticity();
  374. if (!permisoFormHabilitarFH("editar")) {
  375. Messages.error("No tiene permisos suficientes para realizar la acción");
  376. }
  377. if (!Messages.hasErrors()) {
  378. try {
  379. PresentacionFapController.invoke(PresentacionFapController.class,"comprobarFechaLimitePresentacion", idSolicitud);
  380. } catch (Throwable e1) {
  381. log.error("Hubo un problema al invocar los métodos comprobarFechaLimitePresentacion: "+e1.getMessage());
  382. Messages.error("Error al validar las comprobaciones de la Fecha Límite de Presentación");
  383. }
  384. }
  385. if (!Messages.hasErrors()) {
  386. try {
  387. TramiteBase tramite = PresentacionFapController.invoke(PresentacionFapController.class, "getTramiteObject", idSolicitud);
  388. boolean encontrado = false;
  389. for (Documento doc: tramite.getDocumentos()){
  390. if (doc.tipo.equals(FapProperties.get("fap.firmaYRegistro.funcionarioHabilitado.tipoDocumento"))){
  391. encontrado = true;
  392. break;
  393. }
  394. }
  395. if (!encontrado){
  396. log.error("El documento que autoriza la firma de un funcionario habilitado no ha sido subido o su tipo no es correcto. Uri del tipo correcto: "+FapProperties.get("fap.firmaYRegistro.funcionarioHabilitado.tipoDocumento"));
  397. Messages.error("El documento que autoriza la firma de un funcionario habilitado no ha sido subido o su tipo no es correcto.");
  398. Messages.error("Asegurese de haber subido el documento pertinente con tipo: "+TableKeyValue.getValue("tiposDocumentos", FapProperties.get("fap.firmaYRegistro.funcionarioHabilitado.tipoDocumento")));
  399. }
  400. } catch (Throwable e) {
  401. log.error("Hubo un problema al intentar verificar la presencia del documento de autorizacion funcionario habilitado: "+e.getMessage());
  402. Messages.error("No se pudo habilitar la firma de un Funcionario");
  403. }
  404. }
  405. if (!Messages.hasErrors()) {
  406. SolicitudPresentarFAPController.formHabilitarFHValidateRules();
  407. }
  408. if (!Messages.hasErrors()) {
  409. Registro registro = SolicitudPresentarFAPController.getRegistro(idSolicitud, idRegistro);
  410. registro.habilitaFuncionario=true;
  411. registro.save();
  412. Messages.ok("Se ha habilitado a un funcionario correctamente.");
  413. log.info("Acción Editar de página: " + "fap/Presentacion/SolicitudPresentarFAP.html" + " , intentada con éxito");
  414. } else
  415. log.info("Acción Editar de página: " + "fap/Presentacion/olicitudPresentarFAP.html" + " , intentada sin éxito (Problemas de Validación)");
  416. SolicitudPresentarFAPController.formHabilitarFHRender(idSolicitud, idRegistro);
  417. }
  418. }