From 3aa971c8a2c0023d768740b35be9db9e3de3f258 Mon Sep 17 00:00:00 2001 From: dalvarezgon Date: Fri, 3 Jan 2020 13:19:58 +0100 Subject: [PATCH] =?UTF-8?q?Gesti=C3=B3n=20de=20especialidades=20con=20pagi?= =?UTF-8?q?nado.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../systemAdmin/ManageSpecialties.xhtml | 90 ++++++------- .../systemAdmin/SystemAdminFacadeBean.java | 24 ++++ .../systemAdmin/SystemAdminFacadeRemote.java | 4 + .../systemAdmin/ManageSpecialitiesMBean.java | 121 +++++++++--------- 4 files changed, 136 insertions(+), 103 deletions(-) diff --git a/1.sources/MyHealth/docroot/systemAdmin/ManageSpecialties.xhtml b/1.sources/MyHealth/docroot/systemAdmin/ManageSpecialties.xhtml index 9af78b6..6006796 100644 --- a/1.sources/MyHealth/docroot/systemAdmin/ManageSpecialties.xhtml +++ b/1.sources/MyHealth/docroot/systemAdmin/ManageSpecialties.xhtml @@ -6,53 +6,57 @@ - - - - - - - - - + + +
-
- - - - - -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- - - -
-
-
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- +
@@ -69,7 +73,7 @@ requiredMessage="Es necesaria una descripción" />
- +
diff --git a/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeBean.java b/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeBean.java index fd5c245..cf85481 100644 --- a/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeBean.java +++ b/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeBean.java @@ -118,6 +118,30 @@ public class SystemAdminFacadeBean implements SystemAdminFacadeRemote { return usr; } + public List listSpecialtiesPaged(int pageNumber, int pageSize) { + TypedQuery query = entman.createQuery("SELECT s from MedicalSpecialtyJPA s order by s.name", MedicalSpecialtyJPA.class); + + if (pageSize > 0) { + query.setFirstResult(pageNumber * pageSize); + query.setMaxResults(pageSize); + } + + List allJPA = query.getResultList(); + List specialties = new ArrayList(); + + for (MedicalSpecialtyJPA item : allJPA) { + specialties.add(commonServices.getPOJOforMedicalSpecialtyJPA(item)); + } + + return specialties; + } + + public Long getSpecialtiesCount() { + TypedQuery query = entman.createQuery("SELECT count(1) from MedicalSpecialtyJPA", Long.class); + + return query.getSingleResult(); + } + public MedicalSpecialtyTO updateSpecialty(int id, String name, String description) throws Exception { MedicalSpecialtyJPA ms = entman.find(MedicalSpecialtyJPA.class, id); diff --git a/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeRemote.java b/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeRemote.java index 9085480..9feae15 100644 --- a/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeRemote.java +++ b/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeRemote.java @@ -22,6 +22,10 @@ public interface SystemAdminFacadeRemote { */ public LoggedUserTO login(String id, String pwd); + + public List listSpecialtiesPaged(int pageNumber, int pageSize); + + public Long getSpecialtiesCount(); public MedicalSpecialtyTO updateSpecialty(int id, String name, String description) throws Exception; diff --git a/1.sources/MyHealth/src/managedbean/systemAdmin/ManageSpecialitiesMBean.java b/1.sources/MyHealth/src/managedbean/systemAdmin/ManageSpecialitiesMBean.java index bf4c02d..4e6e48c 100644 --- a/1.sources/MyHealth/src/managedbean/systemAdmin/ManageSpecialitiesMBean.java +++ b/1.sources/MyHealth/src/managedbean/systemAdmin/ManageSpecialitiesMBean.java @@ -1,20 +1,25 @@ 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.enterprise.context.RequestScoped; import javax.faces.application.FacesMessage; +import javax.faces.context.FacesContext; +import javax.faces.view.ViewScoped; import javax.inject.Named; -import TO.LoggedUserTO; +import org.primefaces.event.RowEditEvent; +import org.primefaces.model.LazyDataModel; +import org.primefaces.model.SortOrder; + import TO.MedicalSpecialtyTO; import managedbean.common.ManagedBeanBase; -import managedbean.common.SessionUtils; @Named("ManageSpecialities") -@RequestScoped +@ViewScoped public class ManageSpecialitiesMBean extends ManagedBeanBase implements Serializable { private static final long serialVersionUID = 1L; @@ -23,34 +28,29 @@ public class ManageSpecialitiesMBean extends ManagedBeanBase implements Serializ private String name; private String description; private MedicalSpecialtyTO medicalSpecialty; - private List medicalSpecialtiesList; + private LazyDataModel lazyDataModelSpecialtiesList; public ManageSpecialitiesMBean() { } @PostConstruct public void init() { - if (this.medicalSpecialty == null) { - this.medicalSpecialty = new MedicalSpecialtyTO(); - } - // Recuperamos el usuario logeado actual - LoggedUserTO usr = null; - try { - usr = SessionUtils.getloggedOnUser(); + this.lazyDataModelSpecialtiesList = new LazyDataModel() { + private static final long serialVersionUID = 1L; - 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.refreshFormData(); + @Override + public List load(int first, int pageSize, String sortField, SortOrder sortOrder, Map filters) { + Long totalRowCount = getRemoteManagerSystemAdmin().getSpecialtiesCount(); + this.setRowCount(totalRowCount.intValue()); + + return getRemoteManagerSystemAdmin().listSpecialtiesPaged((first / pageSize), pageSize); } - } catch (Exception e) { - this.manageException(e); - } + }; + } - private void refreshFormData() { - this.medicalSpecialtiesList = this.getRemoteManagerCommon().listAllMedicalSpecialties(); + public LazyDataModel getlazyDataModelSpecialtiesList() { + return lazyDataModelSpecialtiesList; } public Integer getId() { @@ -91,10 +91,6 @@ public class ManageSpecialitiesMBean extends ManagedBeanBase implements Serializ } } - public List getMedicalSpecialtiesList() { - return medicalSpecialtiesList; - } - public MedicalSpecialtyTO getMedicalSpecialty() { return medicalSpecialty; } @@ -102,62 +98,68 @@ public class ManageSpecialitiesMBean extends ManagedBeanBase implements Serializ public void setMedicalSpecialty(MedicalSpecialtyTO value) { this.medicalSpecialty = value; } - - public void saveData() { + + public void onRowEdit(RowEditEvent event) { int error = 0; - if (this.medicalSpecialty.getName() == null || this.medicalSpecialty.getName().trim().length() == 0) { - this.addFacesMessage(FacesMessage.SEVERITY_WARN, "Nombre no relleno", "Por favor, escriba un nombre de especialidad."); + String newName = ((MedicalSpecialtyTO) event.getObject()).getName(); + String newDescription = ((MedicalSpecialtyTO) event.getObject()).getDescription(); + + if (newName == null || newName.trim().length() == 0) { + this.addFacesMessage(FacesMessage.SEVERITY_WARN, "Nombre no relleno", "Por favor, escriba un nombre para la especialidad."); error++; } - if (this.medicalSpecialty.getDescription() == null || this.medicalSpecialty.getDescription().trim().length() == 0) { + + if (newDescription == null || newDescription.trim().length() == 0) { this.addFacesMessage(FacesMessage.SEVERITY_WARN, "Descripción no rellena", "Por favor, escriba una descripción."); error++; } - + + if (this.getRemoteManagerSystemAdmin().findSpecialtyByName(newName) != null) { + this.addFacesMessage(FacesMessage.SEVERITY_WARN, "Especialidad ya existente", "La especialidad ya se encuentra en la base de datos"); + error++; + } + if (error == 0) { try { - this.getRemoteManagerSystemAdmin().updateSpecialty(this.medicalSpecialty.getId(), this.medicalSpecialty.getName(), this.medicalSpecialty.getDescription()); - this.showSpecialtyData(null); - this.refreshFormData(); + this.getRemoteManagerSystemAdmin().updateSpecialty(((MedicalSpecialtyTO) event.getObject()).getId(), + ((MedicalSpecialtyTO) event.getObject()).getName(), ((MedicalSpecialtyTO) event.getObject()).getDescription()); - this.addFacesMessage(FacesMessage.SEVERITY_INFO, "Los datos se han guardado", "Los datos de la especialidad se han guardado correctamente."); + this.showSpecialtyData(null); + + FacesMessage msg = new FacesMessage("Especialidad editada", ((MedicalSpecialtyTO) event.getObject()).getName()); + FacesContext.getCurrentInstance().addMessage(null, msg); } catch (Exception e) { this.manageException(e); } } } - - public void deleteData() { + + public void onRowCancel(RowEditEvent event) { + FacesMessage msg = new FacesMessage("Edición cancelada", ((MedicalSpecialtyTO) event.getObject()).getName()); + FacesContext.getCurrentInstance().addMessage(null, msg); + } + + public void deleteDataById(Integer id) throws IOException { int error = 0; + try { + if (this.getRemoteManagerMedicalTest().getSpecialistDoctorByMedicalSpecialtyCount(id) > 0) { + this.addFacesMessage(FacesMessage.SEVERITY_ERROR, "No se puede eliminar esta especialidad", + "Existen especialistas que tienen asignada esta especialidad médica, por lo cual no puede ser eliminada. Asigne los especialista a otra especialidad para proceder a eliminar la especialidad a continuación."); + error++; + } - if (this.medicalSpecialty.getName() == null) { - this.addFacesMessage(FacesMessage.SEVERITY_WARN, "Nombre no relleno", "Por favor, escriba un nombre de especialidad."); - error++; - } - if (this.medicalSpecialty.getDescription() == null) { - this.addFacesMessage(FacesMessage.SEVERITY_WARN, "Descripción no rellena", "Por favor, escriba una descripción."); - error++; - } - if (this.getRemoteManagerMedicalTest().getSpecialistDoctorByMedicalSpecialtyCount(this.medicalSpecialty.getId()) > 0) { - this.addFacesMessage(FacesMessage.SEVERITY_ERROR, "No se puede eliminar esta especialidad", - "Existen especialistas que tienen asignada esta especialidad médica, por lo cual no puede ser eliminada. Asigne los especialista a otra especialidad para proceder a eliminar la especialidad a continuación."); - error++; - } - - if (error == 0) { - try { - this.getRemoteManagerSystemAdmin().deleteSpecialty(this.medicalSpecialty.getId()); + if (error == 0) { + this.getRemoteManagerSystemAdmin().deleteSpecialty(id); this.showSpecialtyData(null); - this.refreshFormData(); 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); } + } catch (Exception e) { + this.manageException(e); } } - + public void insertData() { int error = 0; @@ -179,7 +181,6 @@ public class ManageSpecialitiesMBean extends ManagedBeanBase implements Serializ try { this.getRemoteManagerSystemAdmin().insertSpecialty(name, description); this.showSpecialtyData(null); - this.refreshFormData(); this.addFacesMessage(FacesMessage.SEVERITY_INFO, "Los datos se han guardado", "Los datos de la especialidad se han guardado correctamente."); } catch (Exception e) {