<?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://xmlns.jcp.org/jsf/facelets" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:p="http://primefaces.org/ui"> <body> <ui:composition template="./template/listas.xhtml"> <ui:define name="top"> </ui:define> <ui:define name="content"> <f:view> <f:metadata> <f:viewParam name="rol" value="#{demoBeanLogin.rol}" /> <f:event type="preRenderView" listener="#{demoBeanLogin.verificarAcceso('admin','usuariosLista')}" /> </f:metadata> <div> <h:form> <p:menubar > <p:menuitem value="Productos" action="productoLista.xhtml" ajax="false"/> <p:menuitem value="Marcas" action="marcaLista.xhtml" ajax="false"/> <p:menuitem value="Proveedores" action="proveedorLista.xhtml" ajax="false"/> <p:menuitem value="Ubicaciones" action="ubicacionLista.xhtml" ajax="false"/> <p:menuitem value="Usuarios" action="usuariosLista.xhtml" disabled="true" ajax="false"/> <p:submenu label="Opciones" icon="pi pi-fw pi-list"> <p:menuitem value="Paises" icon="pi pi-globe" oncomplete="PF('pais').show()" update="paisDialog" actionListener="#{demoBeanPaises.prepararNuevo()}" rendered="#{demoBeanLogin.agregaciones == true}"/> <p:menuitem value="Estados" icon="pi pi-map" oncomplete="PF('estado').show()" update="estadosDialog" actionListener="#{demoBeanEstados.prepararNuevo()}" rendered="#{demoBeanLogin.agregaciones == true}"/> <p:menuitem value="Tipos" icon="pi pi-tags" oncomplete="PF('tipo').show()" update="tip" actionListener="#{demoBeanTipo.prepararNuevo()}" rendered="#{demoBeanLogin.agregaciones == true}" /> <!-- <p:divider />--> </p:submenu> </p:menubar> </h:form> <!-- dialogos externos --> <p:dialog id="rolD" widgetVar="rol" responsive="true" showEffect="fade" modal="true" resizable="false"> <ui:include src="roles.xhtml"/> </p:dialog> <p:dialog id="paisDialog" widgetVar="pais" responsive="true" showEffect="fade" modal="true" resizable="false" style="height: auto"> <ui:include src="paises.xhtml"/> </p:dialog> <p:dialog id="estadosDialog" widgetVar="estado" responsive="true" showEffect="fade" modal="true" resizable="false" style="height: auto"> <ui:include src="estados.xhtml"/> </p:dialog> <p:dialog id="tip" widgetVar="tipo" responsive="true" showEffect="fade" modal="true" resizable="false" style="height: auto"> <ui:include src="tipos.xhtml"/> </p:dialog> </div> <h:form id="userTable"> <p:growl id="messages" showDetail="true"/> <p:dataTable id="table" value="#{demoBeanUsuarios.usuarios}" var="item" filteredValue="#{demoBeanUsuarios.usuariosFilter}" globalFilterFunction="#{demoBeanUsuarios.globalFilterFunction}" widgetVar="filter" paginator="true" rows="10" rowSelectMode="add" paginatorPosition="bottom" resizableColumns="true" showGridlines="true" > <f:facet name="header" > <div style="display: flex; align-items: center;"> <div style="flex: 1;"> <p:commandButton actionListener="#{demoBeanUsuarios.prepararNuevo()}" oncomplete="PF('user').show()" update=":dialogForm" value="Nuevo" icon="pi pi-plus" style="margin-top: 5px;" ajax="true" disabled="#{!demoBeanLogin.permisos}"/> </div> <div style="flex: 1; text-align: center;"> <!-- Div para el texto centrado --> <header style="display: flex; justify-content: center; font-size: 30px;"><strong>Usuarios</strong></header> </div> <div style="flex: 1; text-align: right;"> <div class="ui-input-icon-left mr-2" > <i class="pi pi-fw pi-search" /> <p:inputText id="globalFilter" onkeyup="PF('filter').filter()" placeholder="Buscar usuario" /> </div> </div> </div> </f:facet> <p:column responsivePriority="1" style="text-align: center;"> <f:facet name="header"> <h:outputText value="Nombre"/> </f:facet> <h:outputText value="#{item.nombre}"/> </p:column> <p:column responsivePriority="2" style="text-align: center;"> <f:facet name="header"> <h:outputText value="Apellido P"/> </f:facet> <h:outputText value="#{item.apellidoPaterno}"/> </p:column> <p:column responsivePriority="2" style="text-align: center;"> <f:facet name="header"> <h:outputText value="Contraseña"/> </f:facet> <h:outputText value="#{item.contrasenia}"/> </p:column> <p:column responsivePriority="3" style="text-align: center;"> <f:facet name="header"> <h:outputText value="Rol"/> </f:facet> <h:outputText value="#{item.rolesId.rol}"/> </p:column> <p:column responsivePriority="3" style="text-align: center;"> <f:facet name="header"> <h:outputText value="Email"/> </f:facet> <h:outputText value="#{item.email}"/> </p:column> <p:column responsivePriority="4" style="text-align: center;"> <f:facet name="header"> <h:outputText value="Telefono"/> </f:facet> <h:outputText value="#{item.telefono}"/> </p:column> <p:column responsivePriority="3" style="text-align: center;"> <f:facet name="header"> <h:outputText value="Estado"/> </f:facet> <h:outputText value="#{item.estadosId.nombre}"/> </p:column> <p:column responsivePriority="4" style="text-align: center;"> <f:facet name="header"> <h:outputText value="Domicilio"/> </f:facet> <h:outputText value="#{item.domicilio}"/> </p:column> <p:column responsivePriority="5" style="text-align: center;"> <f:facet name="header"> <h:outputText value="Estatus"/> </f:facet> <h:outputText value="#{item.estado == 2 ? 'Activo':'Inactivo'}"/> </p:column> <p:column responsivePriority="6" style="text-align: center;"> <f:facet name="header"> <h:outputText value="Opciones"/> </f:facet> <p:commandButton actionListener="#{demoBeanUsuarios.rellenarEditar(item)}" oncomplete="PF('user').show()" update=":dialogForm" icon="pi pi-fw pi-pencil" styleClass="ui-button-secondary" ajax="true" disabled="#{!demoBeanLogin.permisos}"/> <p:commandButton actionListener="#{demoBeanUsuarios.prepararEliminar(item)}" icon="pi pi-trash" style="margin-left: 5px" oncomplete="PF('userD').show()" update=":dialogDelete" styleClass="ui-button-danger" ajax="true" disabled="#{!demoBeanLogin.permisos}"/> </p:column> </p:dataTable> </h:form> <p:dialog id="dialogForm" header="#{demoBeanUsuarios.titulo}" widgetVar="user" responsive="true" showEffect="fade" modal="true" resizable="false"> <h:form> <p:growl id="growl" showDetail="true" for="mensajeUsuario"/> <h:panelGrid columns="6" cellpadding="7"> <p:outputLabel value="Nombre:" for="nombre" /> <p:inputText id="nombre" value="#{demoBeanUsuarios.usuario.nombre}" title="Nombre" required="true" validatorMessage="nombre no valido" requiredMessage="Este campo no puede estar vacio" style="width: 223px"> <f:validateRegex pattern="\b[A-ZÁÉÍÓÚÜÑ][a-záéíóúüñ]{1,}(?:\s+[A-ZÁÉÍÓÚÜÑ][a-záéíóúüñ]{1,})*\b" for="nombre" /> </p:inputText> <p:outputLabel value="Apellido Paterno:" for="apellidoPaterno" /> <p:inputText id="apellidoPaterno" value="#{demoBeanUsuarios.usuario.apellidoPaterno}" title="ApellidoPaterno" required="true" validatorMessage="apellido no valido" requiredMessage="Este campo no puede estar vacio" style="width: 223px"> <f:validateRegex pattern="^\b[A-ZÁÉÍÓÚÜÑ][a-záéíóúüñ]{1,}\b$" for="apellidoPaterno" /> </p:inputText> <p:outputLabel value="Rol" for="rolId" /> <p:selectOneMenu id="rolId" value="#{demoBeanUsuarios.usuario.rolesId}" converter="selectOneMenuConverter" required="true" requiredMessage="Se necesita un rol" filter="true" filterMatchMode="startsWith"> <f:selectItems value="#{demoBeanRoles.roles}" var="item" itemLabel="#{item.rol}" itemValue="#{item}"/> </p:selectOneMenu> <p:outputLabel></p:outputLabel> <p:message id="alert" for="nombre"/> <p:outputLabel></p:outputLabel> <p:message id="alertA" for="apellidoPaterno"/> <p:outputLabel></p:outputLabel> <p:message id="alertRol" for="rolId" /> <p:outputLabel value="Contraseña:" for="contraseña"/> <p:password id="contraseña" value="#{demoBeanUsuarios.usuario.contrasenia}" title="contraseña" toggleMask="true" redisplay="true" required="true" validatorMessage="contraseña no valida" requiredMessage="Este campo no puede estar vacio" feedback="true" placeholder="mayusculas y numeros" promptLabel="Ingresa tu contraseña" weakLabel="Débil" goodLabel="Buena" strongLabel="Fuerte" style="width: 223px"> <f:validateRegex pattern="^(?=.*[A-Z])(?=.*\d).+$" for="contraseña"/> </p:password> <p:outputLabel value="Email:" for="email" /> <p:inputText id="email" value="#{demoBeanUsuarios.usuario.email}" title="Email" required="true" validatorMessage="correo no valido" requiredMessage="Este campo no puede estar vacio" style="width: 223px"> <f:validateRegex pattern="^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$" for="email" /> </p:inputText> <p:outputLabel value="Telefono:" for="telefono" /> <p:inputText id="telefono" value="#{demoBeanUsuarios.usuario.telefono}" title="Telefono" required="true" validatorMessage="numero de telefono no valido" requiredMessage="Este campo no puede estar vacio" style="width: 223px"> <f:validateRegex pattern="^\d{10}$" for="telefono" /> </p:inputText> <p:outputLabel></p:outputLabel> <p:message id="alertC" for="contraseña"/> <p:outputLabel></p:outputLabel> <p:message id="alertE" for="email"/> <p:outputLabel></p:outputLabel> <p:message id="alertT" for="telefono"/> <p:outputLabel value="Domicilio:" for="domicilio" /> <p:inputText id="domicilio" value="#{demoBeanUsuarios.usuario.domicilio}" title="Domicilio" required="true" validatorMessage="domicilio no valido" requiredMessage="Este campo no puede estar vacio" style="width: 223px"> <f:validateRegex pattern="^[A-Z].*#\d+.*" for="domicilio" /><!-- validar Domicilio --> </p:inputText> <p:outputLabel value="Estado" for="state" /> <p:selectOneMenu id="state" value="#{demoBeanUsuarios.usuario.estadosId}" converter="selectOneMenuConverter" required="true" requiredMessage="Se necesita un estado" filter="true" filterMatchMode="startsWith"> <f:selectItems value="#{demoBeanEstados.estados}" var="item" itemLabel="#{item.nombre}" itemValue="#{item}"/> </p:selectOneMenu> <p:outputLabel></p:outputLabel> <p:message id="alertS" for="state" /> <p:outputLabel></p:outputLabel> <p:message id="alertD" for="domicilio"/> </h:panelGrid> <footer style="display: flex; margin-top: 20px; justify-content: flex-end;"> <p:commandButton action="#{demoBeanUsuarios.agregar()}" rendered="#{demoBeanUsuarios.nuevo}" update="growl,userTable:table,nombre,apellidoPaterno,email,telefono,contraseña,domicilio,state,rolId,alert,alertA,alertE,alertT,alertC,alertD,alertRol,alertS" styleClass="ui-button-success" style="width: 50px;" icon="pi pi-save" ajax="true"/> <p:commandButton action="#{demoBeanUsuarios.editarUsuario()}" icon="pi pi-save" styleClass="ui-button-success" update="growl,userTable:table,nombre,apellidoPaterno,email,telefono,contraseña,domicilio,state,rolId,alert,alertA,alertE,alertT,alertC,alertD,alertRol,alertS" style="width: 50px;" rendered="#{!demoBeanUsuarios.nuevo}" ajax="true"/> <p:commandButton action="usuariosLista.xhtml" style="margin-left: 5px; width: 50px; " immediate="true" icon="pi pi-times" ajax="false" styleClass="ui-button-danger"/> </footer> </h:form> </p:dialog> <p:dialog id="dialogDelete" header="#{demoBeanUsuarios.titulo}" widgetVar="userD" responsive="true" showEffect="fade" modal="true" resizable="false"> <h:form> <h:panelGrid columns="2" cellpadding="7"> <h:outputText value="Nombre:" style="font-weight: bold;"/> <h:outputText value="#{demoBeanUsuarios.usuario.nombre}" title="Nombre"/> <h:outputText value="ApellidoPaterno:" style="font-weight: bold;"/> <h:outputText value="#{demoBeanUsuarios.usuario.apellidoPaterno}" title="ApellidoPaterno"/> <h:outputText value="Contraseña:" style="font-weight: bold;"/> <h:outputText value="#{demoBeanUsuarios.usuario.contrasenia}" title="Contraseña"/> <h:outputText value="Rol:" style="font-weight: bold;"/> <h:outputText value="#{demoBeanUsuarios.usuario.rolesId.rol}" title="Rol"/> <h:outputText value="Email:" style="font-weight: bold;"/> <h:outputText value="#{demoBeanUsuarios.usuario.email}" title="Email"/> <h:outputText value="Telefono:" style="font-weight: bold;"/> <h:outputText value="#{demoBeanUsuarios.usuario.telefono}" title="Telefono"/> <h:outputText value="Estado:" style="font-weight: bold;"/> <h:outputText value="#{demoBeanUsuarios.usuario.estadosId.nombre}" title="Estado"/> <h:outputText value="Domicilio:" style="font-weight: bold;"/> <h:outputText value="#{demoBeanUsuarios.usuario.domicilio}" title="Domicilio"/> <h:outputText value="Estatus:" style="font-weight: bold;"/> <h:outputText value="#{demoBeanUsuarios.usuario.estado == 2 ? 'Activo':'Inactivo'}" title="Estatus"/> </h:panelGrid> <footer style="display: flex; margin-top: 20px; justify-content: flex-end;"> <p:commandButton actionListener="#{demoBeanUsuarios.eliminarUsuario()}" ajax="true" icon="pi pi-trash" update="userTable:table" styleClass="ui-button-warning" style=" width: 50px; " disabled="#{demoBeanUsuarios.usuario.nombre eq demoBeanLogin.user}" /> <p:commandButton action="usuariosLista.xhtml" immediate="true" ajax="false" icon="pi pi-times" styleClass="ui-button-danger" style="margin-left: 5px; width: 50px;" /> </footer> </h:form> </p:dialog> </f:view> </ui:define> </ui:composition> </body> </html>