Gestión de especialidades con paginado.
This commit is contained in:
@@ -6,53 +6,57 @@
|
|||||||
|
|
||||||
<ui:composition template="../header.xhtml">
|
<ui:composition template="../header.xhtml">
|
||||||
<ui:define name="content">
|
<ui:define name="content">
|
||||||
<h:form id="frmEditSpecialties">
|
<h:form id="frmListSpecialties">
|
||||||
|
<p:growl id="mesgsList" showDetail="true" closable="true" autoupdate="true" />
|
||||||
<p:confirmDialog global="true" showEffect="fade" hideEffect="fade">
|
<p:panel id="PanelSpecialtiesList" style="margin-bottom: 10px;" header="Gestión de Especialidades">
|
||||||
<p:commandButton value="Sí" type="button" styleClass="ui-confirmdialog-yes" icon="pi pi-check" />
|
|
||||||
<p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="pi pi-times" />
|
|
||||||
</p:confirmDialog>
|
|
||||||
|
|
||||||
<p:growl id="mesgsEdit" showDetail="true" closable="true" autoupdate="true" />
|
|
||||||
<p:panel id="PanelMS" style="margin-bottom: 10px;" header="Modificación y borrado de especialidades">
|
|
||||||
<div class="ui-g ui-fluid">
|
<div class="ui-g ui-fluid">
|
||||||
<div class="ui-g-2 ui-md-2">
|
<p:dataTable widgetVar="dtSpecialty" var="specialty" value="#{ManageSpecialities.lazyDataModelSpecialtiesList}" editable="true" lazy="true" paginator="true" rows="10"
|
||||||
<p:outputLabel for="ms" />
|
paginatorPosition="bottom" paginatorAlwaysVisible="true" currentPageReportTemplate="Página {currentPage} de {totalPages}"
|
||||||
<p:selectOneMenu id="ms" value="#{ManageSpecialities.medicalSpecialty}" converter="omnifaces.SelectItemsIndexConverter" effect="fold" editable="true" filter="true"
|
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate="10,20,30,40">
|
||||||
filterMatchMode="startsWith" placeholder="- Selecciona una especialidad -">
|
|
||||||
<f:selectItems value="#{ManageSpecialities.medicalSpecialtiesList}" var="ms" itemValue="#{ms}" itemLabel="#{ms.name}" />
|
<p:ajax event="rowEdit" listener="#{ManageSpecialities.onRowEdit}" update=":frmListSpecialties:mesgsList" />
|
||||||
<f:ajax render="name description" />
|
<p:ajax event="rowEditCancel" listener="#{ManageSpecialities.onRowCancel}" update=":frmListSpecialties:mesgsList" />
|
||||||
</p:selectOneMenu>
|
|
||||||
</div>
|
<p:column headerText="Nombre">
|
||||||
<div class="ui-g-1 ui-md-1">
|
<p:cellEditor>
|
||||||
<p:outputLabel value="Nombre: " for="name" />
|
<f:facet name="output"><h:outputText value="#{specialty.name}" /></f:facet>
|
||||||
</div>
|
<f:facet name="input"><p:inputText value="#{specialty.name}" style="width:100%" label="Nombre"/></f:facet>
|
||||||
<div class="ui-g-2 ui-md-2">
|
</p:cellEditor>
|
||||||
<p:inputText id="name" value="#{ManageSpecialities.medicalSpecialty.name}" converter="omnifaces.TrimConverter" readonly="false" required="true"
|
</p:column>
|
||||||
requiredMessage="Es necesario un nombre" />
|
|
||||||
</div>
|
<p:column headerText="Descripción">
|
||||||
<div class="ui-g-1 ui-md-1">
|
<p:cellEditor>
|
||||||
<p:outputLabel value="Descripción: " for="description" />
|
<f:facet name="output"><h:outputText value="#{specialty.description}" /></f:facet>
|
||||||
</div>
|
<f:facet name="input"><p:inputText value="#{specialty.description}" style="width:100%" label="Descripción"/></f:facet>
|
||||||
<div class="ui-g-4 ui-md-4">
|
</p:cellEditor>
|
||||||
<p:inputText id="description" value="#{ManageSpecialities.medicalSpecialty.description}" converter="omnifaces.TrimConverter" readonly="false" required="true"
|
</p:column>
|
||||||
requiredMessage="Es necesaria una descripción" />
|
|
||||||
</div>
|
<p:column style="width:80px; text-align: center;" headerText="Editar">
|
||||||
<div class="ui-g-1 ui-md-1 ">
|
<p:rowEditor />
|
||||||
<p:commandButton validateClient="true" value="Guardar" update="frmEditSpecialties" action="#{ManageSpecialities.saveData}" icon="pi pi-save" />
|
</p:column>
|
||||||
</div>
|
|
||||||
<div class="ui-g-1 ui-md-1 ">
|
<p:column style="width:80px; text-align: center;" headerText="Eliminar">
|
||||||
<p:commandButton validateClient="true" value="Borrar" update="frmEditSpecialties" action="#{ManageSpecialities.deleteData}" icon="fa fa-remove">
|
<p:commandLink class="pi pi-trash" actionListener="#{ManageSpecialities.deleteDataById(specialty.id)}" update=":frmListSpecialties:mesgsList frmListSpecialties">
|
||||||
<p:confirm header="Confirme la eliminación" message="¿Está seguro de que desea eliminar la especialidad?" icon="pi pi-exclamation-triangle" />
|
<p:confirm header="Eliminar" message="¿Está seguro de que quiere borrar el centro?" icon="pi pi-exclamation-triangle"/>
|
||||||
</p:commandButton>
|
</p:commandLink>
|
||||||
</div>
|
</p:column>
|
||||||
</div>
|
|
||||||
</p:panel>
|
<f:facet name="paginatorBottomLeft">
|
||||||
|
<p:commandButton type="button" icon="pi pi-refresh" onclick="PF('dtSpecialty').getPaginator().setPage(0);" />
|
||||||
|
</f:facet>
|
||||||
|
</p:dataTable>
|
||||||
|
|
||||||
|
<p:confirmDialog global="true">
|
||||||
|
<p:commandButton value="Sí" type="button" styleClass="ui-confirmdialog-yes" icon="pi pi-check"/>
|
||||||
|
<p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="pi pi-times"/>
|
||||||
|
</p:confirmDialog>
|
||||||
|
</div>
|
||||||
|
</p:panel>
|
||||||
</h:form>
|
</h:form>
|
||||||
|
|
||||||
<h:form id="frmAddSpecialties">
|
<h:form id="frmAddSpecialties">
|
||||||
<p:growl id="mesgsAdd" showDetail="true" closable="true" autoupdate="true" />
|
<p:growl id="mesgsAdd" showDetail="true" closable="true" autoupdate="true" />
|
||||||
<p:panel id="PanelNewMS" header="Alta de especialidades">
|
<p:panel id="PanelNewSpecialty" header="Alta de Especialidades">
|
||||||
<div class="ui-g ui-fluid">
|
<div class="ui-g ui-fluid">
|
||||||
<div class="ui-g-1 ui-md-1">
|
<div class="ui-g-1 ui-md-1">
|
||||||
<p:outputLabel value="Nombre: " for="nameNew" />
|
<p:outputLabel value="Nombre: " for="nameNew" />
|
||||||
@@ -69,7 +73,7 @@
|
|||||||
requiredMessage="Es necesaria una descripción" />
|
requiredMessage="Es necesaria una descripción" />
|
||||||
</div>
|
</div>
|
||||||
<div class="ui-g-2 ui-md-2 ">
|
<div class="ui-g-2 ui-md-2 ">
|
||||||
<p:commandButton validateClient="true" value="Crear" update="mesgsAdd frmAddSpecialties frmEditSpecialties" action="#{ManageSpecialities.insertData}" icon="pi pi-check" />
|
<p:commandButton validateClient="true" value="Crear" update="mesgsAdd frmListSpecialties frmAddSpecialties" action="#{ManageSpecialities.insertData}" icon="pi pi-check" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</p:panel>
|
</p:panel>
|
||||||
|
|||||||
@@ -118,6 +118,30 @@ public class SystemAdminFacadeBean implements SystemAdminFacadeRemote {
|
|||||||
return usr;
|
return usr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<MedicalSpecialtyTO> listSpecialtiesPaged(int pageNumber, int pageSize) {
|
||||||
|
TypedQuery<MedicalSpecialtyJPA> 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<MedicalSpecialtyJPA> allJPA = query.getResultList();
|
||||||
|
List<MedicalSpecialtyTO> specialties = new ArrayList<MedicalSpecialtyTO>();
|
||||||
|
|
||||||
|
for (MedicalSpecialtyJPA item : allJPA) {
|
||||||
|
specialties.add(commonServices.getPOJOforMedicalSpecialtyJPA(item));
|
||||||
|
}
|
||||||
|
|
||||||
|
return specialties;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getSpecialtiesCount() {
|
||||||
|
TypedQuery<Long> query = entman.createQuery("SELECT count(1) from MedicalSpecialtyJPA", Long.class);
|
||||||
|
|
||||||
|
return query.getSingleResult();
|
||||||
|
}
|
||||||
|
|
||||||
public MedicalSpecialtyTO updateSpecialty(int id, String name, String description) throws Exception {
|
public MedicalSpecialtyTO updateSpecialty(int id, String name, String description) throws Exception {
|
||||||
MedicalSpecialtyJPA ms = entman.find(MedicalSpecialtyJPA.class, id);
|
MedicalSpecialtyJPA ms = entman.find(MedicalSpecialtyJPA.class, id);
|
||||||
|
|
||||||
|
|||||||
@@ -23,6 +23,10 @@ public interface SystemAdminFacadeRemote {
|
|||||||
|
|
||||||
public LoggedUserTO login(String id, String pwd);
|
public LoggedUserTO login(String id, String pwd);
|
||||||
|
|
||||||
|
public List<MedicalSpecialtyTO> listSpecialtiesPaged(int pageNumber, int pageSize);
|
||||||
|
|
||||||
|
public Long getSpecialtiesCount();
|
||||||
|
|
||||||
public MedicalSpecialtyTO updateSpecialty(int id, String name, String description) throws Exception;
|
public MedicalSpecialtyTO updateSpecialty(int id, String name, String description) throws Exception;
|
||||||
|
|
||||||
public MedicalSpecialtyTO findSpecialtyByName(String name);
|
public MedicalSpecialtyTO findSpecialtyByName(String name);
|
||||||
|
|||||||
@@ -1,20 +1,25 @@
|
|||||||
package managedbean.systemAdmin;
|
package managedbean.systemAdmin;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
import javax.enterprise.context.RequestScoped;
|
|
||||||
import javax.faces.application.FacesMessage;
|
import javax.faces.application.FacesMessage;
|
||||||
|
import javax.faces.context.FacesContext;
|
||||||
|
import javax.faces.view.ViewScoped;
|
||||||
import javax.inject.Named;
|
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 TO.MedicalSpecialtyTO;
|
||||||
import managedbean.common.ManagedBeanBase;
|
import managedbean.common.ManagedBeanBase;
|
||||||
import managedbean.common.SessionUtils;
|
|
||||||
|
|
||||||
@Named("ManageSpecialities")
|
@Named("ManageSpecialities")
|
||||||
@RequestScoped
|
@ViewScoped
|
||||||
public class ManageSpecialitiesMBean extends ManagedBeanBase implements Serializable {
|
public class ManageSpecialitiesMBean extends ManagedBeanBase implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
@@ -23,34 +28,29 @@ public class ManageSpecialitiesMBean extends ManagedBeanBase implements Serializ
|
|||||||
private String name;
|
private String name;
|
||||||
private String description;
|
private String description;
|
||||||
private MedicalSpecialtyTO medicalSpecialty;
|
private MedicalSpecialtyTO medicalSpecialty;
|
||||||
private List<MedicalSpecialtyTO> medicalSpecialtiesList;
|
private LazyDataModel<MedicalSpecialtyTO> lazyDataModelSpecialtiesList;
|
||||||
|
|
||||||
public ManageSpecialitiesMBean() {
|
public ManageSpecialitiesMBean() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
public void init() {
|
public void init() {
|
||||||
if (this.medicalSpecialty == null) {
|
this.lazyDataModelSpecialtiesList = new LazyDataModel<MedicalSpecialtyTO>() {
|
||||||
this.medicalSpecialty = new MedicalSpecialtyTO();
|
private static final long serialVersionUID = 1L;
|
||||||
}
|
|
||||||
// Recuperamos el usuario logeado actual
|
|
||||||
LoggedUserTO usr = null;
|
|
||||||
try {
|
|
||||||
usr = SessionUtils.getloggedOnUser();
|
|
||||||
|
|
||||||
if (usr == null)
|
@Override
|
||||||
this.addFacesMessage(FacesMessage.SEVERITY_ERROR, "Sesión no válida",
|
public List<MedicalSpecialtyTO> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, Object> filters) {
|
||||||
"Su sesión actual no es válida, por favor cierre su sesión y vuelva a logearse en el sistema.");
|
Long totalRowCount = getRemoteManagerSystemAdmin().getSpecialtiesCount();
|
||||||
else {
|
this.setRowCount(totalRowCount.intValue());
|
||||||
this.refreshFormData();
|
|
||||||
|
return getRemoteManagerSystemAdmin().listSpecialtiesPaged((first / pageSize), pageSize);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
};
|
||||||
this.manageException(e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void refreshFormData() {
|
public LazyDataModel<MedicalSpecialtyTO> getlazyDataModelSpecialtiesList() {
|
||||||
this.medicalSpecialtiesList = this.getRemoteManagerCommon().listAllMedicalSpecialties();
|
return lazyDataModelSpecialtiesList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Integer getId() {
|
public Integer getId() {
|
||||||
@@ -91,10 +91,6 @@ public class ManageSpecialitiesMBean extends ManagedBeanBase implements Serializ
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<MedicalSpecialtyTO> getMedicalSpecialtiesList() {
|
|
||||||
return medicalSpecialtiesList;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MedicalSpecialtyTO getMedicalSpecialty() {
|
public MedicalSpecialtyTO getMedicalSpecialty() {
|
||||||
return medicalSpecialty;
|
return medicalSpecialty;
|
||||||
}
|
}
|
||||||
@@ -103,58 +99,64 @@ public class ManageSpecialitiesMBean extends ManagedBeanBase implements Serializ
|
|||||||
this.medicalSpecialty = value;
|
this.medicalSpecialty = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void saveData() {
|
public void onRowEdit(RowEditEvent event) {
|
||||||
int error = 0;
|
int error = 0;
|
||||||
|
|
||||||
if (this.medicalSpecialty.getName() == null || this.medicalSpecialty.getName().trim().length() == 0) {
|
String newName = ((MedicalSpecialtyTO) event.getObject()).getName();
|
||||||
this.addFacesMessage(FacesMessage.SEVERITY_WARN, "Nombre no relleno", "Por favor, escriba un nombre de especialidad.");
|
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++;
|
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.");
|
this.addFacesMessage(FacesMessage.SEVERITY_WARN, "Descripción no rellena", "Por favor, escriba una descripción.");
|
||||||
error++;
|
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) {
|
if (error == 0) {
|
||||||
try {
|
try {
|
||||||
this.getRemoteManagerSystemAdmin().updateSpecialty(this.medicalSpecialty.getId(), this.medicalSpecialty.getName(), this.medicalSpecialty.getDescription());
|
this.getRemoteManagerSystemAdmin().updateSpecialty(((MedicalSpecialtyTO) event.getObject()).getId(),
|
||||||
this.showSpecialtyData(null);
|
((MedicalSpecialtyTO) event.getObject()).getName(), ((MedicalSpecialtyTO) event.getObject()).getDescription());
|
||||||
this.refreshFormData();
|
|
||||||
|
|
||||||
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) {
|
} catch (Exception e) {
|
||||||
this.manageException(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;
|
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) {
|
if (error == 0) {
|
||||||
this.addFacesMessage(FacesMessage.SEVERITY_WARN, "Nombre no relleno", "Por favor, escriba un nombre de especialidad.");
|
this.getRemoteManagerSystemAdmin().deleteSpecialty(id);
|
||||||
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());
|
|
||||||
this.showSpecialtyData(null);
|
this.showSpecialtyData(null);
|
||||||
this.refreshFormData();
|
|
||||||
|
|
||||||
this.addFacesMessage(FacesMessage.SEVERITY_INFO, "La 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);
|
|
||||||
}
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
this.manageException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -179,7 +181,6 @@ public class ManageSpecialitiesMBean extends ManagedBeanBase implements Serializ
|
|||||||
try {
|
try {
|
||||||
this.getRemoteManagerSystemAdmin().insertSpecialty(name, description);
|
this.getRemoteManagerSystemAdmin().insertSpecialty(name, description);
|
||||||
this.showSpecialtyData(null);
|
this.showSpecialtyData(null);
|
||||||
this.refreshFormData();
|
|
||||||
|
|
||||||
this.addFacesMessage(FacesMessage.SEVERITY_INFO, "Los datos se han guardado", "Los datos de la especialidad se han guardado correctamente.");
|
this.addFacesMessage(FacesMessage.SEVERITY_INFO, "Los datos se han guardado", "Los datos de la especialidad se han guardado correctamente.");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|||||||
Reference in New Issue
Block a user