From 8dc561f8768610c3e96410f557ba9ba7e62205df Mon Sep 17 00:00:00 2001 From: dalvarezgon Date: Sun, 29 Dec 2019 00:48:29 +0100 Subject: [PATCH] =?UTF-8?q?Gesti=C3=B3n=20Centros=20de=20Atenci=C3=B3n=20P?= =?UTF-8?q?rimaria?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../systemAdmin/ManageHealthCareCenters.xhtml | 77 ++++++++ .../systemAdmin/ManageSpecialties.xhtml | 2 +- .../systemAdmin/SystemAdminFacadeBean.java | 76 +++++++- .../systemAdmin/SystemAdminFacadeRemote.java | 15 ++ .../src/managedbean/common/MenuMBean.java | 2 +- .../managedbean/systemAdmin/LoginMBean.java | 2 +- .../ManageHealthCareCentersMBean.java | 173 ++++++++++++++++++ .../systemAdmin/ManageSpecialitiesMBean.java | 12 +- 8 files changed, 347 insertions(+), 12 deletions(-) create mode 100644 1.sources/MyHealth/docroot/systemAdmin/ManageHealthCareCenters.xhtml create mode 100644 1.sources/MyHealth/src/managedbean/systemAdmin/ManageHealthCareCentersMBean.java diff --git a/1.sources/MyHealth/docroot/systemAdmin/ManageHealthCareCenters.xhtml b/1.sources/MyHealth/docroot/systemAdmin/ManageHealthCareCenters.xhtml new file mode 100644 index 0000000..110763e --- /dev/null +++ b/1.sources/MyHealth/docroot/systemAdmin/ManageHealthCareCenters.xhtml @@ -0,0 +1,77 @@ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+ \ No newline at end of file diff --git a/1.sources/MyHealth/docroot/systemAdmin/ManageSpecialties.xhtml b/1.sources/MyHealth/docroot/systemAdmin/ManageSpecialties.xhtml index 9f2c34c..9af78b6 100644 --- a/1.sources/MyHealth/docroot/systemAdmin/ManageSpecialties.xhtml +++ b/1.sources/MyHealth/docroot/systemAdmin/ManageSpecialties.xhtml @@ -43,7 +43,7 @@
- +
diff --git a/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeBean.java b/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeBean.java index 6881d51..bc3c636 100644 --- a/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeBean.java +++ b/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeBean.java @@ -1,5 +1,6 @@ package ejb.systemAdmin; +import java.util.ArrayList; import java.util.List; import javax.ejb.EJB; @@ -12,6 +13,7 @@ import TO.FamilyDoctorTO; import TO.LoggedUserTO; import TO.MedicalSpecialtyTO; import TO.PatientTO; +import TO.PrimaryHealthCareCenterTO; import TO.SpecialistDoctorTO; import common.Constants; import common.HashUtils; @@ -19,6 +21,7 @@ import common.UserType; import ejb.common.CommonFacadeLocal; import jpa.AdministratorJPA; import jpa.MedicalSpecialtyJPA; +import jpa.PrimaryHealthCareCenterJPA; /** * @@ -148,10 +151,81 @@ public class SystemAdminFacadeBean implements SystemAdminFacadeRemote { @Override public MedicalSpecialtyTO insertSpecialty(String name, String description) throws Exception { - MedicalSpecialtyJPA ms = new MedicalSpecialtyJPA(name, description); entman.persist(ms); return this.commonServices.getPOJOforMedicalSpecialtyJPA(ms); } + + @Override + public PrimaryHealthCareCenterTO updateHealthCareCenter(int id, String name, String location) throws Exception { + PrimaryHealthCareCenterJPA ms = entman.find(PrimaryHealthCareCenterJPA.class, id); + + if (ms == null) { + throw new Exception("No se pueden actualizar los datos del CAP porque no se encuentra en la base de datos ningún registro con id: " + String.valueOf(id)); + } + + ms.setName(name); + ms.setLocation(location); + + entman.persist(ms); + + return this.commonServices.getPOJOforPrimaryHealthCareCenterJPA(ms); + } + + public PrimaryHealthCareCenterTO findHealthCareCenterByName(String searchedName) { + TypedQuery query = entman.createQuery("from PrimaryHealthCareCenterJPA cap where cap.name=:name", PrimaryHealthCareCenterJPA.class); + query.setMaxResults(1); + query.setParameter("name", searchedName); + + List results = query.getResultList(); + if (results.size() > 0) + return this.commonServices.getPOJOforPrimaryHealthCareCenterJPA(results.get(0)); + else + return null; + } + + @Override + public void deleteHealthCareCenter(int id) throws Exception { + PrimaryHealthCareCenterJPA cap = entman.find(PrimaryHealthCareCenterJPA.class, id); + + if (cap == null) { + throw new Exception("No se puede borrar el CAP porque no se encuentra en la base de datos ningún registro con id: " + String.valueOf(id)); + } + + entman.remove(cap); + } + + @Override + public PrimaryHealthCareCenterTO insertHealthCareCenter(String name, String location) throws Exception { + PrimaryHealthCareCenterJPA cap = new PrimaryHealthCareCenterJPA(name, location); + entman.persist(cap); + + return this.commonServices.getPOJOforPrimaryHealthCareCenterJPA(cap); + } + + public Long getCAPCount() { + TypedQuery query = entman.createQuery("SELECT count(1) from PrimaryHealthCareCenterJPA", Long.class); + + return query.getSingleResult(); + } + + public List listCAPsPaged(int pageNumber, int pageSize) { + TypedQuery query = entman.createQuery("SELECT c from PrimaryHealthCareCenterJPA c order by c.name", PrimaryHealthCareCenterJPA.class); + + if (pageSize > 0) { + query.setFirstResult(pageNumber * pageSize); + query.setMaxResults(pageSize); + } + + List allJPA = query.getResultList(); + List caps = new ArrayList(); + + for (PrimaryHealthCareCenterJPA item : allJPA) { + caps.add(commonServices.getPOJOforPrimaryHealthCareCenterJPA(item)); + } + + return caps; + } + } diff --git a/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeRemote.java b/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeRemote.java index 0980961..7ee27dd 100644 --- a/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeRemote.java +++ b/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeRemote.java @@ -1,9 +1,12 @@ package ejb.systemAdmin; +import java.util.List; + import javax.ejb.Remote; import TO.LoggedUserTO; import TO.MedicalSpecialtyTO; +import TO.PrimaryHealthCareCenterTO; /** * @@ -25,4 +28,16 @@ public interface SystemAdminFacadeRemote { public void deleteSpecialty(int id) throws Exception; public MedicalSpecialtyTO insertSpecialty(String name, String description) throws Exception; + + public PrimaryHealthCareCenterTO updateHealthCareCenter(int id, String name, String location) throws Exception; + + public PrimaryHealthCareCenterTO findHealthCareCenterByName(String name); + + public void deleteHealthCareCenter(int id) throws Exception; + + public PrimaryHealthCareCenterTO insertHealthCareCenter(String name, String location) throws Exception; + + public Long getCAPCount(); + + public List listCAPsPaged(int pageNumber, int pageSize); } \ No newline at end of file diff --git a/1.sources/MyHealth/src/managedbean/common/MenuMBean.java b/1.sources/MyHealth/src/managedbean/common/MenuMBean.java index 63e09bd..eba96f5 100644 --- a/1.sources/MyHealth/src/managedbean/common/MenuMBean.java +++ b/1.sources/MyHealth/src/managedbean/common/MenuMBean.java @@ -42,7 +42,7 @@ public class MenuMBean implements Serializable { subMenu = new DefaultSubMenu("Administración del sistema", "fa fa-wrench"); subMenu.addElement(createMenuItem("Gestionar especialidades", "fa fa-file-text-o", "/systemAdmin/ManageSpecialties", null)); - subMenu.addElement(createMenuItem("Centros At. Primaria", "fa fa-hospital-o", "/systemAdmin/ManageSpecialties", null)); + subMenu.addElement(createMenuItem("Centros At. Primaria", "fa fa-hospital-o", "/systemAdmin/ManageHealthCareCenters", null)); subMenu.addElement(new DefaultSeparator()); subMenu.addElement(createMenuItem("Ver médicos de un CAP", "fa fa-medkit", "/systemAdmin/ManageSpecialties", null)); subMenu.addElement(new DefaultSeparator()); diff --git a/1.sources/MyHealth/src/managedbean/systemAdmin/LoginMBean.java b/1.sources/MyHealth/src/managedbean/systemAdmin/LoginMBean.java index 5618439..892a1c9 100644 --- a/1.sources/MyHealth/src/managedbean/systemAdmin/LoginMBean.java +++ b/1.sources/MyHealth/src/managedbean/systemAdmin/LoginMBean.java @@ -83,7 +83,7 @@ public class LoginMBean extends ManagedBeanBase { // logout event, invalidate session public String logout() { - this.addFacesMessageKeep(FacesMessage.SEVERITY_INFO, "Sessión cerrada", "Ha cerrado correctament su ssesión. Hasta la vista"); + this.addFacesMessageKeep(FacesMessage.SEVERITY_INFO, "Sessión cerrada", "Ha cerrado correctament su sesión. Hasta la vista"); SessionUtils.DestroySession(); diff --git a/1.sources/MyHealth/src/managedbean/systemAdmin/ManageHealthCareCentersMBean.java b/1.sources/MyHealth/src/managedbean/systemAdmin/ManageHealthCareCentersMBean.java new file mode 100644 index 0000000..3b6d33e --- /dev/null +++ b/1.sources/MyHealth/src/managedbean/systemAdmin/ManageHealthCareCentersMBean.java @@ -0,0 +1,173 @@ +package managedbean.systemAdmin; + +import java.io.IOException; +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +import javax.annotation.PostConstruct; +import javax.faces.view.ViewScoped; +import javax.faces.application.FacesMessage; +import javax.faces.context.FacesContext; +import javax.inject.Named; + +import org.primefaces.event.RowEditEvent; +import org.primefaces.model.LazyDataModel; +import org.primefaces.model.SortOrder; + +import TO.PrimaryHealthCareCenterTO; +import managedbean.common.ManagedBeanBase; + +@Named("ManageHealthCareCenters") +@ViewScoped +public class ManageHealthCareCentersMBean extends ManagedBeanBase implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer id; + private String name; + private String location; + private PrimaryHealthCareCenterTO primaryHealthCareCenter; + private LazyDataModel lazyDataModelCAPsList; + + public ManageHealthCareCentersMBean() { + } + + @PostConstruct + public void init() { + this.lazyDataModelCAPsList = new LazyDataModel() { + private static final long serialVersionUID = 1L; + + @Override + public List load(int first, int pageSize, String sortField, SortOrder sortOrder, Map filters) { + Long totalRowCount = getRemoteManagerSystemAdmin().getCAPCount(); + this.setRowCount(totalRowCount.intValue()); + + return getRemoteManagerSystemAdmin().listCAPsPaged((first / pageSize), pageSize); + } + }; + + } + + public LazyDataModel getlazyDataModelCAPsList() { + return lazyDataModelCAPsList; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + private void showPrimaryHealthCareCenterData(PrimaryHealthCareCenterTO cap) { + this.primaryHealthCareCenter = cap; + + if (cap == null) { + this.id = null; + this.name = ""; + this.location = ""; + } else { + this.id = cap.getId(); + this.name = cap.getName(); + this.location = cap.getLocation(); + } + } + + public PrimaryHealthCareCenterTO getPrimaryHealthCareCenter() { + return primaryHealthCareCenter; + } + + public void setPrimaryHealthCareCenter(PrimaryHealthCareCenterTO value) { + this.primaryHealthCareCenter = value; + } + + public void onRowEdit(RowEditEvent event) { + int error = 0; + + if (((PrimaryHealthCareCenterTO) event.getObject()).getName() == null || ((PrimaryHealthCareCenterTO) event.getObject()).getName().trim().length() == 0) { + this.addFacesMessage(FacesMessage.SEVERITY_WARN, "Nombre no relleno", "Por favor, escriba un nombre para el centro."); + error++; + } + if (((PrimaryHealthCareCenterTO) event.getObject()).getLocation() == null || ((PrimaryHealthCareCenterTO) event.getObject()).getLocation().trim().length() == 0) { + this.addFacesMessage(FacesMessage.SEVERITY_WARN, "Localización no rellena", "Por favor, escriba una localización."); + error++; + } + + if (error == 0) { + try { + this.getRemoteManagerSystemAdmin().updateHealthCareCenter(((PrimaryHealthCareCenterTO) event.getObject()).getId(), ((PrimaryHealthCareCenterTO) event.getObject()).getName(), + ((PrimaryHealthCareCenterTO) event.getObject()).getLocation()); + + this.showPrimaryHealthCareCenterData(null); + + FacesMessage msg = new FacesMessage("CAP editado", ((PrimaryHealthCareCenterTO) event.getObject()).getName()); + FacesContext.getCurrentInstance().addMessage(null, msg); + } catch (Exception e) { + this.manageException(e); + } + } + } + + public void onRowCancel(RowEditEvent event) { + FacesMessage msg = new FacesMessage("Edición cancelada", ((PrimaryHealthCareCenterTO) event.getObject()).getName()); + FacesContext.getCurrentInstance().addMessage(null, msg); + } + + public void deleteDataById(Integer id) throws IOException { + try { + this.getRemoteManagerSystemAdmin().deleteHealthCareCenter(id); + this.showPrimaryHealthCareCenterData(null); + + this.addFacesMessage(FacesMessage.SEVERITY_INFO, "El CAP se ha borrado", "Los datos del Centro de Atención Primaria se han borrado correctamente."); + } catch (Exception e) { + this.manageException(e); + } + } + + public void insertData() { + int error = 0; + + if (name == null || name.trim().length() == 0) { + this.addFacesMessage(FacesMessage.SEVERITY_WARN, "Nombre no relleno", "Por favor, escriba un nombre para el centro."); + error++; + } + if (location == null || location.trim().length() == 0) { + this.addFacesMessage(FacesMessage.SEVERITY_WARN, "Localización no rellena", "Por favor, escriba una localización."); + error++; + } + + if (this.getRemoteManagerSystemAdmin().findHealthCareCenterByName(name) != null) { + this.addFacesMessage(FacesMessage.SEVERITY_WARN, "CAP ya existente", "El CAP ya se encuentra en la base de datos"); + error++; + } + + if (error == 0) { + try { + this.getRemoteManagerSystemAdmin().insertHealthCareCenter(name, location); + this.showPrimaryHealthCareCenterData(null); + + this.addFacesMessage(FacesMessage.SEVERITY_INFO, "Los datos se han guardado", "Los datos del Centro de Atención Primaria se han guardado correctamente."); + } catch (Exception e) { + this.manageException(e); + } + } + } +} diff --git a/1.sources/MyHealth/src/managedbean/systemAdmin/ManageSpecialitiesMBean.java b/1.sources/MyHealth/src/managedbean/systemAdmin/ManageSpecialitiesMBean.java index 2f5067a..5349cf1 100644 --- a/1.sources/MyHealth/src/managedbean/systemAdmin/ManageSpecialitiesMBean.java +++ b/1.sources/MyHealth/src/managedbean/systemAdmin/ManageSpecialitiesMBean.java @@ -10,7 +10,6 @@ import javax.inject.Named; import TO.LoggedUserTO; import TO.MedicalSpecialtyTO; -import common.Constants; import managedbean.common.ManagedBeanBase; import managedbean.common.SessionUtils; @@ -51,7 +50,7 @@ public class ManageSpecialitiesMBean extends ManagedBeanBase implements Serializ } private void refreshFormData() { - this.medicalSpecialitiesList = this.getRemoteManagerCommon().listMedicalSpecialitiesPaged(0, Constants.MAX_ITEMS_AUTOCOMPLETE_SEARCH); + this.medicalSpecialitiesList = this.getRemoteManagerCommon().listAllMedicalSpecialities(); } public Integer getId() { @@ -118,9 +117,7 @@ public class ManageSpecialitiesMBean extends ManagedBeanBase implements Serializ if (error == 0) { try { - MedicalSpecialtyTO ms = this.getRemoteManagerSystemAdmin().updateSpecialty(this.medicalSpecialty.getId(), this.medicalSpecialty.getName(), - this.medicalSpecialty.getDescription()); - + this.getRemoteManagerSystemAdmin().updateSpecialty(this.medicalSpecialty.getId(), this.medicalSpecialty.getName(),this.medicalSpecialty.getDescription()); this.showSpecialtyData(null); this.refreshFormData(); @@ -149,7 +146,7 @@ public class ManageSpecialitiesMBean extends ManagedBeanBase implements Serializ this.showSpecialtyData(null); this.refreshFormData(); - this.addFacesMessage(FacesMessage.SEVERITY_INFO, "Los especialidad se ha borrado", "Los datos de la especialidad se han borrado correctamente."); + this.addFacesMessage(FacesMessage.SEVERITY_INFO, "La especialidad se ha borrado", "Los datos de la especialidad se han borrado correctamente."); } catch (Exception e) { this.manageException(e); } @@ -175,8 +172,7 @@ public class ManageSpecialitiesMBean extends ManagedBeanBase implements Serializ if (error == 0) { try { - MedicalSpecialtyTO ms = this.getRemoteManagerSystemAdmin().insertSpecialty(name, description); - + this.getRemoteManagerSystemAdmin().insertSpecialty(name, description); this.showSpecialtyData(null); this.refreshFormData();