Vistas de página en total

martes, 16 de diciembre de 2014

Actualización de datos

Ahora haremos que el usuario realize una modificacion a sus datos, siempre y cuando haya un errror en ellos puede que el nombre se escribio mal o falto algo asi que lo que haremos sera que cuando se oprima el boton de actualizar carge un cuadro de dialogo con los datos actuales del usuario y con la facilidad de correguirlos y una vez hecho esto en el boton del dialogo sera que actualizara no solo los datos sino tambien el formulario donde se muestra la informacion del usuario para evitarnos el F5 o actualizar la pagina sino que lo hara de manera automatica.

Para ello modificaremos primero nuestro frondend de usuario y el dao respectivamente y quedarian asi:

public interface FrondEndUser {
    public boolean registerUsers(Session session, Usuarios user) throws Exception;
    public List<Usuarios> listAllUsers(Session session) throws Exception;
    public boolean updateUsers(Session session, Usuarios user) throws Exception;
    public Usuarios deleteUsers(int id) throws Exception;
    public Usuarios getByEmail(Session session, String email) throws Exception;
    public Usuarios getByUserName(Session session, String name) throws Exception;
}


El metodo en el dao es el siguiente:

   @Override
    public boolean updateUsers(Session session, Usuarios user) throws Exception {
        //agregamos la session para la actualizacion de los datos con los parametros
        session.update(user);
        //retornamos
        return true;
    }


Despues modificaremos el managedBean con el metodo de actualizar:

    public void updateUser(){
        /*inicializamos para asegurarnos*/
        this.session = null;
        this.transaction = null;
     
        try {
             /*creamos el dao que utilizaremos*/
             usersDAO uDAO = new usersDAO();
             //abrimos sesion de conexcion
             session = HibernateUtil.getSessionFactory().openSession();
             //creamos la transaccion y la comenzamos
             transaction = session.beginTransaction();
             /*instanciamos los objetos*/
             usersDAO daoUsers = new usersDAO();
             /*mandamos a llamar los metodos que utilizaremos*/
             daoUsers.updateUsers(session, user);
             FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Exito", "Datos actualizados Exitosamente"));
             transaction.commit();//cerrar transaccion
             //esta forma limpiamos el formulario sin usar el js
             user = new Usuarios();
             user.setIdusuarios(null);
        } catch (Exception e) {
            //verificamos sino hay ya una transaccion ya definida
            if(transaction != null){
                //si lo hay haremos que todo se revierta en la BD y que como estaba antes de utilizar este metodo
                transaction.rollback();
            }
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "Error Fatal", "Contacte con su administrador "+e.getMessage()));
        }finally{
            //verificamos sino hay ya una session ya definida
            if(session != null){
                //si lo hay cerramos la session
                session.close();
            }
        }
     
    }

y en el formulario de Datos personales debe quedar asi:

