From e3174faf34e5f28a96fafb1d8f612e16a9302e07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garcia=20Nu=C3=B1ez?= Date: Mon, 30 Dec 2019 18:47:30 +0100 Subject: [PATCH] Corregido error al validar NIFs duplicados. Formateo del NIF introducido. --- .../docroot/profile/RegisterUser.xhtml | 2 +- .../docroot/profile/UpdateProfile.xhtml | 2 +- .../MyHealth/docroot/resources/js/common.js | 27 +++++++++++-------- .../managedbean/common/ValidationUtils.java | 11 +++++--- .../profile/RegisterUserMBean.java | 5 ++++ .../profile/UpdateProfileMBean.java | 5 ++++ .../managedbean/validators/NifValidator.java | 5 ++-- 7 files changed, 38 insertions(+), 19 deletions(-) diff --git a/1.sources/MyHealth/docroot/profile/RegisterUser.xhtml b/1.sources/MyHealth/docroot/profile/RegisterUser.xhtml index 81f8f9f..9c42b17 100644 --- a/1.sources/MyHealth/docroot/profile/RegisterUser.xhtml +++ b/1.sources/MyHealth/docroot/profile/RegisterUser.xhtml @@ -66,7 +66,7 @@
- + diff --git a/1.sources/MyHealth/docroot/profile/UpdateProfile.xhtml b/1.sources/MyHealth/docroot/profile/UpdateProfile.xhtml index 534b77b..6748985 100644 --- a/1.sources/MyHealth/docroot/profile/UpdateProfile.xhtml +++ b/1.sources/MyHealth/docroot/profile/UpdateProfile.xhtml @@ -41,7 +41,7 @@
- + diff --git a/1.sources/MyHealth/docroot/resources/js/common.js b/1.sources/MyHealth/docroot/resources/js/common.js index f78061d..d94d7d9 100644 --- a/1.sources/MyHealth/docroot/resources/js/common.js +++ b/1.sources/MyHealth/docroot/resources/js/common.js @@ -22,20 +22,25 @@ function startLogin() { PF('btnLogin').disable(); } -// Valida si un NIF está duplicado. +// Actualiza la interfaz tras validar si un nif está duplicado. function handleNIFResponse(xhr, status, args) { - var nif = PF('nifButton'); + if (args.formattedNIF) { + var nif = PF('nif'); + nif.jq.val(args.formattedNIF); + } + + var nifButton = PF('nifButton'); if (args.NIFisDupe == false) { - nif.jq.children(".ui-icon").removeClass("pi pi-times"); - nif.jq.removeClass('red-button'); + nifButton.jq.children(".ui-icon").removeClass("pi pi-times"); + nifButton.jq.removeClass('red-button'); - nif.jq.children(".ui-icon").addClass("pi pi-check"); - nif.jq.addClass('green-button'); - } else if (nif.jq.hasClass('red-button') == false) { - nif.jq.children(".ui-icon").removeClass("pi pi-check"); - nif.jq.removeClass('green-button'); + nifButton.jq.children(".ui-icon").addClass("pi pi-check"); + nifButton.jq.addClass('green-button'); + } else if (nifButton.jq.hasClass('red-button') == false) { + nifButton.jq.children(".ui-icon").removeClass("pi pi-check"); + nifButton.jq.removeClass('green-button'); - nif.jq.children(".ui-icon").addClass("pi pi-times"); - nif.jq.addClass('red-button'); + nifButton.jq.children(".ui-icon").addClass("pi pi-times"); + nifButton.jq.addClass('red-button'); } } \ No newline at end of file diff --git a/1.sources/MyHealth/src/managedbean/common/ValidationUtils.java b/1.sources/MyHealth/src/managedbean/common/ValidationUtils.java index e66ae0a..034c764 100644 --- a/1.sources/MyHealth/src/managedbean/common/ValidationUtils.java +++ b/1.sources/MyHealth/src/managedbean/common/ValidationUtils.java @@ -15,6 +15,9 @@ public class ValidationUtils { static final String NIF_LETTERS = "TRWAGMYFPDXBNJZSQVHLCKE"; static final String NIE_LETTERS = "XYZ"; + public static String normalizeNIF(String nif) { + return nif.toUpperCase().replace("-", "").replace(".", ""); + } /** * * @param nif NIF a validar @@ -24,7 +27,7 @@ public class ValidationUtils { if (nif == null) return false; - nif = nif.toUpperCase().replace("-", "").replace(".", ""); + nif = normalizeNIF(nif); if (nif.length() < 2 || nif.length() > 9) return false; @@ -85,9 +88,9 @@ public class ValidationUtils { // para los especialistas SpecialistDoctorTO sd = remoteSvc.findSpecialistDoctorByNif(nif); - if (sd != null && (id == null || sd.getId() != id)) + if (sd != null && (id == null || sd.getId().equals(id) == false)) nifExists = true; - } else if (id == null || fd.getId() != id) + } else if (id == null || fd.getId().equals(id) == false ) // Si se trata de un usuario diferente, entonces está repetido nifExists = true; @@ -96,7 +99,7 @@ public class ValidationUtils { PatientTO pat = remoteSvc.findPatientByNif(nif); // Si se trata de un usuario diferente, entonces está repetido - if (pat != null && (id == null || pat.getId() != id)) + if (pat != null && (id == null || pat.getId().equals(id) == false)) nifExists = true; break; } diff --git a/1.sources/MyHealth/src/managedbean/profile/RegisterUserMBean.java b/1.sources/MyHealth/src/managedbean/profile/RegisterUserMBean.java index 65cfff8..b419290 100644 --- a/1.sources/MyHealth/src/managedbean/profile/RegisterUserMBean.java +++ b/1.sources/MyHealth/src/managedbean/profile/RegisterUserMBean.java @@ -163,12 +163,15 @@ public class RegisterUserMBean extends ManagedBeanBase implements Serializable { */ public void handleNIFValueChange() { boolean isDupe = false; + this.nif = ValidationUtils.normalizeNIF(this.nif); + if (ValidationUtils.checkIfNifAlreadyRegistered(this.getRemoteManagerCommon(), this.userType, this.nif, null) == true) { isDupe = true; this.addFacesMessage("frmRegisterUser:nif", FacesMessage.SEVERITY_WARN, "NIF duplicado", "El nif indicado pertenece a otro usuario previamente registrado"); } PrimeFaces.current().ajax().addCallbackParam("NIFisDupe", isDupe); + PrimeFaces.current().ajax().addCallbackParam("formattedNIF", this.nif); } public boolean isPatient() { @@ -244,6 +247,8 @@ public class RegisterUserMBean extends ManagedBeanBase implements Serializable { */ public void addNewUser() { int error = 0; + + this.nif = ValidationUtils.normalizeNIF(this.nif); if (this.isFamilyDoctor() && this.primaryHealthCareCenter == null) { this.addFacesMessage("frmRegisterUser:selPHC", FacesMessage.SEVERITY_WARN, "Centro de atención primaria no seleccionado", diff --git a/1.sources/MyHealth/src/managedbean/profile/UpdateProfileMBean.java b/1.sources/MyHealth/src/managedbean/profile/UpdateProfileMBean.java index b5566f2..4b5f83d 100644 --- a/1.sources/MyHealth/src/managedbean/profile/UpdateProfileMBean.java +++ b/1.sources/MyHealth/src/managedbean/profile/UpdateProfileMBean.java @@ -213,12 +213,15 @@ public class UpdateProfileMBean extends ManagedBeanBase implements Serializable */ public void handleNIFValueChange() { boolean isDupe = false; + this.nif = ValidationUtils.normalizeNIF(this.nif); + if (ValidationUtils.checkIfNifAlreadyRegistered(this.getRemoteManagerCommon(), this.userType, this.nif, this.id) == true) { isDupe = true; this.addFacesMessage("frmUpdateProfile:nif", FacesMessage.SEVERITY_WARN, "NIF duplicado", "El nif indicado pertenece a otro usuario previamente registrado"); } PrimeFaces.current().ajax().addCallbackParam("NIFisDupe", isDupe); + PrimeFaces.current().ajax().addCallbackParam("formattedNIF", this.nif); } public List getFamilyDoctorList() { @@ -318,6 +321,8 @@ public class UpdateProfileMBean extends ManagedBeanBase implements Serializable // Si no hay tipo de usuario, es que algo raro ha pasado (sesión caducada?). salimos. if (this.userType == null) return; + + this.nif = ValidationUtils.normalizeNIF(this.nif); boolean changePassword = (this.oldPassword != null && this.oldPassword.equals("") == false) || (this.password != null && this.password.equals("") == false); diff --git a/1.sources/MyHealth/src/managedbean/validators/NifValidator.java b/1.sources/MyHealth/src/managedbean/validators/NifValidator.java index e0ad8dc..9b1bfd3 100644 --- a/1.sources/MyHealth/src/managedbean/validators/NifValidator.java +++ b/1.sources/MyHealth/src/managedbean/validators/NifValidator.java @@ -23,10 +23,11 @@ public class NifValidator implements Validator, ClientValidator { strValue = String.valueOf(value); if (strValue.equals("")) - throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "El NIF no es válido", "El NIF " + value + " no es válido")); + throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "El NIF no es válido", "El NIF " + strValue + " no es válido")); + strValue = ValidationUtils.normalizeNIF(strValue); if (ValidationUtils.isValid(strValue) == false) - throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "El NIF no es válido", "El NIF " + value + " no es válido")); + throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "El NIF no es válido", "El NIF " + strValue + " no es válido")); } public Map getMetadata() {