From 91faac6b63fd25e02d9adabfc944be04bbf7693f Mon Sep 17 00:00:00 2001 From: dalvarezgon Date: Wed, 1 Jan 2020 12:02:37 +0100 Subject: [PATCH] =?UTF-8?q?A=C3=B1adir=20usuario=20admin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../docroot/systemAdmin/AddAdmin.xhtml | 53 +++++++++++++ 1.sources/MyHealth/src/TO/SystemAdminTO.java | 24 +++++- .../src/ejb/common/CommonFacadeBean.java | 13 +++ .../src/ejb/common/CommonFacadeLocal.java | 4 + .../systemAdmin/SystemAdminFacadeBean.java | 31 +++++++- .../systemAdmin/SystemAdminFacadeRemote.java | 5 ++ ...inistratorJPA.java => SystemAdminJPA.java} | 6 +- .../common/AuthorizationFilter.java | 2 + .../src/managedbean/common/MenuMBean.java | 2 +- .../systemAdmin/AddAdminMBean.java | 79 +++++++++++++++++++ 10 files changed, 212 insertions(+), 7 deletions(-) create mode 100644 1.sources/MyHealth/docroot/systemAdmin/AddAdmin.xhtml rename 1.sources/MyHealth/src/jpa/{AdministratorJPA.java => SystemAdminJPA.java} (78%) create mode 100644 1.sources/MyHealth/src/managedbean/systemAdmin/AddAdminMBean.java diff --git a/1.sources/MyHealth/docroot/systemAdmin/AddAdmin.xhtml b/1.sources/MyHealth/docroot/systemAdmin/AddAdmin.xhtml new file mode 100644 index 0000000..d235d1b --- /dev/null +++ b/1.sources/MyHealth/docroot/systemAdmin/AddAdmin.xhtml @@ -0,0 +1,53 @@ + + + + + + + + + + +
+
+ +
+
+ + + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+ \ No newline at end of file diff --git a/1.sources/MyHealth/src/TO/SystemAdminTO.java b/1.sources/MyHealth/src/TO/SystemAdminTO.java index bd33a1d..6508000 100644 --- a/1.sources/MyHealth/src/TO/SystemAdminTO.java +++ b/1.sources/MyHealth/src/TO/SystemAdminTO.java @@ -19,11 +19,33 @@ import javax.xml.bind.annotation.XmlRootElement; public class SystemAdminTO implements Serializable { private static final long serialVersionUID = 1L; - + private String email; + private String password; public SystemAdminTO() { super(); } + public SystemAdminTO(String email, String password) { + this.email = email; + this.setPassword(password); + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + } diff --git a/1.sources/MyHealth/src/ejb/common/CommonFacadeBean.java b/1.sources/MyHealth/src/ejb/common/CommonFacadeBean.java index 779bd4b..429da54 100644 --- a/1.sources/MyHealth/src/ejb/common/CommonFacadeBean.java +++ b/1.sources/MyHealth/src/ejb/common/CommonFacadeBean.java @@ -15,6 +15,7 @@ import TO.PatientTO; import TO.PrimaryHealthCareCenterTO; import TO.QuestionTO; import TO.SpecialistDoctorTO; +import TO.SystemAdminTO; import TO.VisitTO; import common.Utils; import jpa.FamilyDoctorJPA; @@ -24,6 +25,7 @@ import jpa.PatientJPA; import jpa.PrimaryHealthCareCenterJPA; import jpa.QuestionJPA; import jpa.SpecialistDoctorJPA; +import jpa.SystemAdminJPA; import jpa.VisitJPA; /*** @@ -637,4 +639,15 @@ public class CommonFacadeBean implements CommonFacadeRemote, CommonFacadeLocal { return qsTO; } + + @Override + public SystemAdminTO getPOJOforSystemAdminJPA(SystemAdminJPA admin) { + SystemAdminTO adminTO = null; + + if (admin != null) { + adminTO = new SystemAdminTO(admin.getEmail(), admin.getPassword()); + } + + return adminTO; + } } diff --git a/1.sources/MyHealth/src/ejb/common/CommonFacadeLocal.java b/1.sources/MyHealth/src/ejb/common/CommonFacadeLocal.java index 4438ba9..876314c 100644 --- a/1.sources/MyHealth/src/ejb/common/CommonFacadeLocal.java +++ b/1.sources/MyHealth/src/ejb/common/CommonFacadeLocal.java @@ -11,7 +11,9 @@ import TO.PatientTO; import TO.PrimaryHealthCareCenterTO; import TO.QuestionTO; import TO.SpecialistDoctorTO; +import TO.SystemAdminTO; import TO.VisitTO; +import jpa.SystemAdminJPA; import jpa.FamilyDoctorJPA; import jpa.MedicalSpecialtyJPA; import jpa.MedicalTestJPA; @@ -84,4 +86,6 @@ public interface CommonFacadeLocal { public MedicalTestTO getPOJOforMedicalTestJPA(MedicalTestJPA mt, int nestedProps); public VisitTO getPOJOforVisitJPA(VisitJPA qs, int nestedProps); + + public SystemAdminTO getPOJOforSystemAdminJPA(SystemAdminJPA admin); } diff --git a/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeBean.java b/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeBean.java index 64c5b9c..c5ec1a4 100644 --- a/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeBean.java +++ b/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeBean.java @@ -15,11 +15,12 @@ import TO.MedicalSpecialtyTO; import TO.PatientTO; import TO.PrimaryHealthCareCenterTO; import TO.SpecialistDoctorTO; +import TO.SystemAdminTO; import common.Constants; import common.HashUtils; import common.UserType; import ejb.common.CommonFacadeLocal; -import jpa.AdministratorJPA; +import jpa.SystemAdminJPA; import jpa.FamilyDoctorJPA; import jpa.MedicalSpecialtyJPA; import jpa.PrimaryHealthCareCenterJPA; @@ -91,7 +92,7 @@ public class SystemAdminFacadeBean implements SystemAdminFacadeRemote { // cual intentamos login contra la tabla de administradores if (usr == null) { // Intentamos recuperar un registro de administrador - AdministratorJPA adm = entman.find(AdministratorJPA.class, userCode); + SystemAdminJPA adm = entman.find(SystemAdminJPA.class, userCode); if (adm != null) { usr = new LoggedUserTO(adm.getEmail(), adm.getEmail(), adm.getPassword(), UserType.ADMINISTRATOR, adm.getEmail()); @@ -174,6 +175,7 @@ public class SystemAdminFacadeBean implements SystemAdminFacadeRemote { return this.commonServices.getPOJOforPrimaryHealthCareCenterJPA(ms); } + @Override public PrimaryHealthCareCenterTO findHealthCareCenterByName(String searchedName) { TypedQuery query = entman.createQuery("from PrimaryHealthCareCenterJPA cap where cap.name=:name", PrimaryHealthCareCenterJPA.class); query.setMaxResults(1); @@ -205,12 +207,14 @@ public class SystemAdminFacadeBean implements SystemAdminFacadeRemote { return this.commonServices.getPOJOforPrimaryHealthCareCenterJPA(cap); } + @Override public Long getCAPCount() { TypedQuery query = entman.createQuery("SELECT count(1) from PrimaryHealthCareCenterJPA", Long.class); return query.getSingleResult(); } + @Override public List listCAPsPaged(int pageNumber, int pageSize) { TypedQuery query = entman.createQuery("SELECT c from PrimaryHealthCareCenterJPA c order by c.name", PrimaryHealthCareCenterJPA.class); @@ -229,6 +233,7 @@ public class SystemAdminFacadeBean implements SystemAdminFacadeRemote { return caps; } + @Override public List listAllFamilyDoctorsByCAPPaged(int primaryHealthCareCenterId, int pageNumber, int pageSize) { List familyDoctorsByCAP = new ArrayList(); @@ -250,10 +255,32 @@ public class SystemAdminFacadeBean implements SystemAdminFacadeRemote { return familyDoctorsByCAP; } + @Override public Long getPatientCount(int familyDoctorId) { TypedQuery query = entman.createQuery("SELECT count(1) from PatientJPA p where p.familyDoctor.id=:familyDoctorId", Long.class); query.setParameter("familyDoctorId", familyDoctorId); return query.getSingleResult(); } + + @Override + public SystemAdminTO findAdminByEmail(String email) { + TypedQuery query = entman.createQuery("from SystemAdminJPA a where a.email=:email", SystemAdminJPA.class); + query.setMaxResults(1); + query.setParameter("email", email); + + List results = query.getResultList(); + if (results.size() > 0) + return this.commonServices.getPOJOforSystemAdminJPA(results.get(0)); + else + return null; + } + + @Override + public SystemAdminTO insertAdmin(String email, String password) throws Exception { + SystemAdminJPA admin = new SystemAdminJPA(email, password); + entman.persist(admin); + + return this.commonServices.getPOJOforSystemAdminJPA(admin); + } } diff --git a/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeRemote.java b/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeRemote.java index 05e3103..bc430f5 100644 --- a/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeRemote.java +++ b/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeRemote.java @@ -8,6 +8,7 @@ import TO.FamilyDoctorTO; import TO.LoggedUserTO; import TO.MedicalSpecialtyTO; import TO.PrimaryHealthCareCenterTO; +import TO.SystemAdminTO; /** * @@ -45,4 +46,8 @@ public interface SystemAdminFacadeRemote { public List listAllFamilyDoctorsByCAPPaged(int primaryHealthCareCenterId, int pageNumber, int pageSize); public Long getPatientCount(int familyDoctorId); + + public SystemAdminTO findAdminByEmail(String email); + + public SystemAdminTO insertAdmin(String email, String password) throws Exception; } \ No newline at end of file diff --git a/1.sources/MyHealth/src/jpa/AdministratorJPA.java b/1.sources/MyHealth/src/jpa/SystemAdminJPA.java similarity index 78% rename from 1.sources/MyHealth/src/jpa/AdministratorJPA.java rename to 1.sources/MyHealth/src/jpa/SystemAdminJPA.java index 75dcf3f..7bd5fce 100644 --- a/1.sources/MyHealth/src/jpa/AdministratorJPA.java +++ b/1.sources/MyHealth/src/jpa/SystemAdminJPA.java @@ -13,7 +13,7 @@ import javax.persistence.Table; */ @Entity @Table(name = "MyHealth.Administrator") -public class AdministratorJPA implements Serializable { +public class SystemAdminJPA implements Serializable { private static final long serialVersionUID = 1L; @@ -24,11 +24,11 @@ public class AdministratorJPA implements Serializable { /** * Class constructor methods */ - public AdministratorJPA() { + public SystemAdminJPA() { super(); } - public AdministratorJPA(String email, String password) { + public SystemAdminJPA(String email, String password) { this.email = email; this.password = password; } diff --git a/1.sources/MyHealth/src/managedbean/common/AuthorizationFilter.java b/1.sources/MyHealth/src/managedbean/common/AuthorizationFilter.java index 9c00e5e..1b88078 100644 --- a/1.sources/MyHealth/src/managedbean/common/AuthorizationFilter.java +++ b/1.sources/MyHealth/src/managedbean/common/AuthorizationFilter.java @@ -109,6 +109,8 @@ public class AuthorizationFilter implements Filter { authorized = true; if (reqURI.indexOf("/systemAdmin/ListDoctorsByCenter") > 0) authorized = true; + if (reqURI.indexOf("/systemAdmin/AddAdmin") > 0) + authorized = true; if (reqURI.indexOf("/visit/PatientVisitList") > 0) authorized = true; if (reqURI.indexOf("/visit/UpdateVisit") > 0) diff --git a/1.sources/MyHealth/src/managedbean/common/MenuMBean.java b/1.sources/MyHealth/src/managedbean/common/MenuMBean.java index 973ad2c..605e243 100644 --- a/1.sources/MyHealth/src/managedbean/common/MenuMBean.java +++ b/1.sources/MyHealth/src/managedbean/common/MenuMBean.java @@ -46,7 +46,7 @@ public class MenuMBean implements Serializable { subMenu.addElement(new DefaultSeparator()); subMenu.addElement(createMenuItem("Ver médicos de un CAP", "fa fa-medkit", "/systemAdmin/ListDoctorsByCenter", null)); subMenu.addElement(new DefaultSeparator()); - subMenu.addElement(createMenuItem("Añadir usuario Admin", "fa fa-user-secret", "/systemAdmin/ManageSpecialties", null)); + subMenu.addElement(createMenuItem("Añadir usuario Admin", "fa fa-user-secret", "/systemAdmin/AddAdmin", null)); model.addElement(subMenu); } diff --git a/1.sources/MyHealth/src/managedbean/systemAdmin/AddAdminMBean.java b/1.sources/MyHealth/src/managedbean/systemAdmin/AddAdminMBean.java new file mode 100644 index 0000000..ae1cd3a --- /dev/null +++ b/1.sources/MyHealth/src/managedbean/systemAdmin/AddAdminMBean.java @@ -0,0 +1,79 @@ +package managedbean.systemAdmin; + +import java.io.Serializable; +import java.util.List; + +import javax.annotation.PostConstruct; +import javax.enterprise.context.RequestScoped; +import javax.faces.application.FacesMessage; +import javax.inject.Named; + +import TO.LoggedUserTO; +import TO.MedicalSpecialtyTO; +import common.HashUtils; +import managedbean.common.ManagedBeanBase; +import managedbean.common.SessionUtils; + +@Named("AddAdmin") +@RequestScoped +public class AddAdminMBean extends ManagedBeanBase implements Serializable { + + private static final long serialVersionUID = 1L; + + private String email; + private String password; + + public AddAdminMBean() { + } + + @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."); + } + } catch (Exception e) { + this.manageException(e); + } + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public void insertData() { + int error = 0; + + if (this.getRemoteManagerSystemAdmin().findAdminByEmail(email) != null) { + this.addFacesMessage(FacesMessage.SEVERITY_WARN, "Administrador ya existente", "El administrador ya se encuentra dado de alta"); + error++; + } + + if (error == 0) { + try { + this.getRemoteManagerSystemAdmin().insertAdmin(email, HashUtils.hashMD5(password)); + + this.addFacesMessage(FacesMessage.SEVERITY_INFO, "El administrador se ha dado de alta", "Los datos del administrador se han guardado correctamente."); + } catch (Exception e) { + this.manageException(e); + } + } + } +}