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();