<h2>Mis datos</h2>
                <hr />
                <h:form id="formDataUser">
                    <p:growl id="msjGral" showDetail="true" sticky="false" />
                    <p:dataTable id="tablaTUsuario" var="item" value="#{managedBeanUser.byUserNamel}" paginator="false" rows="1">  
                        <p:column headerText="Nombre">
                            <h:outputText value="#{item.nombres}"/>
                        </p:column>
                        <p:column headerText="Apellido paterno">
                            <h:outputText value="#{item.ap}"/>
                        </p:column>
                        <p:column headerText="Apellido materno">
                            <h:outputText value="#{item.am}"/>
                        </p:column>
                        <p:column headerText="Correo electrónico">
                            <h:outputText value="#{item.email}"/>
                        </p:column>
                        <p:column headerText="Fecha de nacimiento">
                            <h:outputText value="#{item.fechaNacimiento}"/>
                        </p:column>
                        <p:column headerText="Sexo">
                            <h:outputText value="#{item.sexo}"/>
                        </p:column>
                        <p:column headerText="Direccion">
                            <h:outputText value="#{item.direccion}"/>
                        </p:column>
                        <p:column headerText="">
                            <p:commandButton value="Actualizar datos" onclick="PF('dialogEditUser').show()"/>
                        </p:column>
                    </p:dataTable>
                   
                    <p:dialog header="Datos del usuario" widgetVar="dialogEditUser" modal="true">
                        <h:panelGrid columns="3">
                            <p:outputLabel value="Nombre" for="txtNombre"/>
                            <p:inputText id="txtNombre" label="Nombre" value="#{managedBeanUser.user.nombres}">
                                <f:validator validatorId="ValidateEmptyFields"/>
                            </p:inputText>
                            <p:message for="txtNombre"/>
                            <p:outputLabel value="Apellido paterno" for="txtApellidoPaterno"/>
                            <p:inputText id="txtApellidoPaterno" label="Apellido paterno"  value="#{managedBeanUser.user.ap}">
                                <f:validator validatorId="ValidateEmptyFields"/>
                            </p:inputText>
                            <p:message for="txtApellidoPaterno"/>
                            <p:outputLabel value="Apellido materno" for="txtApellidoMaterno"/>
                            <p:inputText id="txtApellidoMaterno" label="Apellido materno" value="#{managedBeanUser.user.am}">
                                <f:validator validatorId="ValidateEmptyFields"/>
                            </p:inputText>
                            <p:message for="txtApellidoMaterno"/>
                            <p:outputLabel for="perfile" value="Perfil" />
                            <p:selectOneMenu id="perfile" value="#{managedBeanUser.getUser().perfil}" style="width:125px">
                                <f:selectItem itemLabel="Seleccionar" itemValue="" />
                                <f:selectItem itemLabel="Administrador" itemValue="Administrador" />
                                <f:selectItem itemLabel="Empleado" itemValue="Empleado" />
                                <f:selectItem itemLabel="Externo" itemValue="Externo" />
                            </p:selectOneMenu>
                            <h:panelGroup></h:panelGroup>
                            <p:outputLabel value="Correo electrónico" for="txtCorreoElectronico"/>
                            <p:inputText id="txtCorreoElectronico" label="Correo electrónico" title="Ejem: username@dominio.com" value="#{managedBeanUser.user.email}">
                                <f:validator validatorId="ValidateEmptyFields"/>
                                <f:validator validatorId="ValidateEmail"/>
                            </p:inputText>
                            <h:panelGroup>
                                <p:tooltip for="txtCorreoElectronico" showEvent="focus" hideEvent="blur"/>
                                <p:message for="txtCorreoElectronico"/>
                            </h:panelGroup>
                            <p:outputLabel value="Fecha de Nacimiento" for="txtFechaNacimiento"/>
                            <p:calendar id="txtFechaNacimiento" label="Fecha de nacimiento" showOn="button" title="Ejemplo: dd/mm/yyyy" value="#{managedBeanUser.user.fechaNacimiento}" pattern="dd/MM/yyyy" required="true" requiredMessage="Fecha de nacimiento es requerido"/>
                            <p:message for="txtFechaNacimiento"/>
                            <h:outputLabel value="Sexo" for="radSex"/>
                            <p:selectOneRadio id="radSex" label="Sexo" value="#{managedBeanUser.getUser().sexo}">
                                <f:selectItem itemLabel="Hombre" itemValue="H"/>
                                <f:selectItem itemLabel="Mujer" itemValue="M"/>
                            </p:selectOneRadio>
                            <h:panelGroup></h:panelGroup>
                            <h:panelGroup></h:panelGroup>
                            <p:commandButton value="Guardar cambios"  actionListener="#{managedBeanUser.updateUser()}" update="formDataUser"/>
                        </h:panelGrid>
                    </p:dialog>                
                </h:form>


Finalmente queda asi corriendo:





No hay comentarios:

Publicar un comentario