diff --git a/baseSC.mwb b/baseSC.mwb index e82cbb8..0492cdc 100644 Binary files a/baseSC.mwb and b/baseSC.mwb differ diff --git a/baseSC.mwb.bak b/baseSC.mwb.bak index 5602d77..37d6335 100644 Binary files a/baseSC.mwb.bak and b/baseSC.mwb.bak differ diff --git a/baseSC.mwb.beforefix b/baseSC.mwb.beforefix new file mode 100644 index 0000000..37d6335 Binary files /dev/null and b/baseSC.mwb.beforefix differ diff --git a/si-ejb/src/java/hola/BL/EstadoBL.java b/si-ejb/src/java/hola/BL/EstadoBL.java new file mode 100644 index 0000000..dd522f8 --- /dev/null +++ b/si-ejb/src/java/hola/BL/EstadoBL.java @@ -0,0 +1,133 @@ +/* + * 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.EstadoDAO; +import hola.modelo.Estado; +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 chore + */ +@Stateless +public class EstadoBL implements EstadoBLLocal { + + // Add business logic below. (Right-click in editor and choose + // "Insert Code > Add Business Method") + @Override + public Mensaje agregar(Estado estado) { + // Comentario de lógica: Método para agregar un proveedor +//, Registro registro// + System.out.println("Llegaste al metodo de agregar Usuario"); + EstadoDAO estadoDAO = new EstadoDAO(); + Mensaje m = null; + + // Validar que los campos requeridos no estén vacíos + if (estado.getNombre().isEmpty()) { + System.out.println(Mensaje.CAMPOS_INCOMPLETOS); + // Enviar mensaje de error si algún campo está incompleto + return Mensaje.CAMPOS_INCOMPLETOS; + } + + // Buscar si el proveedor ya existe en la base de datos + Optional usuarioEncontradoOptional = estadoDAO.buscarEstado(estado); + + if (usuarioEncontradoOptional.isPresent()) { + // Manejar el caso en el que se encontró al menos un proveedor duplicado + usuarioEncontradoOptional.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 + estadoDAO.agregar(estado); + //registroDAO.agregar(registro); + m = Mensaje.SIN_ERROR; + } + + return m; + } + + @Override + public Estado buscarId(Estado estado) { + // Comentario de lógica: Método para buscar un proveedor por ID + EstadoDAO edao = new EstadoDAO(); + return edao.buscarPorId(estado); + } + + @Override + public void eliminarId(Estado estado) { + // Comentario de lógica: Método para eliminar un proveedor por ID + EstadoDAO edao = new EstadoDAO(); + if (edao.eliminar(estado)) { + System.out.println(Mensaje.SIN_ERROR); + } else { + System.out.println(Mensaje.NO_EXISTE); + } + } + + @Override + public Mensaje editar(Estado estado) { + // Comentario de lógica: Método para editar un proveedor + Mensaje m; + EstadoDAO estadoDAO = new EstadoDAO(); + + // Validar que los campos requeridos no estén vacíos + if (estado.getNombre().isEmpty() + || estado.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 = estadoDAO.buscarEstado(estado); + if (user.isPresent()) { + + addMessage(FacesMessage.SEVERITY_ERROR, "Error", "Elemento duplicado"); + m = Mensaje.ELEMENTO_DUPLICADO; + } else { + + if (estadoDAO.editar(estado) == 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) { + EstadoDAO estadoDAO = new EstadoDAO(); + List l = estadoDAO.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("MensajeUsuario", new FacesMessage(severity, summary, detail)); + } +} diff --git a/si-ejb/src/java/hola/BL/EstadoBLLocal.java b/si-ejb/src/java/hola/BL/EstadoBLLocal.java new file mode 100644 index 0000000..369251b --- /dev/null +++ b/si-ejb/src/java/hola/BL/EstadoBLLocal.java @@ -0,0 +1,28 @@ +/* + * 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.Estado; +import hola.msg.Mensaje; +import java.util.List; +import javax.ejb.Local; + +/** + * + * @author chore + */ +@Local +public interface EstadoBLLocal { + + public Mensaje agregar(Estado estado); + + public Estado buscarId(Estado estado); + + public void eliminarId(Estado estado); + + public Mensaje editar(Estado estado); + + public List buscarValidos(boolean estado); +} diff --git a/si-ejb/src/java/hola/dao/EstadoDAO.java b/si-ejb/src/java/hola/dao/EstadoDAO.java new file mode 100644 index 0000000..834e2ed --- /dev/null +++ b/si-ejb/src/java/hola/dao/EstadoDAO.java @@ -0,0 +1,128 @@ +/* + * 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.Estado; +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 chore + */ +public class EstadoDAO { + + private EntityManager em; + public EstadoDAO() { + EntityManagerFactory emf = Persistence.createEntityManagerFactory("si-ejbPU"); + em = emf.createEntityManager(); + + } + public void agregar(Estado estado) { + em.getTransaction().begin(); + estado.setStatus(1); + em.persist(estado);//Almacenar en DB + em.getTransaction().commit(); + + } + + public boolean editar(Estado estado) { + if (buscarPorId(estado) == null) { + return false; + } else { + em.getTransaction().begin(); + em.merge(estado);//edita en la base de datos + em.getTransaction().commit(); + return true; + } + + } + + public boolean eliminar(Estado estado) { + if (buscarPorId(estado) == null) { + return false; + } else { + + // Iniciar transacción + em.getTransaction().begin(); + + // Obtener proveedor actualizado desde la base de datos + Estado u = em.find(Estado.class, estado.getId()); + + // Conservar datos existentes + estado.setNombre(u.getNombre()); + + + + // Modificar solo el estado + estado.setStatus(0); + em.merge(estado); + em.getTransaction().commit(); + return true; + } + + } + + public Estado buscarPorId(Estado estado) { + Query q = em.createNamedQuery("Estado.findById"); + q.setParameter("id", estado.getId()); + if (q.getResultList().isEmpty()) { + return null; + } else { + return (Estado) q.getResultList().get(0); + } + + } + + public List buscarValidos(boolean status) { + Query q = em.createNamedQuery("Estado.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 Estado buscarPorNombre(Estado estado) { + Query q = em.createNamedQuery("Estado.findByNombre"); + q.setParameter("nombre", estado.getNombre()); + if (q.getResultList().isEmpty()) { + return null; + } else { + return (Estado) q.getResultList().get(0); + } + } + + public Optional buscarEstado(Estado estado) { + + Query q1 = em.createNamedQuery("Estado.findByNombre"); + q1.setParameter("nombre", estado.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 + Estado usuarioEncontrado = resultadoNombre.stream() + .findFirst() + .orElse(null); + + return Optional.ofNullable(usuarioEncontrado); + } else { + // Devuelve Optional vacío para indicar ausencia de resultados + return Optional.empty(); + } + } +} diff --git a/si-ejb/src/java/hola/modelo/Estado.java b/si-ejb/src/java/hola/modelo/Estado.java index 25365a6..f634fa1 100644 --- a/si-ejb/src/java/hola/modelo/Estado.java +++ b/si-ejb/src/java/hola/modelo/Estado.java @@ -33,7 +33,8 @@ import javax.xml.bind.annotation.XmlTransient; @NamedQueries({ @NamedQuery(name = "Estado.findAll", query = "SELECT e FROM Estado e"), @NamedQuery(name = "Estado.findById", query = "SELECT e FROM Estado e WHERE e.id = :id"), - @NamedQuery(name = "Estado.findByNombre", query = "SELECT e FROM Estado e WHERE e.nombre = :nombre")}) + @NamedQuery(name = "Estado.findByNombre", query = "SELECT e FROM Estado e WHERE e.nombre = :nombre"), + @NamedQuery(name = "Estado.findByStatus", query = "SELECT e FROM Estado e WHERE e.status = :status")}) public class Estado implements Serializable { private static final long serialVersionUID = 1L; @@ -45,6 +46,8 @@ public class Estado implements Serializable { @Size(max = 45) @Column(name = "nombre") private String nombre; + @Column(name = "status") + private Integer status; @JoinColumn(name = "pais_idpais", referencedColumnName = "id") @ManyToOne(optional = false) private Pais paisIdpais; @@ -76,6 +79,14 @@ public class Estado implements Serializable { this.nombre = nombre; } + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + public Pais getPaisIdpais() { return paisIdpais; } diff --git a/si-ejb/src/java/hola/modelo/Pais.java b/si-ejb/src/java/hola/modelo/Pais.java index 0718fdb..3a1b865 100644 --- a/si-ejb/src/java/hola/modelo/Pais.java +++ b/si-ejb/src/java/hola/modelo/Pais.java @@ -30,7 +30,8 @@ import javax.xml.bind.annotation.XmlTransient; @NamedQueries({ @NamedQuery(name = "Pais.findAll", query = "SELECT p FROM Pais p"), @NamedQuery(name = "Pais.findById", query = "SELECT p FROM Pais p WHERE p.id = :id"), - @NamedQuery(name = "Pais.findByNombre", query = "SELECT p FROM Pais p WHERE p.nombre = :nombre")}) + @NamedQuery(name = "Pais.findByNombre", query = "SELECT p FROM Pais p WHERE p.nombre = :nombre"), + @NamedQuery(name = "Pais.findByStatus", query = "SELECT p FROM Pais p WHERE p.status = :status")}) public class Pais implements Serializable { private static final long serialVersionUID = 1L; @@ -42,6 +43,8 @@ public class Pais implements Serializable { @Size(max = 45) @Column(name = "nombre") private String nombre; + @Column(name = "status") + private Integer status; @OneToMany(cascade = CascadeType.ALL, mappedBy = "paisIdpais") private List estadoList; @@ -68,6 +71,14 @@ public class Pais implements Serializable { this.nombre = nombre; } + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + @XmlTransient public List getEstadoList() { return estadoList; diff --git a/si-ejb/src/java/hola/modelo/Registro.java b/si-ejb/src/java/hola/modelo/Registro.java new file mode 100644 index 0000000..72a9b65 --- /dev/null +++ b/si-ejb/src/java/hola/modelo/Registro.java @@ -0,0 +1,138 @@ +/* + * 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.modelo; + +import java.io.Serializable; +import javax.persistence.Basic; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.Table; +import javax.validation.constraints.Size; +import javax.xml.bind.annotation.XmlRootElement; + +/** + * + * @author chore + */ +@Entity +@Table(name = "registro", catalog = "sistemadeinventario", schema = "") +@XmlRootElement +@NamedQueries({ + @NamedQuery(name = "Registro.findAll", query = "SELECT r FROM Registro r"), + @NamedQuery(name = "Registro.findById", query = "SELECT r FROM Registro r WHERE r.id = :id"), + @NamedQuery(name = "Registro.findByEntrada", query = "SELECT r FROM Registro r WHERE r.entrada = :entrada"), + @NamedQuery(name = "Registro.findBySalida", query = "SELECT r FROM Registro r WHERE r.salida = :salida"), + @NamedQuery(name = "Registro.findByAlta", query = "SELECT r FROM Registro r WHERE r.alta = :alta"), + @NamedQuery(name = "Registro.findByBaja", query = "SELECT r FROM Registro r WHERE r.baja = :baja"), + @NamedQuery(name = "Registro.findByStatus", query = "SELECT r FROM Registro r WHERE r.status = :status")}) +public class Registro implements Serializable { + + private static final long serialVersionUID = 1L; + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Basic(optional = false) + @Column(name = "id") + private Integer id; + @Size(max = 10) + @Column(name = "Entrada") + private String entrada; + @Size(max = 10) + @Column(name = "salida") + private String salida; + @Size(max = 45) + @Column(name = "Alta") + private String alta; + @Size(max = 45) + @Column(name = "baja") + private String baja; + @Column(name = "status") + private Integer status; + + public Registro() { + } + + public Registro(Integer id) { + this.id = id; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getEntrada() { + return entrada; + } + + public void setEntrada(String entrada) { + this.entrada = entrada; + } + + public String getSalida() { + return salida; + } + + public void setSalida(String salida) { + this.salida = salida; + } + + public String getAlta() { + return alta; + } + + public void setAlta(String alta) { + this.alta = alta; + } + + public String getBaja() { + return baja; + } + + public void setBaja(String baja) { + this.baja = baja; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + @Override + public int hashCode() { + int hash = 0; + hash += (id != null ? id.hashCode() : 0); + return hash; + } + + @Override + public boolean equals(Object object) { + // TODO: Warning - this method won't work in the case the id fields are not set + if (!(object instanceof Registro)) { + return false; + } + Registro other = (Registro) object; + if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) { + return false; + } + return true; + } + + @Override + public String toString() { + return "hola.modelo.Registro[ id=" + id + " ]"; + } + +} diff --git a/si-ejb/src/java/hola/modelo/Rol.java b/si-ejb/src/java/hola/modelo/Rol.java index 4760f17..228af48 100644 --- a/si-ejb/src/java/hola/modelo/Rol.java +++ b/si-ejb/src/java/hola/modelo/Rol.java @@ -31,7 +31,8 @@ import javax.xml.bind.annotation.XmlTransient; @NamedQueries({ @NamedQuery(name = "Rol.findAll", query = "SELECT r FROM Rol r"), @NamedQuery(name = "Rol.findById", query = "SELECT r FROM Rol r WHERE r.id = :id"), - @NamedQuery(name = "Rol.findByNombre", query = "SELECT r FROM Rol r WHERE r.nombre = :nombre")}) + @NamedQuery(name = "Rol.findByNombre", query = "SELECT r FROM Rol r WHERE r.nombre = :nombre"), + @NamedQuery(name = "Rol.findByStatus", query = "SELECT r FROM Rol r WHERE r.status = :status")}) public class Rol implements Serializable { private static final long serialVersionUID = 1L; @@ -43,6 +44,8 @@ public class Rol implements Serializable { @Size(max = 20) @Column(name = "nombre") private String nombre; + @Column(name = "status") + private Integer status; @OneToMany(cascade = CascadeType.ALL, mappedBy = "rolIdrol") private List usuarioList; @@ -69,6 +72,14 @@ public class Rol implements Serializable { this.nombre = nombre; } + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + @XmlTransient public List getUsuarioList() { return usuarioList; diff --git a/si-war/src/java/hola/vista/DemoBeanEstado.java b/si-war/src/java/hola/vista/DemoBeanEstado.java new file mode 100644 index 0000000..2b063cf --- /dev/null +++ b/si-war/src/java/hola/vista/DemoBeanEstado.java @@ -0,0 +1,125 @@ +/* + * 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.EstadoBLLocal; +import hola.modelo.Estado; +import hola.msg.Mensaje; +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 chore + */ +@Named(value = "demoBeanEstado") +@SessionScoped +public class DemoBeanEstado implements Serializable { + + @EJB + private EstadoBLLocal estadodBL; + /** + * Creates a new instance of DemoBeanEstado + */ + public DemoBeanEstado() { + } + private Estado estado = new Estado(); + 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 + Estado customer = (Estado) value; + return customer.getNombre().toLowerCase().contains(filterText); + } + + public String agregarUsuario() { + + estado.setStatus(1); + // limpiarFormulario(); + Mensaje mensaje = estadodBL.agregar(estado); + + switch (mensaje) { + case SIN_ERROR: + estado = new Estado(); + return "Estado.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 getEstados() { + return estadodBL.buscarValidos(true); + } + + public Estado getTEstado() { + return estado; + } + + public void setEstado(Estado estado) { + this.estado = estado; + } + + public void prepararEditar(Estado estado) { + nuevo = false; + titulo = "Editar usuario"; + this.estado = estado; + + } + + public String getTitulo() { + return titulo; + } + + public boolean isNuevo() { + return nuevo; + } + + public void preparar() { + nuevo = true; + titulo = "Agregar Estado"; + estado = new Estado(); + } + + public void editarEstado() { + + estadodBL.editar(estado); + + } + + public void prepararEliminar(Estado estado) { + this.estado = estado; + } + + public void eliminaEstado() { + estadodBL.eliminarId(estado); + } +} diff --git a/si-war/web/UsuarioCrear.xhtml b/si-war/web/UsuarioCrear.xhtml index 155bd0b..7354c58 100644 --- a/si-war/web/UsuarioCrear.xhtml +++ b/si-war/web/UsuarioCrear.xhtml @@ -87,6 +87,17 @@ + + + + + + +