diff --git a/1.sources/MyHealth/docroot/profile/ChangePrimaryHealthCareCenter.xhtml b/1.sources/MyHealth/docroot/profile/ChangePrimaryHealthCareCenter.xhtml index 138dbaf..ecd68a5 100644 --- a/1.sources/MyHealth/docroot/profile/ChangePrimaryHealthCareCenter.xhtml +++ b/1.sources/MyHealth/docroot/profile/ChangePrimaryHealthCareCenter.xhtml @@ -6,31 +6,67 @@ - + + +
+
+ +
+
+ Su perfil de usuario no permite que pueda cambiar su Centro de Atención Primaria asignado.
Si cree que no debería estar viendo esta página y que se trata de un + error, por favor, contacte con el soporte de la aplicación para obtener asistencia tecnica. +
+
+
+ +
+
+
+
+
+
+ - +
-
- + +
+
- +
-
- +
+ +
+
+
+ + + + + + +
+
+ +
+
-
+
- +
-
+
+ diff --git a/1.sources/MyHealth/docroot/profile/UpdateProfile.xhtml b/1.sources/MyHealth/docroot/profile/UpdateProfile.xhtml index 8d3ed5e..f91349c 100644 --- a/1.sources/MyHealth/docroot/profile/UpdateProfile.xhtml +++ b/1.sources/MyHealth/docroot/profile/UpdateProfile.xhtml @@ -6,21 +6,6 @@ - - function handleRequest(xhr, status, args) { - if(args.specs) { - $('#panCentros').slideUp(); - $('#panEspecialidades').slideDown(); - } - else if (args.caps) { - $('#panEspecialidades').slideUp(); - $('#panCentros').slideDown(); - } else { - $('#panCentros').slideUp(); - $('#panEspecialidades').slideUp(); - } - } - @@ -42,7 +27,6 @@
-
@@ -161,7 +145,7 @@
- +
diff --git a/1.sources/MyHealth/src/TO/MedicalSpecialtyTO.java b/1.sources/MyHealth/src/TO/MedicalSpecialtyTO.java index bb60b57..1780adf 100644 --- a/1.sources/MyHealth/src/TO/MedicalSpecialtyTO.java +++ b/1.sources/MyHealth/src/TO/MedicalSpecialtyTO.java @@ -42,6 +42,10 @@ public class MedicalSpecialtyTO implements Serializable { this.description = description; } + public String getDisplayDescription() { + return String.format("[%s] %s", this.name, this.description); + } + @Override public String toString() { return String.format("%s[name=%s]", getClass().getSimpleName(), getName()); diff --git a/1.sources/MyHealth/src/TO/PrimaryHealthCareCenterTO.java b/1.sources/MyHealth/src/TO/PrimaryHealthCareCenterTO.java index 5ababc8..a4b88fa 100644 --- a/1.sources/MyHealth/src/TO/PrimaryHealthCareCenterTO.java +++ b/1.sources/MyHealth/src/TO/PrimaryHealthCareCenterTO.java @@ -42,9 +42,13 @@ public class PrimaryHealthCareCenterTO implements Serializable { public void setLocation(String description) { this.location = description; } + + public String getDisplayDescription() { + return String.format("[%s] %s", this.name, this.location); + } @Override public String toString() { - return String.format("%s[name=%s]", getClass().getSimpleName(), getName()); + return String.format("%s[name=%s]", getClass().getSimpleName(), this.getName()); } } diff --git a/1.sources/MyHealth/src/common/UserType.java b/1.sources/MyHealth/src/common/UserType.java index 39756ea..3a49b5a 100644 --- a/1.sources/MyHealth/src/common/UserType.java +++ b/1.sources/MyHealth/src/common/UserType.java @@ -4,7 +4,7 @@ public enum UserType { PATIENT("Paciente"), FAMILY_DOCTOR("Médico de familia"), SPECIALIST_DOCTOR("Médico especialista"), - ADMINISTRADOR("Administrador"); + ADMINISTRATOR("Administrador"); private String userTypename; diff --git a/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeBean.java b/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeBean.java index ab04eb7..fd35ab6 100644 --- a/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeBean.java +++ b/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeBean.java @@ -94,7 +94,7 @@ public class SystemAdminFacadeBean implements SystemAdminFacadeRemote { // First try to login as Admin AdministratorJPA adm = entman.find(AdministratorJPA.class, id); if (adm != null) { - usr = new LoggedUserTO(adm.getEmail(), adm.getEmail(), adm.getPassword(), UserType.ADMINISTRADOR); + usr = new LoggedUserTO(adm.getEmail(), adm.getEmail(), adm.getPassword(), UserType.ADMINISTRATOR); } else { try { int iId = Integer.parseInt(id); diff --git a/1.sources/MyHealth/src/managedbean/common/MenuMBean.java b/1.sources/MyHealth/src/managedbean/common/MenuMBean.java index a4b0bb3..c51f876 100644 --- a/1.sources/MyHealth/src/managedbean/common/MenuMBean.java +++ b/1.sources/MyHealth/src/managedbean/common/MenuMBean.java @@ -41,7 +41,7 @@ public class MenuMBean implements Serializable { tipoUsuario = SessionUtils.getUserType(); // Administracion Sistema - if (tipoUsuario == UserType.ADMINISTRADOR) { + if (tipoUsuario == UserType.ADMINISTRATOR) { subMenu = new DefaultSubMenu("Administración del sistema", "pi pi-cog"); subMenu.addElement(createMenuItem("Gestionar especialidades", "pi pi-calendar", "/systemAdmin/ManageSpecialties", null)); @@ -55,12 +55,12 @@ public class MenuMBean implements Serializable { } // Visitas - if (tipoUsuario == UserType.PATIENT || tipoUsuario == UserType.ADMINISTRADOR || tipoUsuario == UserType.FAMILY_DOCTOR) { + if (tipoUsuario == UserType.PATIENT || tipoUsuario == UserType.ADMINISTRATOR || tipoUsuario == UserType.FAMILY_DOCTOR) { subMenu = new DefaultSubMenu("Visitas", "pi pi-calendar"); if (tipoUsuario == UserType.PATIENT) subMenu.addElement(createMenuItem("Solicitar nueva", "pi pi-calendar", "/visit/VisitView", null)); - if (tipoUsuario == UserType.PATIENT || tipoUsuario == UserType.ADMINISTRADOR) + if (tipoUsuario == UserType.PATIENT || tipoUsuario == UserType.ADMINISTRATOR) subMenu.addElement(createMenuItem("Modificar fecha/hora", "pi pi-calendar", "/visit/VisitView", null)); if (tipoUsuario == UserType.PATIENT) subMenu.addElement(createMenuItem("Anular visita", "pi pi-calendar", "/visit/VisitView", null)); @@ -121,7 +121,7 @@ public class MenuMBean implements Serializable { model.addElement(subMenu); } else { - if (tipoUsuario != UserType.ADMINISTRADOR) { + if (tipoUsuario != UserType.ADMINISTRATOR) { subMenu.addElement(createMenuItem("Modificar datos personales", "pi pi-user-edit", "/profile/UpdateProfile", null)); subMenu.addElement(new DefaultSeparator()); diff --git a/1.sources/MyHealth/src/managedbean/common/homeMBean.java b/1.sources/MyHealth/src/managedbean/common/homeMBean.java index 7ddc665..4d1dcdc 100644 --- a/1.sources/MyHealth/src/managedbean/common/homeMBean.java +++ b/1.sources/MyHealth/src/managedbean/common/homeMBean.java @@ -5,11 +5,10 @@ import java.util.List; import javax.annotation.PostConstruct; import javax.enterprise.context.RequestScoped; -import javax.faces.application.FacesMessage; -import javax.faces.context.FacesContext; -import javax.inject.Inject; import javax.inject.Named; +import common.UserType; + /*** * * @author Marcos García Núñez (mgarcianun@uoc.edu) @@ -21,11 +20,17 @@ public class homeMBean implements Serializable { private static final long serialVersionUID = 1L; private boolean isLogedIn; + private String userId; + private String userName; + private UserType userType; private int refresh; @PostConstruct public void init() { isLogedIn = SessionUtils.isLogedIn(); + userName = SessionUtils.getUserName(); + userId = SessionUtils.getUserId(); + userType = SessionUtils.getUserType(); } public List getThemes() { @@ -40,15 +45,15 @@ public class homeMBean implements Serializable { if (this.isLogedIn == false) return "Invitado"; else - return SessionUtils.getUserName(); + return this.userName; } public String getUserId() { - return SessionUtils.getUserId(); + return this.userId; } public String getUserType() { - return SessionUtils.getUserType().getUserTypename(); + return this.userType.getUserTypename(); } public int getRefresh() { @@ -59,4 +64,23 @@ public class homeMBean implements Serializable { this.refresh = refresh; } + public boolean isPatient() { + return (this.userType == UserType.PATIENT); + } + + public boolean isFamilyDoctor() { + return (this.userType == UserType.FAMILY_DOCTOR); + } + + public boolean isSpecialistDoctor() { + return (this.userType == UserType.SPECIALIST_DOCTOR); + } + + public boolean isAdministrator() { + return (this.userType == UserType.ADMINISTRATOR); + } + + public boolean isDoctor() { + return (isFamilyDoctor() || isSpecialistDoctor()); + } } diff --git a/1.sources/MyHealth/src/managedbean/profile/ChangePrimaryHealthCareCenterMBean.java b/1.sources/MyHealth/src/managedbean/profile/ChangePrimaryHealthCareCenterMBean.java index cea6081..d45b95a 100644 --- a/1.sources/MyHealth/src/managedbean/profile/ChangePrimaryHealthCareCenterMBean.java +++ b/1.sources/MyHealth/src/managedbean/profile/ChangePrimaryHealthCareCenterMBean.java @@ -1,50 +1,113 @@ package managedbean.profile; import java.io.Serializable; -import java.util.Properties; +import java.util.Collection; -import javax.ejb.EJB; -import javax.enterprise.context.RequestScoped; +import javax.annotation.PostConstruct; +import javax.faces.application.FacesMessage; +import javax.faces.view.ViewScoped; import javax.inject.Named; -import javax.naming.Context; -import javax.naming.InitialContext; -import ejb.profile.ProfileFacadeRemote; +import TO.FamilyDoctorTO; +import TO.LoggedUserTO; +import TO.PrimaryHealthCareCenterTO; +import common.UserType; import managedbean.common.ManagedBeanBase; +import managedbean.common.SessionUtils; /*** * * @author Marcos García Núñez (mgarcianun@uoc.edu) * */ -@Named( "ChangePrimaryHealthCareCenterMBean") -@RequestScoped +@Named("ChangeCAP") +@ViewScoped public class ChangePrimaryHealthCareCenterMBean extends ManagedBeanBase implements Serializable { - private static final long serialVersionUID = 1L; - @EJB - private ProfileFacadeRemote remoteManager; + private int id; + private PrimaryHealthCareCenterTO currentCenter; + private PrimaryHealthCareCenterTO newCenter; + private Collection primaryHealthCareCentersList; + + public ChangePrimaryHealthCareCenterMBean() { - /** - * Constructor. Inicializa la conexión con el EJB Remoto - * - * @throws Exception - */ - public ChangePrimaryHealthCareCenterMBean() throws Exception { - initializeAdminFacadeRemote(); } - /** - * Inicializa la conexión con el EJB Remoto - * - * @throws Exception - */ - private void initializeAdminFacadeRemote() throws Exception { - Properties props = System.getProperties(); - Context ctx = new InitialContext(props); - remoteManager = (ProfileFacadeRemote) ctx - .lookup("java:app/myHealth.jar/ProfileFacadeBean!ejb.component.ProfileFacadeRemote"); + @PostConstruct + public void init() { + // Recuperamos el usuario logeado actual + LoggedUserTO usr = null; + try { + usr = SessionUtils.getloggedOnUser(); + + if (usr == null) + this.addFacesMessage(FacesMessage.SEVERITY_ERROR, "Sesión no válida", + "Su sesión actual no es válida, por favor cierre su sesión y vuelva a logearse en el sistema."); + else { + this.id = Integer.valueOf(usr.getId()); + + if (usr.getUserType() == UserType.FAMILY_DOCTOR) { + this.primaryHealthCareCentersList = this.getRemoteManagerSystemAdmin().listAllCAPs(); + + FamilyDoctorTO fd = this.getRemoteManagerProfile().retrieveFamilyDoctor(this.id); + this.setCurrentCenter(fd.getPrimaryHealthCareCenter()); + } + } + } catch (Exception e) { + this.manageException(e); + } + + } + + public Collection getPhcList() { + return primaryHealthCareCentersList; + } + + public int getId() { + return id; + } + + public void saveData() { + int error = 0; + + if (this.getNewCenter() == null) { + this.addFacesMessage(FacesMessage.SEVERITY_WARN, "Centro de atención primaria no seleccionado", "Por favor, especifique un nuevvo centro de atención primaria."); + error++; + } + + if (this.getNewCenter().getName().equals(this.getCurrentCenter().getName())) { + this.addFacesMessage(FacesMessage.SEVERITY_WARN, "El centro de atención primeria debe ser diferente", "Por favor, seleccione un centro de atención primaria diferente al cual está actualmente asignado."); + error++; + } + + if (error == 0) { + try { + FamilyDoctorTO fd = this.getRemoteManagerProfile().changePrimaryHealthCareCenter(this.id, this.getNewCenter()); + this.currentCenter = fd.getPrimaryHealthCareCenter(); + this.newCenter = null; + + this.addFacesMessage(FacesMessage.SEVERITY_INFO, "Los datos se han guardado", "Su centro de atención primaria asignado se ha cambiado correctamente."); + } catch (Exception e) { + this.manageException(e); + } + } + } + + public PrimaryHealthCareCenterTO getCurrentCenter() { + return currentCenter; + } + + public void setCurrentCenter(PrimaryHealthCareCenterTO currentCenter) { + this.currentCenter = currentCenter; + } + + public PrimaryHealthCareCenterTO getNewCenter() { + return newCenter; + } + + public void setNewCenter(PrimaryHealthCareCenterTO newCenter) { + this.newCenter = newCenter; } } diff --git a/1.sources/MyHealth/src/managedbean/profile/RegisterUserMBean.java b/1.sources/MyHealth/src/managedbean/profile/RegisterUserMBean.java index 3bf60eb..844a4ed 100644 --- a/1.sources/MyHealth/src/managedbean/profile/RegisterUserMBean.java +++ b/1.sources/MyHealth/src/managedbean/profile/RegisterUserMBean.java @@ -44,7 +44,7 @@ public class RegisterUserMBean extends ManagedBeanBase implements Serializable { private String password; private String email; private boolean registered; - + // private HashMap userTypes; private List userTypes; private String userType; @@ -53,11 +53,6 @@ public class RegisterUserMBean extends ManagedBeanBase implements Serializable { private Collection medicalSpecialitiesList; private Collection primaryHealthCareCentersList; - /** - * Constructor. Inicializa la conexión con el EJB Remoto - * - * @throws Exception - */ public RegisterUserMBean() { } @@ -96,7 +91,7 @@ public class RegisterUserMBean extends ManagedBeanBase implements Serializable { this.manageException(e); } break; - case ADMINISTRADOR: + case ADMINISTRATOR: case PATIENT: PrimeFaces.current().ajax().addCallbackParam("pats", true); break; @@ -106,6 +101,7 @@ public class RegisterUserMBean extends ManagedBeanBase implements Serializable { public Collection getMedicalSpecialtiesList() { return medicalSpecialitiesList; } + public Collection getPhcList() { return primaryHealthCareCentersList; } @@ -208,10 +204,10 @@ public class RegisterUserMBean extends ManagedBeanBase implements Serializable { this.id = sd.getId(); break; - case ADMINISTRADOR: + case ADMINISTRATOR: throw new NotSupportedException("No se soporta el registro directo de administradores."); } - + this.registered = true; this.addFacesMessage(FacesMessage.SEVERITY_INFO, "Registro realizado", "El usuario " + name + " " + surname + " se ha registrado correctamente."); diff --git a/1.sources/MyHealth/src/managedbean/profile/UpdateProfileMBean.java b/1.sources/MyHealth/src/managedbean/profile/UpdateProfileMBean.java index 32d6481..08daeb5 100644 --- a/1.sources/MyHealth/src/managedbean/profile/UpdateProfileMBean.java +++ b/1.sources/MyHealth/src/managedbean/profile/UpdateProfileMBean.java @@ -55,7 +55,6 @@ public class UpdateProfileMBean extends ManagedBeanBase implements Serializable private String password; private String email; - // private HashMap userTypes; private List userTypes; private String userType; private PrimaryHealthCareCenterTO primaryHealthCareCenter; @@ -63,11 +62,6 @@ public class UpdateProfileMBean extends ManagedBeanBase implements Serializable private Collection medicalSpecialitiesList; private Collection primaryHealthCareCentersList; - /** - * Constructor. Inicializa la conexión con el EJB Remoto - * - * @throws Exception - */ public UpdateProfileMBean() { } @@ -85,7 +79,8 @@ public class UpdateProfileMBean extends ManagedBeanBase implements Serializable usr = SessionUtils.getloggedOnUser(); if (usr == null) - this.addFacesMessage(FacesMessage.SEVERITY_ERROR, "Sesión no válida", "Su sesión actual no es válida, por favor cierre su sesión y vuelva a logearse en el sistema."); + this.addFacesMessage(FacesMessage.SEVERITY_ERROR, "Sesión no válida", + "Su sesión actual no es válida, por favor cierre su sesión y vuelva a logearse en el sistema."); else { this.userType = usr.getUserType().getName(); this.id = Integer.valueOf(usr.getId()); @@ -93,7 +88,7 @@ public class UpdateProfileMBean extends ManagedBeanBase implements Serializable switch (usr.getUserType()) { case PATIENT: PatientTO pat = this.getRemoteManagerProfile().retrievePatient(this.id); - + this.name = pat.getName(); this.surname = pat.getName(); this.nif = pat.getNif(); @@ -114,7 +109,7 @@ public class UpdateProfileMBean extends ManagedBeanBase implements Serializable case FAMILY_DOCTOR: this.primaryHealthCareCentersList = this.getRemoteManagerSystemAdmin().listAllCAPs(); FamilyDoctorTO fd = this.getRemoteManagerProfile().retrieveFamilyDoctor(this.id); - + this.name = fd.getName(); this.surname = fd.getName(); this.nif = fd.getNif(); @@ -122,7 +117,7 @@ public class UpdateProfileMBean extends ManagedBeanBase implements Serializable this.currentPassword = fd.getPassword(); this.primaryHealthCareCenter = fd.getPrimaryHealthCareCenter(); break; - case ADMINISTRADOR: + case ADMINISTRATOR: // TODO: Recuperar usuario administrador para editar su perfil ¿? // this.getRemoteManagerProfile().retrievePatient(usr.getId()); break; @@ -154,7 +149,7 @@ public class UpdateProfileMBean extends ManagedBeanBase implements Serializable this.manageException(e); } break; - case ADMINISTRADOR: + case ADMINISTRATOR: case PATIENT: PrimeFaces.current().ajax().addCallbackParam("pats", true); break; @@ -246,15 +241,17 @@ public class UpdateProfileMBean extends ManagedBeanBase implements Serializable error++; } if (changePassword == true) { - // el usuario queire cambiar el password Comprobamos que el password especificado coincide con el guardado + // el usuario queire cambiar el password Comprobamos que el password + // especificado coincide con el guardado if (this.password == null || this.password.length() < 4) { this.addFacesMessage(FacesMessage.SEVERITY_ERROR, "Nueva contraseña incorrectra", "Su nueva contraseña debe tener al menos 4 caracteres."); error++; - } else if (HashUtils.hashMD5(this.oldPassword).equals(this.currentPassword) == false ) { - this.addFacesMessage(FacesMessage.SEVERITY_ERROR, "Contraseña actual incorrecta", "Su actual contraseña es incorrecta. Por favor, especifique su contraseña actual."); + } else if (HashUtils.hashMD5(this.oldPassword).equals(this.currentPassword) == false) { + this.addFacesMessage(FacesMessage.SEVERITY_ERROR, "Contraseña actual incorrecta", + "Su actual contraseña es incorrecta. Por favor, especifique su contraseña actual."); error++; } - } + } if (error == 0) { try { @@ -274,7 +271,7 @@ public class UpdateProfileMBean extends ManagedBeanBase implements Serializable this.id = sd.getId(); break; - case ADMINISTRADOR: + case ADMINISTRATOR: throw new NotSupportedException("No se soporta la edición de perfiles de tipo administrador."); } @@ -283,7 +280,7 @@ public class UpdateProfileMBean extends ManagedBeanBase implements Serializable this.password = ""; this.oldPassword = ""; } - + this.addFacesMessage(FacesMessage.SEVERITY_INFO, "Los datos se han guardado", "Los datos de su perfil se han guardado correctamente."); } catch (Exception e) { this.manageException(e);