Browse Source

Agregacion de Provedores, ubicacion y login

master
Samuel Gamez 7 months ago
parent
commit
b6e1c86bca
  1. 42
      ProyectoInventario-ejb/src/java/xforce/bl/ProveedorBL.java
  2. 34
      ProyectoInventario-ejb/src/java/xforce/dao/ProveedorDAO.java
  3. 6
      ProyectoInventario-war/src/java/xforce/seguridad/DemoBeanLogin.java
  4. 3
      ProyectoInventario-war/src/java/xforce/vista/DemoBeanProducto.java
  5. BIN
      ProyectoInventario-war/web/Images/Usuario.png
  6. 57
      ProyectoInventario-war/web/index.xhtml
  7. 45
      ProyectoInventario-war/web/proveedorLista.xhtml
  8. 79
      ProyectoInventario-war/web/template/login.xhtml

42
ProyectoInventario-ejb/src/java/xforce/bl/ProveedorBL.java

@ -9,7 +9,11 @@ import java.util.Optional;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.faces.application.FacesMessage; import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext; import javax.faces.context.FacesContext;
import xforce.dao.EstadosDAO;
import xforce.dao.MarcaDAO;
import xforce.dao.ProveedorDAO; import xforce.dao.ProveedorDAO;
import xforce.modelo.Estados;
import xforce.modelo.Marca;
import xforce.modelo.Producto; import xforce.modelo.Producto;
import xforce.modelo.Proveedor; import xforce.modelo.Proveedor;
import xforce.msg.Mensaje; import xforce.msg.Mensaje;
@ -30,27 +34,51 @@ public class ProveedorBL implements ProveedorBLLocal {
ProveedorDAO pDAO = new ProveedorDAO(); ProveedorDAO pDAO = new ProveedorDAO();
Mensaje m; Mensaje m;
MarcaDAO marcaDAO = new MarcaDAO();
EstadosDAO estadosDao = new EstadosDAO();
//Toda la logica //Toda la logica
Estados estados = estadosDao.buscarId(proveedor.getEstadosId());
System.out.println("ASAASASA");
if (estados == null) {
System.out.println("El estado no existe. No se puede agregar el proveedor.");
return Mensaje.ESTADO_ERRONEO; // Agrega un mensaje de error específico para marca no existente
}
Marca marca = marcaDAO.buscarId(proveedor.getMarcaId());
System.out.println("ASAASASA");
if (marca == null) {
System.out.println("La ubicacion no existe. No se puede agregar el producto.");
return Mensaje.MARCA_ERRONEA; // Agrega un mensaje de error específico para marca no existente
}
if (proveedor.getNombre().isEmpty() if (proveedor.getNombre().isEmpty()
|| proveedor.getEmail().isEmpty() || proveedor.getEmail().isEmpty()
|| proveedor.getTelefono().isEmpty() || proveedor.getTelefono().isEmpty()
) { || proveedor.getEstadosId() == null
|| proveedor.getMarcaId() == null
|| proveedor.getDomicilio() == null) {
System.out.println("Campos incompletos"); System.out.println("Campos incompletos");
return Mensaje.CAMPOS_INCOMPLETOS; return Mensaje.CAMPOS_INCOMPLETOS;
} }
proveedor.setEstado(2); proveedor.setEstado(2);
Optional<Proveedor> pEncontradoOptional = pDAO.buscarproveedor(proveedor); Optional<Proveedor> pEncontradoOptional = pDAO.buscarproveedor(proveedor);
Optional<Proveedor> telEncontradoOptional = pDAO.buscarTelefono(proveedor);
if (pEncontradoOptional.isPresent()) { if (pEncontradoOptional.isPresent() && telEncontradoOptional.isPresent()) {
// Manejar el caso en el que se encontró al menos una marca // Manejar el caso en el que se encontró al menos una marca
System.out.println("Elemento duplicado"); System.out.println("Elemento duplicado");
addMessage(FacesMessage.SEVERITY_ERROR, "ERROR", "Elemento duplicado"); addMessage(FacesMessage.SEVERITY_ERROR, "ERROR", "Elemento duplicado");
m = Mensaje.ELEMENTO_DUPLICADO; m = Mensaje.ELEMENTO_DUPLICADO;
} else { } else {
System.out.println("ASAASASA");
pDAO.agregar(proveedor); pDAO.agregar(proveedor);
System.out.println("ASAASASA");
System.out.println("Agregado con exito"); System.out.println("Agregado con exito");
addMessage(FacesMessage.SEVERITY_INFO, "INFO", "Agregado con exito"); addMessage(FacesMessage.SEVERITY_INFO, "INFO", "Agregado con exito");
m = Mensaje.SIN_ERROR; m = Mensaje.SIN_ERROR;
@ -78,8 +106,7 @@ public class ProveedorBL implements ProveedorBLLocal {
ProveedorDAO p = new ProveedorDAO(); ProveedorDAO p = new ProveedorDAO();
if (proveedor.getNombre().isEmpty() || proveedor.getEmail().isEmpty() || proveedor.getTelefono().isEmpty() if (proveedor.getNombre().isEmpty() || proveedor.getEmail().isEmpty() || proveedor.getTelefono().isEmpty()) {
) {
System.out.println("Algunos campos son erroneos"); System.out.println("Algunos campos son erroneos");
m = m.CAMPOS_INCOMPLETOS; m = m.CAMPOS_INCOMPLETOS;
return m; return m;
@ -105,7 +132,8 @@ public class ProveedorBL implements ProveedorBLLocal {
addMessage(FacesMessage.SEVERITY_INFO, "INFO", "Editado con exito"); addMessage(FacesMessage.SEVERITY_INFO, "INFO", "Editado con exito");
m = m.SIN_ERROR; m = m.SIN_ERROR;
return m; return m;
}} else { }
} else {
System.out.println("No existe le proveedor a editar"); System.out.println("No existe le proveedor a editar");
m = m.CAMPOS_INCOMPLETOS; m = m.CAMPOS_INCOMPLETOS;
return m; return m;
@ -137,7 +165,6 @@ public class ProveedorBL implements ProveedorBLLocal {
} }
}*/ }*/
if (!idsMarcasReferenciadas.isEmpty()) { if (!idsMarcasReferenciadas.isEmpty()) {
System.out.println(idsMarcasReferenciadas.toString()); System.out.println(idsMarcasReferenciadas.toString());
@ -174,7 +201,6 @@ public class ProveedorBL implements ProveedorBLLocal {
return m; return m;
} }
@Override @Override
public List<Proveedor> buscarValidos(boolean estado) { public List<Proveedor> buscarValidos(boolean estado) {
ProveedorDAO proveedor = new ProveedorDAO(); ProveedorDAO proveedor = new ProveedorDAO();
@ -183,7 +209,6 @@ public class ProveedorBL implements ProveedorBLLocal {
return proveedor.buscarValidos(estado); return proveedor.buscarValidos(estado);
} }
@Override @Override
public Proveedor buscarNombre(Proveedor proveedor) { public Proveedor buscarNombre(Proveedor proveedor) {
ProveedorDAO p = new ProveedorDAO(); ProveedorDAO p = new ProveedorDAO();
@ -202,5 +227,4 @@ public class ProveedorBL implements ProveedorBLLocal {
addMessage("mensajeProveedor", new FacesMessage(severity, summary, detail)); addMessage("mensajeProveedor", new FacesMessage(severity, summary, detail));
} }
} }

34
ProyectoInventario-ejb/src/java/xforce/dao/ProveedorDAO.java

@ -29,7 +29,7 @@ public class ProveedorDAO {
public void agregar(Proveedor a) { public void agregar(Proveedor a) {
em.getTransaction().begin(); em.getTransaction().begin();
a.setEstado(2);
em.persist(a);//Almacenar en DB em.persist(a);//Almacenar en DB
em.getTransaction().commit(); em.getTransaction().commit();
} }
@ -72,6 +72,32 @@ public class ProveedorDAO {
q.setParameter("idProveedor", id); q.setParameter("idProveedor", id);
return q.getResultList(); return q.getResultList();
} }
public Optional<Proveedor> buscarTelefono(Proveedor p){
Query q = em.createNamedQuery("Proveedor.findByTelefono");
q.setParameter("telefono", p.getTelefono());
List<Proveedor> resTel = q.getResultList();
if(!resTel.isEmpty()){
Proveedor proveedorEncontrada = resTel.stream()
.filter(resTel::contains)
.findFirst()
.orElse(null);
return Optional.ofNullable(proveedorEncontrada);
} else{
return Optional.empty();
}
}
public Optional<Proveedor> buscarproveedor(Proveedor a) { public Optional<Proveedor> buscarproveedor(Proveedor a) {
Query ql = em.createNamedQuery("Proveedor.findByNombre"); Query ql = em.createNamedQuery("Proveedor.findByNombre");
@ -100,13 +126,19 @@ public class ProveedorDAO {
.filter(resEstado::contains) .filter(resEstado::contains)
.findFirst() .findFirst()
.orElse(null); .orElse(null);
return Optional.ofNullable(proveedorEncontrada); return Optional.ofNullable(proveedorEncontrada);
} else { } else {
return Optional.empty(); return Optional.empty();
} }
} }
public List<Proveedor> buscarValidos(boolean status) { public List<Proveedor> buscarValidos(boolean status) {
Query q = em.createNamedQuery("Proveedor.findByEstado"); Query q = em.createNamedQuery("Proveedor.findByEstado");
int s = status ? 2 : 1; int s = status ? 2 : 1;

6
ProyectoInventario-war/src/java/xforce/seguridad/DemoBeanLogin.java

@ -8,11 +8,9 @@ import javax.inject.Named;
import javax.enterprise.context.SessionScoped; import javax.enterprise.context.SessionScoped;
import java.io.Serializable; import java.io.Serializable;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.application.NavigationHandler; import javax.faces.application.NavigationHandler;
import javax.faces.context.FacesContext; import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import xforce.bl.LoginBL;
import xforce.bl.LoginBLLocal; import xforce.bl.LoginBLLocal;
import xforce.modelo.Usuarios; import xforce.modelo.Usuarios;
import xforce.msg.Mensaje; import xforce.msg.Mensaje;
@ -151,14 +149,14 @@ public class DemoBeanLogin implements Serializable {
case "admin": case "admin":
permisos = true; permisos = true;
break; break;
case "vendedor": case "auxiliar":
permisos = false; permisos = false;
break; break;
case "gestor": case "gestor":
permisos = false; permisos = false;
break; break;
default: default:
throw new AssertionError(); permisos = false;
} }
} }

3
ProyectoInventario-war/src/java/xforce/vista/DemoBeanProducto.java

@ -7,8 +7,6 @@ package xforce.vista;
import javax.inject.Named; import javax.inject.Named;
import javax.enterprise.context.SessionScoped; import javax.enterprise.context.SessionScoped;
import java.io.Serializable; import java.io.Serializable;
import java.time.Instant;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import javax.ejb.EJB; import javax.ejb.EJB;
@ -17,7 +15,6 @@ import org.primefaces.model.SortMeta;
import org.primefaces.util.LangUtils; import org.primefaces.util.LangUtils;
import xforce.bl.ProductoBLLocal; import xforce.bl.ProductoBLLocal;
import xforce.modelo.Producto; import xforce.modelo.Producto;
import xforce.modelo.Tipo;
import xforce.msg.Mensaje; import xforce.msg.Mensaje;
/** /**

BIN
ProyectoInventario-war/web/Images/Usuario.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

57
ProyectoInventario-war/web/index.xhtml

@ -2,63 +2,24 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!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" <html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:p="http://primefaces.org/ui"> xmlns:p="http://primefaces.org/ui"
<h:head> xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<h:outputStylesheet name="./css/default.css"/>
<h:outputStylesheet name="./css/cssLayout.css"/>
<title>Facelets Template</title>
<style>
</style>
</h:head>
<center>
<h:body style="text-align: center">
<h2> Inventario almacen </h2>
<h:form id="formLogin">
<p:growl id="growl" showDetail="true" for="mensajeLogin"/>
<p:panel header="Login" style="width:300px"> <h:head>
<h:body>
<h:panelGrid columns="1" cellpadding="5"> <ui:composition template="./template/login.xhtml">
<ui:define name="contet">
<p:inputText id="usuario"
value="#{demoBeanLogin.usuarios.nombre}"
title='nombre'
required="true"
requiredMessage="Este campo no puede estar vacio"
placeholder="Ingrese el usuario">
</p:inputText>
<p:password id="contrasenia"
value="#{demoBeanLogin.usuarios.contrasenia}"
title="contraseña"
redisplay="true"
required="true"
requiredMessage="Este campo no puede estar vacio"
placeholder="Ingrse la contraseña"
style="width: 223px">
</p:password>
<p:commandButton value="Login"
action="#{demoBeanLogin.login()}"
ajax="false"
update=":formLogin"/>
</h:panelGrid>
</ui:define>
</p:panel>
</h:form> </ui:composition>
</h:body> </h:body>
</center> </h:head>
</html> </html>

45
ProyectoInventario-war/web/proveedorLista.xhtml

@ -170,15 +170,15 @@
</p:column> </p:column>
<p:column responsivePriority="1" style="text-align: center;"> <p:column responsivePriority="1" style="text-align: center;">
<f:facet name="header"> <f:facet name="header">
<h:outputText value="EstadosId"/> <h:outputText value="Estado"/>
</f:facet> </f:facet>
<h:outputText value="#{item.estadosId}"/> <h:outputText value="#{item.estadosId.nombre}"/>
</p:column> </p:column>
<p:column responsivePriority="1" style="text-align: center;"> <p:column responsivePriority="1" style="text-align: center;">
<f:facet name="header"> <f:facet name="header">
<h:outputText value="MarcaId"/> <h:outputText value="Marca"/>
</f:facet> </f:facet>
<h:outputText value="#{item.marcaId}"/> <h:outputText value="#{item.marcaId.nombre}"/>
</p:column> </p:column>
@ -286,25 +286,29 @@
<p:outputLabel value="Domicilio:" for="domicilio" /> <p:outputLabel value="Domicilio:" for="domicilio" />
<p:inputText id="domicilio" value="#{demoBeanProveedor.proveedor.domicilio}"
<p:inputText id="domicilio"
value="#{demoBeanProveedor.proveedor.domicilio}"
title="Domicilio" title="Domicilio"
required="true" required="true"
requiredMessage="The Domicilio field is required."/> 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:message id="d" for="domicilio"/> <p:message id="d" for="domicilio"/>
<p:outputLabel value="EstadosId:" for="estadosId" />
<p:outputLabel value="Estados:" for="estadosId" />
<p:selectOneMenu id="estadosId" <p:selectOneMenu id="estadosId"
value="#{demoBeanProveedor.proveedor.estadosId}" value="#{demoBeanProveedor.proveedor.estadosId}"
converter="selectOneMenuConverter"
required="true" required="true"
requiredMessage="The EstadosId field is required." filter="true" requiredMessage="Estado requerido"
filter="true"
filterMatchMode="startsWith" > filterMatchMode="startsWith" >
<!-- Arriba esta lo del filtro, jsjsjsjs -->
<!-- TODO: update below reference to list of available items--> <!-- TODO: update below reference to list of available items-->
<f:selectItems value="#{demoBeanEstados.estados}" <f:selectItems value="#{demoBeanEstados.estados}"
@ -313,10 +317,15 @@
itemValue="#{item}"/> itemValue="#{item}"/>
</p:selectOneMenu> </p:selectOneMenu>
<p:message id="eid" for="estadosId"/> <p:message id="eid" for="estadosId"/>
<p:outputLabel value="Marca:" for="marcaId" /> <p:outputLabel value="Marca:" for="marcaId" />
<p:selectOneMenu id="marcaId" <p:selectOneMenu id="marcaId"
value="#{demoBeanProveedor.proveedor.marcaId}" value="#{demoBeanProveedor.proveedor.marcaId}"
converter="selectOneMenuConverter"
required="true" required="true"
requiredMessage="The MarcaId field is required." requiredMessage="The MarcaId field is required."
filter="true" filter="true"
@ -328,7 +337,10 @@
var="item" var="item"
itemLabel="#{item.nombre}" itemLabel="#{item.nombre}"
itemValue="#{item}"/> itemValue="#{item}"/>
</p:selectOneMenu> </p:selectOneMenu>
<p:message id="m" for="marcaId"/> <p:message id="m" for="marcaId"/>
@ -396,6 +408,11 @@
<h:outputText value="#{demoBeanProveedor.proveedor.email}" title="Email"/> <h:outputText value="#{demoBeanProveedor.proveedor.email}" title="Email"/>
<h:outputText value="Estado:"/> <h:outputText value="Estado:"/>
<h:outputText value="#{demoBeanProveedor.proveedor.estado}" title="Estado"/> <h:outputText value="#{demoBeanProveedor.proveedor.estado}" title="Estado"/>
<h:outputText value="Local:"/>
<h:outputText value="#{demoBeanProveedor.proveedor.estadosId.nombre}" title="Email"/>
<h:outputText value="marca:"/>
<h:outputText value="#{demoBeanProveedor.proveedor.marcaId.nombre}" title="Estado"/>
</p:panelGrid> </p:panelGrid>
<p:commandButton action="#{demoBeanProveedor.eliminarProveedor()}" <p:commandButton action="#{demoBeanProveedor.eliminarProveedor()}"

79
ProyectoInventario-war/web/template/login.xhtml

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
Click nbfs://nbhost/SystemFileSystem/Templates/JSP_Servlet/XHtml.xhtml to edit this template
-->
<!DOCTYPE html>
<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:p="http://primefaces.org/ui">
<head>
<title>Ingreso</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<h:outputStylesheet name="./css/default.css"/>
<h:outputStylesheet name="./css/cssLayout.css"/>
</head>
<center>
<h:body style="text-align: center; background-color:#ffffff ">
<div class="titulo" id="top">
<center>
<h class="centro">Almacen</h>
</center>
</div>
<h:form id="formLogin">
<p:growl id="growl" showDetail="true" for="mensajeLogin"/>
<p:panel header="Inicio de sesion" style="width:300px">
<h:panelGrid style="margin-bottom: 100px">
<img src="../Images/Usuario.png" alt="" width="105" height="110"/>
</h:panelGrid>
<h:panelGrid columns="1" cellpadding="5">
<p:inputText id="usuario"
value="#{demoBeanLogin.usuarios.nombre}"
title='nombre'
required="true"
requiredMessage="Este campo no puede estar vacio"
placeholder="Ingrese el usuario">
</p:inputText>
<p:password id="contrasenia"
value="#{demoBeanLogin.usuarios.contrasenia}"
title="contraseña"
redisplay="true"
required="true"
requiredMessage="Este campo no puede estar vacio"
placeholder="Ingrese la contraseña">
</p:password>
<p:commandButton icon="pi pi-check"
style="width: 60px"
action="#{demoBeanLogin.login()}"
ajax="false"
update=":formLogin"/>
</h:panelGrid>
</p:panel>
</h:form>
</h:body>
</center>
</html>
Loading…
Cancel
Save