From b6e1c86bcaa82fda474e4a7cb6c4d0c90f06e40b Mon Sep 17 00:00:00 2001 From: Samuel Gamez Date: Fri, 10 May 2024 10:05:37 -0500 Subject: [PATCH] Agregacion de Provedores, ubicacion y login --- .../src/java/xforce/bl/ProveedorBL.java | 136 ++++++++++-------- .../src/java/xforce/bl/UbicacionBL.java | 16 +-- .../src/java/xforce/dao/ProveedorDAO.java | 34 ++++- .../java/xforce/seguridad/DemoBeanLogin.java | 6 +- .../java/xforce/vista/DemoBeanProducto.java | 3 - .../java/xforce/vista/DemoBeanUbicacion.java | 6 +- ProyectoInventario-war/web/Images/Usuario.png | Bin 0 -> 19293 bytes ProyectoInventario-war/web/index.xhtml | 59 ++------ .../web/proveedorLista.xhtml | 59 +++++--- .../web/template/login.xhtml | 79 ++++++++++ 10 files changed, 253 insertions(+), 145 deletions(-) create mode 100644 ProyectoInventario-war/web/Images/Usuario.png create mode 100644 ProyectoInventario-war/web/template/login.xhtml diff --git a/ProyectoInventario-ejb/src/java/xforce/bl/ProveedorBL.java b/ProyectoInventario-ejb/src/java/xforce/bl/ProveedorBL.java index fc37bc0..7b4a388 100644 --- a/ProyectoInventario-ejb/src/java/xforce/bl/ProveedorBL.java +++ b/ProyectoInventario-ejb/src/java/xforce/bl/ProveedorBL.java @@ -9,7 +9,11 @@ import java.util.Optional; import javax.ejb.Stateless; import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; +import xforce.dao.EstadosDAO; +import xforce.dao.MarcaDAO; import xforce.dao.ProveedorDAO; +import xforce.modelo.Estados; +import xforce.modelo.Marca; import xforce.modelo.Producto; import xforce.modelo.Proveedor; import xforce.msg.Mensaje; @@ -27,32 +31,56 @@ public class ProveedorBL implements ProveedorBLLocal { public Mensaje agregar(Proveedor proveedor) { System.out.println("Llegaste al metodo de agregar proveedor"); - + ProveedorDAO pDAO = new ProveedorDAO(); Mensaje m; + MarcaDAO marcaDAO = new MarcaDAO(); + EstadosDAO estadosDao = new EstadosDAO(); + //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() - ||proveedor.getEmail().isEmpty() - ||proveedor.getTelefono().isEmpty() - ) { + || proveedor.getEmail().isEmpty() + || proveedor.getTelefono().isEmpty() + || proveedor.getEstadosId() == null + || proveedor.getMarcaId() == null + || proveedor.getDomicilio() == null) { System.out.println("Campos incompletos"); return Mensaje.CAMPOS_INCOMPLETOS; } proveedor.setEstado(2); Optional pEncontradoOptional = pDAO.buscarproveedor(proveedor); + Optional telEncontradoOptional = pDAO.buscarTelefono(proveedor); - if (pEncontradoOptional.isPresent()) { + if (pEncontradoOptional.isPresent() && telEncontradoOptional.isPresent()) { // Manejar el caso en el que se encontró al menos una marca - + System.out.println("Elemento duplicado"); - addMessage(FacesMessage.SEVERITY_ERROR,"ERROR","Elemento duplicado"); + addMessage(FacesMessage.SEVERITY_ERROR, "ERROR", "Elemento duplicado"); m = Mensaje.ELEMENTO_DUPLICADO; } else { + System.out.println("ASAASASA"); + pDAO.agregar(proveedor); + System.out.println("ASAASASA"); + 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; } return m; @@ -73,18 +101,17 @@ public class ProveedorBL implements ProveedorBLLocal { @Override public Mensaje editar(Proveedor proveedor) { - Mensaje m = null; + Mensaje m = null; try { - + 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"); m = m.CAMPOS_INCOMPLETOS; return m; } - Optional marcaEncontradoOptional = p.buscarproveedor(proveedor); + Optional marcaEncontradoOptional = p.buscarproveedor(proveedor); if (marcaEncontradoOptional.isPresent()) { // Manejar el caso en el que se encontró al menos una marca @@ -99,21 +126,22 @@ public class ProveedorBL implements ProveedorBLLocal { if (mark != null) { // Copiar los valores de los atributos (excepto estado) al producto existente mark.setNombre(proveedor.getNombre()); - // Editar el usuario solo si todas las validaciones son exitosas - if (p.editar(proveedor) == true) { - System.out.println("Editado con exito"); - addMessage(FacesMessage.SEVERITY_INFO,"INFO","Editado con exito"); - m = m.SIN_ERROR; - return m; - }} else { - System.out.println("No existe le proveedor a editar"); - m = m.CAMPOS_INCOMPLETOS; - return m; + // Editar el usuario solo si todas las validaciones son exitosas + if (p.editar(proveedor) == true) { + System.out.println("Editado con exito"); + addMessage(FacesMessage.SEVERITY_INFO, "INFO", "Editado con exito"); + m = m.SIN_ERROR; + return m; + } + } else { + System.out.println("No existe le proveedor a editar"); + m = m.CAMPOS_INCOMPLETOS; + return m; + } + } + } catch (Exception e) { - } - }catch (Exception e) { - System.out.println("Algo es erroneo"); m = m.DATOS_INCORRECTOS; return m; @@ -123,12 +151,12 @@ public class ProveedorBL implements ProveedorBLLocal { @Override public Mensaje eliminar(Proveedor proveedor) { - Mensaje m = null; + Mensaje m = null; ProveedorDAO proveedorDao = new ProveedorDAO(); Proveedor prov = proveedorDao.buscarPorId(proveedor); if (prov != null) { - List idsMarcasReferenciadas = proveedorDao.buscarMarcasReferenciadas(prov); + List idsMarcasReferenciadas = proveedorDao.buscarMarcasReferenciadas(prov); /*for (Producto producto : idsMarcasReferenciadas) { if (marca.getId().equals(producto.getId())) { @@ -137,7 +165,6 @@ public class ProveedorBL implements ProveedorBLLocal { } }*/ - if (!idsMarcasReferenciadas.isEmpty()) { System.out.println(idsMarcasReferenciadas.toString()); @@ -146,25 +173,25 @@ public class ProveedorBL implements ProveedorBLLocal { addMessage(FacesMessage.SEVERITY_WARN, "ATENCION", "El elemento esta en uso"); m = Mensaje.ERROR_PRODUCTOS_ASOCIADOS; System.out.println(m); - - }else{ - if (prov.getEstado() == 2) { - prov.setEstado(1); - - if (proveedorDao.eliminar(prov)) { - System.out.println("provvedor eliminado"); - addMessage(FacesMessage.SEVERITY_INFO, "INFO", "Eliminado correctamente"); - m = Mensaje.SIN_ERROR; + + } else { + if (prov.getEstado() == 2) { + prov.setEstado(1); + + if (proveedorDao.eliminar(prov)) { + System.out.println("provvedor eliminado"); + addMessage(FacesMessage.SEVERITY_INFO, "INFO", "Eliminado correctamente"); + m = Mensaje.SIN_ERROR; + } else { + System.out.println("erro al eliminar proveedor"); + + m = Mensaje.DATOS_INCORRECTOS; + } } else { - System.out.println("erro al eliminar proveedor"); - - m = Mensaje.DATOS_INCORRECTOS; + System.out.println("proveedor se acaba de eliminar"); + m = Mensaje.NO_EXISTE; } - } else { - System.out.println("proveedor se acaba de eliminar"); - m = Mensaje.NO_EXISTE; - } - + } } else { System.out.println("proveedor inexistente"); @@ -173,18 +200,16 @@ public class ProveedorBL implements ProveedorBLLocal { return m; } - - - @Override + + @Override public List buscarValidos(boolean estado) { ProveedorDAO proveedor = new ProveedorDAO(); System.out.println("Proveedor existente"); - + return proveedor.buscarValidos(estado); } - - - @Override + + @Override public Proveedor buscarNombre(Proveedor proveedor) { ProveedorDAO p = new ProveedorDAO(); if (p.buscarPorNombre(proveedor) == null) { @@ -196,11 +221,10 @@ public class ProveedorBL implements ProveedorBLLocal { } } - - public void addMessage(FacesMessage.Severity severity, String summary, String detail) { + + public void addMessage(FacesMessage.Severity severity, String summary, String detail) { FacesContext.getCurrentInstance(). addMessage("mensajeProveedor", new FacesMessage(severity, summary, detail)); } - } diff --git a/ProyectoInventario-ejb/src/java/xforce/bl/UbicacionBL.java b/ProyectoInventario-ejb/src/java/xforce/bl/UbicacionBL.java index 2bab6c1..387b76c 100644 --- a/ProyectoInventario-ejb/src/java/xforce/bl/UbicacionBL.java +++ b/ProyectoInventario-ejb/src/java/xforce/bl/UbicacionBL.java @@ -63,22 +63,22 @@ public class UbicacionBL implements UbicacionBLLocal { Ubicacion ubic = u.buscarPorId(ubicacion); if (ubic != null) { - + List idUbicacionr = u.buscarMarcasReferenciadas(ubic); - - if (!idUbicacionr.isEmpty()) { + + if (!idUbicacionr.isEmpty()) { System.out.println(idUbicacionr.toString()); // Hay productos asociados a esta marca, no se puede eliminar System.out.println("No se puede eliminar la marca porque existen productos asociados."); addMessage(FacesMessage.SEVERITY_WARN, "ATENCION", "La ubicacion esta en uso"); m = Mensaje.ERROR_PRODUCTOS_ASOCIADOS; - + } else { - if (ubic.getEstado() == 2) { - ubic.setEstado(1); - - if (u.eliminar(ubic)) { + if (ubic.getEstado() == 2) { + ubic.setEstado(1); + + if (u.eliminar(ubic)) { System.out.println("Marca eliminada"); addMessage(FacesMessage.SEVERITY_INFO, "INFO", "Eliminado Correctamente"); m = Mensaje.SIN_ERROR; diff --git a/ProyectoInventario-ejb/src/java/xforce/dao/ProveedorDAO.java b/ProyectoInventario-ejb/src/java/xforce/dao/ProveedorDAO.java index 3c5dac3..65402fc 100644 --- a/ProyectoInventario-ejb/src/java/xforce/dao/ProveedorDAO.java +++ b/ProyectoInventario-ejb/src/java/xforce/dao/ProveedorDAO.java @@ -29,7 +29,7 @@ public class ProveedorDAO { public void agregar(Proveedor a) { em.getTransaction().begin(); - + a.setEstado(2); em.persist(a);//Almacenar en DB em.getTransaction().commit(); } @@ -72,6 +72,32 @@ public class ProveedorDAO { q.setParameter("idProveedor", id); return q.getResultList(); } + public Optional buscarTelefono(Proveedor p){ + + + Query q = em.createNamedQuery("Proveedor.findByTelefono"); + q.setParameter("telefono", p.getTelefono()); + + List 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 buscarproveedor(Proveedor a) { Query ql = em.createNamedQuery("Proveedor.findByNombre"); @@ -100,13 +126,19 @@ public class ProveedorDAO { .filter(resEstado::contains) .findFirst() .orElse(null); + return Optional.ofNullable(proveedorEncontrada); + + + } else { return Optional.empty(); } } + + public List buscarValidos(boolean status) { Query q = em.createNamedQuery("Proveedor.findByEstado"); int s = status ? 2 : 1; diff --git a/ProyectoInventario-war/src/java/xforce/seguridad/DemoBeanLogin.java b/ProyectoInventario-war/src/java/xforce/seguridad/DemoBeanLogin.java index cdc8ecb..e06cd6d 100644 --- a/ProyectoInventario-war/src/java/xforce/seguridad/DemoBeanLogin.java +++ b/ProyectoInventario-war/src/java/xforce/seguridad/DemoBeanLogin.java @@ -8,11 +8,9 @@ import javax.inject.Named; import javax.enterprise.context.SessionScoped; import java.io.Serializable; import javax.ejb.EJB; -import javax.faces.application.FacesMessage; import javax.faces.application.NavigationHandler; import javax.faces.context.FacesContext; import javax.servlet.http.HttpSession; -import xforce.bl.LoginBL; import xforce.bl.LoginBLLocal; import xforce.modelo.Usuarios; import xforce.msg.Mensaje; @@ -151,14 +149,14 @@ public class DemoBeanLogin implements Serializable { case "admin": permisos = true; break; - case "vendedor": + case "auxiliar": permisos = false; break; case "gestor": permisos = false; break; default: - throw new AssertionError(); + permisos = false; } } diff --git a/ProyectoInventario-war/src/java/xforce/vista/DemoBeanProducto.java b/ProyectoInventario-war/src/java/xforce/vista/DemoBeanProducto.java index 9a2422d..d9bc7a5 100644 --- a/ProyectoInventario-war/src/java/xforce/vista/DemoBeanProducto.java +++ b/ProyectoInventario-war/src/java/xforce/vista/DemoBeanProducto.java @@ -7,8 +7,6 @@ package xforce.vista; import javax.inject.Named; import javax.enterprise.context.SessionScoped; import java.io.Serializable; -import java.time.Instant; -import java.util.Date; import java.util.List; import java.util.Locale; import javax.ejb.EJB; @@ -17,7 +15,6 @@ import org.primefaces.model.SortMeta; import org.primefaces.util.LangUtils; import xforce.bl.ProductoBLLocal; import xforce.modelo.Producto; -import xforce.modelo.Tipo; import xforce.msg.Mensaje; /** diff --git a/ProyectoInventario-war/src/java/xforce/vista/DemoBeanUbicacion.java b/ProyectoInventario-war/src/java/xforce/vista/DemoBeanUbicacion.java index 24e6051..398f526 100644 --- a/ProyectoInventario-war/src/java/xforce/vista/DemoBeanUbicacion.java +++ b/ProyectoInventario-war/src/java/xforce/vista/DemoBeanUbicacion.java @@ -184,9 +184,9 @@ public class DemoBeanUbicacion implements Serializable { } public void prepararEliminar(Ubicacion ubicacion) { - - titulo="Eliminar ubicacion"; - + + titulo = "Eliminar ubicacion"; + this.ubicacion = ubicacion; } diff --git a/ProyectoInventario-war/web/Images/Usuario.png b/ProyectoInventario-war/web/Images/Usuario.png new file mode 100644 index 0000000000000000000000000000000000000000..2b8b658355da59697e17ce72946d1f9bb1642631 GIT binary patch literal 19293 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 literal 0 HcmV?d00001 diff --git a/ProyectoInventario-war/web/index.xhtml b/ProyectoInventario-war/web/index.xhtml index 847879f..c5a5d0d 100644 --- a/ProyectoInventario-war/web/index.xhtml +++ b/ProyectoInventario-war/web/index.xhtml @@ -2,63 +2,24 @@ - - - - - - Facelets Template - - -
- - -

Inventario almacen

- - - - + xmlns:p="http://primefaces.org/ui" + xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> - - - - - - - - + + + - requiredMessage="Este campo no puede estar vacio" - placeholder="Ingrse la contraseña" - style="width: 223px"> - - - + - - +
-
- + + \ No newline at end of file diff --git a/ProyectoInventario-war/web/proveedorLista.xhtml b/ProyectoInventario-war/web/proveedorLista.xhtml index 0fe9920..0d81990 100644 --- a/ProyectoInventario-war/web/proveedorLista.xhtml +++ b/ProyectoInventario-war/web/proveedorLista.xhtml @@ -170,15 +170,15 @@ - + - + - + - + @@ -286,37 +286,46 @@ - - - - - + validatorMessage="domicilio no valido" + requiredMessage="Este campo no puede estar vacio" + style="width: 223px"> + + + - + + + - - - - + requiredMessage="Estado requerido" + filter="true" + filterMatchMode="startsWith" > + + + + + + + + + + @@ -396,6 +408,11 @@ + + + + + + + + + + Ingreso + + + + + +
+ + + +
+
+ Almacen + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+