diff --git a/si-ejb/src/java/hola/BL/PaisBL.java b/si-ejb/src/java/hola/BL/PaisBL.java new file mode 100644 index 0000000..fdb8817 --- /dev/null +++ b/si-ejb/src/java/hola/BL/PaisBL.java @@ -0,0 +1,129 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/J2EE/EJB30/StatelessEjbClass.java to edit this template + */ +package hola.BL; + +import hola.dao.PaisDAO; +import hola.modelo.Pais; +import hola.msg.Mensaje; +import java.util.List; +import java.util.Optional; +import javax.ejb.Stateless; +import javax.faces.application.FacesMessage; +import javax.faces.context.FacesContext; + +/** + * + * @author eduar + */ +@Stateless +public class PaisBL implements PaisLocal { + + @Override + public Mensaje agregar(Pais pais) { + // Comentario de lógica: Método para agregar una marca + System.out.println("Llegaste al método de agregar Pais"); + PaisDAO pisDAO = new PaisDAO(); + Mensaje m = null; + + // Validar que los campos requeridos no estén vacíos + if (pais.getNombre().isEmpty()) { + System.out.println(Mensaje.CAMPOS_INCOMPLETOS); + // Enviar mensaje de error si algún campo está incompleto + return Mensaje.CAMPOS_INCOMPLETOS; + } + + // Buscar si la pais ya existe en la base de datos + Optional paisEncontradaOptional = pisDAO.buscarPais(pais); + + if (paisEncontradaOptional.isPresent()) { + // Manejar el caso en el que se encontró al menos un proveedor duplicado + paisEncontradaOptional.get(); + addMessage(FacesMessage.SEVERITY_ERROR, "Error", "Elemento duplicado"); + m = Mensaje.ELEMENTO_DUPLICADO; + } else { + // Agregar el proveedor a la base de datos si no está duplicado + pisDAO.agregar(pais); + //registroDAO.agregar(registro); + m = Mensaje.SIN_ERROR; + } + return m; + } + + @Override + public Pais buscarId(Pais pais) { + // Comentario de lógica: Método para buscar una marca por ID + PaisDAO paisDAO = new PaisDAO(); + return paisDAO.buscarPorId(pais); + } + + @Override + public void eliminarId(Pais pais) { + // Comentario de lógica: Método para eliminar una marca por ID + PaisDAO paisDAO = new PaisDAO(); + if (paisDAO.eliminar(pais)) { + System.out.println(Mensaje.SIN_ERROR); + } else { + System.out.println(Mensaje.NO_EXISTE); + } + } + + @Override + public Mensaje editar(Pais pais) { + // Comentario de lógica: Método para editar una marca + Mensaje m; + PaisDAO paisDAO = new PaisDAO(); + + // Validar que los campos requeridos no estén vacíos + if (pais.getNombre().isEmpty() + || pais.getStatus() == null) { + // Enviar mensaje de error si algún campo está incompleto + m = Mensaje.CAMPOS_INCOMPLETOS; + System.out.println(Mensaje.CAMPOS_INCOMPLETOS); + return m; + } + + try { + // Editar el proveedor solo si todas las validaciones son exitosas + Optional user = paisDAO.buscarPais(pais); + if (user.isPresent()) { + + addMessage(FacesMessage.SEVERITY_ERROR, "Error", "Elemento duplicado"); + m = Mensaje.ELEMENTO_DUPLICADO; + } else { + + if (paisDAO.editar(pais) == true) { + m = Mensaje.SIN_ERROR; + System.out.println(Mensaje.SIN_ERROR); + return m; + } else { + m = Mensaje.N0_EXISTE; + System.out.println(Mensaje.NO_EXISTE); + return m; + } + } + } catch (Exception e) { + // Capturar cualquier excepción que ocurra durante la edición del proveedor + m = Mensaje.DATOS_INCORRECTOS; + System.out.println(Mensaje.DATOS_INCORRECTOS); + e.printStackTrace(); + } + return m; + + } + + @Override + public List buscarValidos(boolean estado) { + PaisDAO paisDAO = new PaisDAO(); + List l = paisDAO.buscarValidos(estado); + // Llama al método buscarValidos de ProductoDAO y devuelve la lista resultante + System.out.println(l); + return l; + } + + public void addMessage(FacesMessage.Severity severity, String summary, String detail) { + FacesContext.getCurrentInstance().addMessage("MensajePais", new FacesMessage(severity, summary, detail)); + } + +} \ No newline at end of file diff --git a/si-ejb/src/java/hola/BL/PaisLocal.java b/si-ejb/src/java/hola/BL/PaisLocal.java new file mode 100644 index 0000000..488a55e --- /dev/null +++ b/si-ejb/src/java/hola/BL/PaisLocal.java @@ -0,0 +1,26 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/J2EE/EJB30/SessionLocal.java to edit this template + */ +package hola.BL; + +import hola.modelo.Pais; +import hola.msg.Mensaje; +import java.util.List; +import javax.ejb.Local; + + + +/** + * + * @author eduar + */ +@Local +public interface PaisLocal { + public Mensaje agregar(Pais pais); + public Pais buscarId(Pais pais); + public void eliminarId(Pais pais); + public Mensaje editar(Pais pais); + public List buscarValidos(boolean pais); + +} diff --git a/si-ejb/src/java/hola/dao/PaisDAO.java b/si-ejb/src/java/hola/dao/PaisDAO.java new file mode 100644 index 0000000..f9e7491 --- /dev/null +++ b/si-ejb/src/java/hola/dao/PaisDAO.java @@ -0,0 +1,127 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package hola.dao; + +import hola.modelo.Marca; +import hola.modelo.Pais; +import hola.modelo.Usuario; +import java.util.List; +import java.util.Optional; +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; +import javax.persistence.Query; + +/** + * + * @author eduar + */ +public class PaisDAO { + + private EntityManager em; + + public PaisDAO() { + EntityManagerFactory emf = Persistence.createEntityManagerFactory("si-ejbPU"); + em = emf.createEntityManager(); + } + + public void agregar(Pais pais) { + em.getTransaction().begin(); + pais.setStatus(1); + em.persist(pais);//Almacenar en DB + em.getTransaction().commit(); + + } + + public boolean editar(Pais pais) { + if (buscarPorId(pais) == null) { + return false; + } else { + em.getTransaction().begin(); + em.merge(pais);//edita en la base de datos + em.getTransaction().commit(); + return true; + } + + } + + public boolean eliminar(Pais pais) { + if (buscarPorId(pais) == null) { + return false; + } else { + + // Iniciar transacción + em.getTransaction().begin(); + + // Obtener proveedor actualizado desde la base de datos + Pais u = em.find(Pais.class, pais.getId()); + + // Conservar datos existentes + pais.setNombre(u.getNombre()); + // Modificar solo el estado + pais.setStatus(0); + em.merge(pais); + em.getTransaction().commit(); + return true; + } + + } + + public Pais buscarPorId(Pais pais) { + Query q = em.createNamedQuery("Pais.findById"); + q.setParameter("id", pais.getId()); + if (q.getResultList().isEmpty()) { + return null; + } else { + return (Pais) q.getResultList().get(0); + } + + } + + public List buscarValidos(boolean status) { + Query q = em.createNamedQuery("Pais.findByStatus"); + int s = status ? 1 : 0; + q.setParameter("status", s); + if (s == 1) { + System.out.println("Activos"); + } else { + System.out.println("Inactivos"); + } + return q.getResultList(); + } + + public Pais buscarPorNombre(Pais pais) { + Query q = em.createNamedQuery("Pais.findByNombre"); + q.setParameter("nombre", pais.getNombre()); + if (q.getResultList().isEmpty()) { + return null; + } else { + return (Pais) q.getResultList().get(0); + } + } + + public Optional buscarPais(Pais pais) { + + Query q1 = em.createNamedQuery("Pais.findByNombre"); + q1.setParameter("nombre", pais.getNombre()); + + List resultadoNombre = q1.getResultList(); + + + // Verifica si hay resultados para todos los campos + if (!resultadoNombre.isEmpty()) { + // Compara si la misma editorial está en los tres resultados + Pais paisEncontrado = resultadoNombre.stream() + .findFirst() + .orElse(null); + + return Optional.ofNullable(paisEncontrado); + } else { + // Devuelve Optional vacío para indicar ausencia de resultados + return Optional.empty(); + } + } + +} diff --git a/si-ejb/src/java/hola/modelo/Departamento.java b/si-ejb/src/java/hola/modelo/Departamento.java index c2e5437..ee40daf 100644 --- a/si-ejb/src/java/hola/modelo/Departamento.java +++ b/si-ejb/src/java/hola/modelo/Departamento.java @@ -23,7 +23,7 @@ import javax.xml.bind.annotation.XmlTransient; /** * - * @author chore + * @author eduar */ @Entity @Table(name = "departamento", catalog = "sistemadeinventario", schema = "") diff --git a/si-war/src/java/hola/vista/DemoBeanPais.java b/si-war/src/java/hola/vista/DemoBeanPais.java new file mode 100644 index 0000000..94dbb72 --- /dev/null +++ b/si-war/src/java/hola/vista/DemoBeanPais.java @@ -0,0 +1,127 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/JSF/JSFManagedBean.java to edit this template + */ +package hola.vista; + +import hola.BL.PaisLocal; +import hola.modelo.Pais; +import hola.msg.Mensaje; +import static hola.msg.Mensaje.CAMPOS_INCOMPLETOS; +import static hola.msg.Mensaje.DATOS_INCORRECTOS; +import static hola.msg.Mensaje.ELEMENTO_DUPLICADO; +import static hola.msg.Mensaje.SIN_ERROR; +import javax.inject.Named; +import javax.enterprise.context.SessionScoped; +import java.io.Serializable; +import java.util.List; +import java.util.Locale; +import javax.ejb.EJB; +import org.primefaces.util.LangUtils; + +/** + * + * @author eduar + */ +@Named(value = "demoBeanPais") +@SessionScoped +public class DemoBeanPais implements Serializable { + + @EJB + private PaisLocal paisBL; + + public DemoBeanPais() { + } + private Pais pais = new Pais(); + private String titulo; + private boolean nuevo; + + private List filteredCustomers3; + + public List getFilteredCustomers3() { + return filteredCustomers3; + } + + public void setFilteredCustomers3(List filteredCustomers3) { + this.filteredCustomers3 = filteredCustomers3; + } + + public boolean globalFilterFunction(Object value, Object filter, Locale locale) { + String filterText = (filter == null) ? null : filter.toString().trim().toLowerCase(); + if (LangUtils.isBlank(filterText)) { + return true; + } +//BUSCADOR DE CADA CAMPO + Pais customer = (Pais) value; + return customer.getNombre().toLowerCase().contains(filterText); + } + + public String agregarPais() { + + pais.setStatus(1); + // limpiarFormulario(); + Mensaje mensaje = paisBL.agregar(pais); + + switch (mensaje) { + case SIN_ERROR: + pais = new Pais(); + return "Pais.xhtml";//"productoLista?faces-redirect=true"; // Redirecciona a la lista de productos + case ELEMENTO_DUPLICADO: + return null; + case CAMPOS_INCOMPLETOS: + return null; + case DATOS_INCORRECTOS: + return null; + default: + return null; + } + + } + + public List getPaises() { + return paisBL.buscarValidos(true); + } + + public Pais getPais() { + return pais; + } + + public void setPais(Pais pais) { + this.pais = pais; + } + + public void prepararEditar(Pais pais) { + nuevo = false; + titulo = "Editar paises"; + this.pais = pais; + + } + + public String getTitulo() { + return titulo; + } + + public boolean isNuevo() { + return nuevo; + } + + public void preparar() { + nuevo = true; + titulo = "Agregar Pais"; + pais = new Pais(); + } + + public void editarPais() { + paisBL.editar(pais); + + } + + public void prepararEliminar(Pais pais) { + this.pais = pais; + } + + public void eliminaPais() { + paisBL.eliminarId(pais); + } + +} diff --git a/si-war/web/Pais.xhtml b/si-war/web/Pais.xhtml new file mode 100644 index 0000000..ddd0a05 --- /dev/null +++ b/si-war/web/Pais.xhtml @@ -0,0 +1,114 @@ + + + + + + + + + top + + + +
+ + + + + + + + + + + + + + + + + +
+
+ + + right + + + + + + + + + + + +

+ + + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ + + + + +
+ + + diff --git a/si-war/web/PaisCrear.xhtml b/si-war/web/PaisCrear.xhtml new file mode 100644 index 0000000..b6c2167 --- /dev/null +++ b/si-war/web/PaisCrear.xhtml @@ -0,0 +1,84 @@ + + + + + + + + + + SISTEMA DE INVENTARIO + + + + + + + + + + + + + + + + + + +

+ + + + + + + + + + + + + + +
+
+ +
+ + + + + +
+ + + diff --git a/si-war/web/PaisEliminar.xhtml b/si-war/web/PaisEliminar.xhtml new file mode 100644 index 0000000..df31fed --- /dev/null +++ b/si-war/web/PaisEliminar.xhtml @@ -0,0 +1,62 @@ + + + + + + + + + + SISTEMA DE INVENTARIO + + + + + + + + + + + + + + + +

+ + + + + + + + + + + +
+
+ +
+ + + + + +
+ + +