Avances en la pantalla de registro de usuarios nuevos (pacientes).

* Actualización de script para crear tablas (Todo a minusculas, no case
sensitive)
* Script de datos de pruebas de especialides médicas.
* Nuevo bean para registro de usuarios (Quidato de filtro de seguridad
de login, acceso sin login).
* Actualización de entidades JPA con campos Identity.
* Enumerado para gestionar tipos de usuarios (Paciente, Medico Familia,
Especialista y Administrador)
* Clase común para realizar validaciones (función para validar nif).
This commit is contained in:
mgarcianun
2019-11-27 00:11:21 +01:00
parent 3686ead2ba
commit 9859f83326
26 changed files with 788 additions and 202 deletions

View File

@@ -1,24 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<ui:composition template="../header.xhtml">
<h:outputScript>
function handleActionMessage(xhr, status, args) {
if(args.validationFailed || !args.loggedIn) {
PF('dlgLogin').jq.effect("shake", {times:5}, 100);
}
else {
PF('dlgLogin').hide();
$('#loginLink').fadeOut();
}
}
</h:outputScript>
<ui:composition template="../header.xhtml">
<ui:define name="content">
<h:form id="testForm">
<div align="center">
<h1>AddPaciente Page</h1>
<hr/>
<div>AddPaciente:</div>
<div>
AddPaciente content
</div>
</div>
<p align="center">
<h:button value="Volver al inicio" outcome="home" />
</p>
</h:form>
<h:form>
<p:messages id="mesgs" showDetail="true" closable="true">
<p:autoUpdate />
</p:messages>
<p:panel id="AltaPaciente" header="Registrarse en el sistema como paciente">
<h:panelGrid columns="3">
<p:outputLabel value="NIF:" for="nif" />
<p:inputText id="nif" required="true" requiredMessage="Por favor, indque su NIF" />
<p:message for="nif" />
<p:outputLabel value="Nombre:" for="name" />
<p:inputText id="name" required="true" requiredMessage="Por favor, indique su nombre" />
<p:message for="name" />
<p:outputLabel value="Apellidos:" for="surname" />
<p:inputText id="surname" required="true" requiredMessage="Por favor, indique sus apellidos" />
<p:message for="surname" />
<p:outputLabel value="Correo electrónico:" for="email"/>
<p:inputText id="email" required="true" requiredMessage="Por favor, especifique su correo electrónico" />
<p:message for="email" />
<p:outputLabel value="Contraseña" for="password" />
<p:inputMask id="password" mask="*" required="true" requiredMessage="Por faovr, especifique una contraseña" maxlength="50" />
<p:message for="password" />
<p:outputLabel value="Repita su contraseña:" for="passwordRepeat" />
<p:inputMask id="passwordRepeat" mask="*" />
<p:message for="passwordRepeat" />
</h:panelGrid>
<h:panelGroup>
<h:panelGrid columns="3" >
<p:commandButton validateClient="true" value="Registrarse" update="mesgs" action="#{addPatientMBean.save}" icon="pi pi-check" />
<p:commandButton value="Volver" outcome="home" />
</h:panelGrid>
</h:panelGroup>
</p:panel>
</h:form>
</ui:define>
</ui:composition>
</ui:composition>
</html>

View File

@@ -0,0 +1,89 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<ui:composition template="../header.xhtml">
<h:outputScript>
function handleRequest(xhr, status, args) {
if(args.specs) {
PF('caps').hide();
$('#caps').fadeOut();
PF('especialidades').show()
$('#especialidades').fadeIn();
}
else if (args.caps) {
PF('especialidades').hide();
$('#especialidades').fadeOut();
PF('caps').show()
$('#caps').fadeIn();
}
}
</h:outputScript>
<ui:define name="content">
<h:form>
<p:messages id="mesgs" showDetail="true" closable="true" autoupdate="true" />
<p:panel id="tipoUsuario" header="Especifique el tipo de usuario que desea registrarse">
<h:panelGrid columns="2" style="margin-bottom:10px" cellpadding="5">
<p:selectOneRadio id="usertype" value="#{registerUser.userType}" unselectable="true" required="true" requiredMessage="Debe especificar un tipo de usuario">
<p:ajax listener="#{registerUser.onUserTypeChange}" update="medicalSpecialty" oncomplete="handleRequest(xhr, status, args)" />
<f:selectItems value="#{registerUser.userTypes}" />
</p:selectOneRadio>
</h:panelGrid>
</p:panel>
<p:panel id="RegisterUser" header="Registrarse en el sistema como paciente">
<h:panelGrid columns="3">
<p:outputLabel value="NIF:" for="nif" />
<p:inputText id="nif" value="#{registerUser.nif}" required="true" requiredMessage="Por favor, indque su NIF" />
<p:message for="nif" display="text" />
<p:outputLabel value="Especialidad médica:" for="medicalSpecialty" />
<p:selectOneMenu id="medicalSpecialty" value="#{registerUser.medicalSpecialty}" style="width:350px">
<f:selectItem itemLabel="Seleccione una especialidad médica..." itemValue="" noSelectionOption="true" />
<f:selectItems value="#{registerUser.medicalSpecialties}" var="c" itemDescription="#{c.description}" itemValue="#{c.id}" />
</p:selectOneMenu>
<p:message for="medicalSpecialty" />
<p:outputLabel value="Centro:" for="primaryHealthCareCenter" />
<p:selectOneMenu id="primaryHealthCareCenter" value="#{registerUser.medicalSpecialty}" style="width:350px">
<f:selectItem itemLabel="Seleccione una centro..." itemValue="" noSelectionOption="true" />
<f:selectItems value="#{registerUser.medicalSpecialties}" var="c" itemDescription="#{c.description}" itemValue="#{c.id}" />
</p:selectOneMenu>
<p:message for="primaryHealthCareCenter" />
<p:outputLabel value="Nombre:" for="name" />
<p:inputText id="name" value="#{registerUser.name}" required="true" requiredMessage="Por favor, indique su nombre" />
<p:message for="name" />
<p:outputLabel value="Apellidos:" for="surname" />
<p:inputText id="surname" value="#{registerUser.surname}" required="true" requiredMessage="Por favor, indique sus apellidos" />
<p:message for="surname" />
<p:outputLabel value="Correo electrónico:" for="email" />
<p:inputText id="email" value="#{registerUser.email}" required="true" requiredMessage="Por favor, especifique su correo electrónico" />
<p:message for="email" />
<p:outputLabel value="Contraseña" for="password" />
<p:password id="password" value="#{registerUser.password}" match="passwordRepeat" required="true" requiredMessage="Por favor, especifique una contraseña" maxlength="50"
feedback="true" promptLabel="Especifique una contraseña segura" weakLabel="La contraseña es débil" goodLabel="La contraseña es buena" strongLabel="La contraseña es segura"
validatorMessage="La contraseña y su verificación deben ser iguales" />
<p:message for="password" />
<p:outputLabel value="Verificación de contraseña:" for="passwordRepeat" />
<p:password id="passwordRepeat" value="#{registerUser.password}" required="true" requiredMessage="Por favor, escriba la verificación de su contraseña" maxlength="50" />
<p:message for="passwordRepeat" />
</h:panelGrid>
<h:panelGroup>
<h:panelGrid columns="3">
<p:commandButton validateClient="true" value="Registrarse" update="mesgs" action="#{registerUser.addNewUser}" icon="pi pi-check" />
<p:commandButton value="Volver" outcome="home" />
</h:panelGrid>
</h:panelGroup>
</p:panel>
</h:form>
</ui:define>
</ui:composition>
</html>