diff --git a/src/main/java/com/roshka/proyectofinal/Postulante/Filtros.java b/src/main/java/com/roshka/proyectofinal/Postulante/Filtros.java new file mode 100644 index 0000000..f0e5365 --- /dev/null +++ b/src/main/java/com/roshka/proyectofinal/Postulante/Filtros.java @@ -0,0 +1,55 @@ +package com.roshka.proyectofinal.Postulante; + +import com.roshka.proyectofinal.entity.Postulante; +import jakarta.servlet.RequestDispatcher; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import static com.roshka.proyectofinal.Postulante.PostulanteDao.*; + +@WebServlet("/filtros-postulante") +public class Filtros extends HttpServlet { + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + List postulantes = listarPostulante(); + String respuesta = req.getParameter("id"); + String nombre = req.getParameter("nombreBuscar")== null ? "0" : req.getParameter("nombreBuscar"); + System.out.println(nombre); + if(respuesta != null) { + update(Integer.parseInt(req.getParameter("id"))); + postulantes = listarPostulante(); + } else if(nombre.length() > 1){ + postulantes = buscarPorNombre(nombre); + } + + req.getServletContext().setAttribute("postulantes", postulantes); + RequestDispatcher reqDisp= req.getRequestDispatcher("postulante-consulta.jsp"); + reqDisp.forward(req,resp); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + String respuesta = req.getParameter("nombre"); + + if(respuesta.equals("aceptado")){ + List postulantes = listarPostulanteAceptados(); + req.getServletContext().setAttribute("postulantes", postulantes); + RequestDispatcher reqDisp= req.getRequestDispatcher("postulante-consulta.jsp"); + reqDisp.forward(req,resp); + }else { + List postulantes = listarPorBootcamp(respuesta); + req.getServletContext().setAttribute("postulantes", postulantes); + RequestDispatcher reqDisp= req.getRequestDispatcher("postulante-consulta.jsp"); + reqDisp.forward(req,resp); + } + + + } +} diff --git a/src/main/java/com/roshka/proyectofinal/Postulante/PostulanteDao.java b/src/main/java/com/roshka/proyectofinal/Postulante/PostulanteDao.java index f820d82..b844037 100644 --- a/src/main/java/com/roshka/proyectofinal/Postulante/PostulanteDao.java +++ b/src/main/java/com/roshka/proyectofinal/Postulante/PostulanteDao.java @@ -4,8 +4,13 @@ import com.roshka.proyectofinal.entity.Postulante; import java.sql.Connection; import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; public class PostulanteDao { + List postulante = null; public static int save(Postulante postulante){ int status=0; @@ -30,4 +35,167 @@ public class PostulanteDao { return status; } + + public static List listarPostulante(){ + List postulante = new ArrayList<>(); + String sql = "select a.id, a.nombre, a.apellido, a.nro_cedula, a.correo, a.telefono, a.direccion, " + + "a.experiencia_laboral, a.estudio_universitario, a.bootcamp_id, a.notebook, c.nombre_lenguaje as bootcamp, \n" + + "a.aceptado from postulante a\n" + + " inner join bootcamp b on b.id= a.bootcamp_id\n" + + " inner join lenguaje c on c.id=b.id_lenguaje\n" + + " order by a.id;"; + try{ + Connection con= DataBase.getConnection(); + PreparedStatement ps=con.prepareStatement(sql); + ResultSet rs = ps.executeQuery(); + while(rs.next()){ + Postulante postulanteObject = new Postulante(); + postulanteObject.setId(rs.getInt("id")); + postulanteObject.setNombre(rs.getString("nombre")); + postulanteObject.setApellido(rs.getString("apellido")); + postulanteObject.setNroCedula(rs.getInt("nro_cedula")); + postulanteObject.setCorreo(rs.getString("correo")); + postulanteObject.setTelefono(rs.getString("telefono")); + postulanteObject.setDireccion(rs.getString("direccion")); + postulanteObject.setExpLaboral(rs.getBoolean("experiencia_laboral")); + postulanteObject.setEstudioUniversitario(rs.getBoolean("estudio_universitario")); + postulanteObject.setBootcampId(rs.getInt("bootcamp_id")); + postulanteObject.setNotebook(rs.getBoolean("notebook")); + postulanteObject.setNombreBootcamp(rs.getString("bootcamp")); + postulanteObject.setAceptado(rs.getBoolean("aceptado")); + postulante.add(postulanteObject); + } + + con.close(); + } catch (SQLException e) { + throw new RuntimeException(e); + } + return postulante; + } + + public static void update(int id){ + try{ + Connection con= DataBase.getConnection(); + PreparedStatement ps=con.prepareStatement("update postulante set aceptado= true\n" + + "where id=?"); + ps.setInt(1,id); + ps.executeUpdate(); + con.close(); + }catch(Exception ex){ + ex.printStackTrace(); + } + } + + public static List buscarPorNombre(String nombre){ + List postulante = null; + Postulante postulanteObject = null; + try{ + Connection con= DataBase.getConnection(); + PreparedStatement ps=con.prepareStatement("select a.id, a.nombre, a.apellido, a.nro_cedula, a.correo, " + + "a.telefono, a.direccion, a.experiencia_laboral, a.estudio_universitario, a.bootcamp_id, a.notebook, " + + "c.nombre_lenguaje as bootcamp, \n" + "a.aceptado from postulante a\n" + + " inner join bootcamp b on b.id= a.bootcamp_id\n" + + " inner join lenguaje c on c.id=b.id_lenguaje\n" + + " where a.nombre ilike ? "); + ps.setString(1, "%" + nombre + "%"); + System.out.println(nombre); + ResultSet rs = ps.executeQuery(); + postulante = new ArrayList<>(); + postulanteObject= new Postulante(); + while(rs.next()){ + + postulanteObject.setId(rs.getInt("id")); + postulanteObject.setNombre(rs.getString("nombre")); + postulanteObject.setApellido(rs.getString("apellido")); + postulanteObject.setNroCedula(rs.getInt("nro_cedula")); + postulanteObject.setCorreo(rs.getString("correo")); + postulanteObject.setTelefono(rs.getString("telefono")); + postulanteObject.setDireccion(rs.getString("direccion")); + postulanteObject.setExpLaboral(rs.getBoolean("experiencia_laboral")); + postulanteObject.setEstudioUniversitario(rs.getBoolean("estudio_universitario")); + postulanteObject.setBootcampId(rs.getInt("bootcamp_id")); + postulanteObject.setNotebook(rs.getBoolean("notebook")); + postulanteObject.setNombreBootcamp(rs.getString("bootcamp")); + postulanteObject.setAceptado(rs.getBoolean("aceptado")); + postulante.add(postulanteObject); + } + con.close(); + }catch(Exception ex){ + ex.printStackTrace(); + } + return postulante; + } + + public static List listarPostulanteAceptados(){ + List postulante = null; + try{ + Connection con= DataBase.getConnection(); + PreparedStatement ps=con.prepareStatement("select a.id, a.nombre, a.apellido, a.nro_cedula, a.correo, " + + "a.telefono, a.direccion, a.experiencia_laboral, a.estudio_universitario, a.bootcamp_id, a.notebook, " + + "c.nombre_lenguaje as bootcamp, \n" + "a.aceptado from postulante a\n" + + " inner join bootcamp b on b.id= a.bootcamp_id\n" + + " inner join lenguaje c on c.id=b.id_lenguaje\n" + + " where a.aceptado= true "); + ResultSet rs = ps.executeQuery(); + postulante = new ArrayList<>(); + Postulante postulanteObject= new Postulante(); + while(rs.next()){ + postulanteObject.setId(rs.getInt("id")); + postulanteObject.setNombre(rs.getString("nombre")); + postulanteObject.setApellido(rs.getString("apellido")); + postulanteObject.setNroCedula(rs.getInt("nro_cedula")); + postulanteObject.setCorreo(rs.getString("correo")); + postulanteObject.setTelefono(rs.getString("telefono")); + postulanteObject.setDireccion(rs.getString("direccion")); + postulanteObject.setExpLaboral(rs.getBoolean("experiencia_laboral")); + postulanteObject.setEstudioUniversitario(rs.getBoolean("estudio_universitario")); + postulanteObject.setBootcampId(rs.getInt("bootcamp_id")); + postulanteObject.setNotebook(rs.getBoolean("notebook")); + postulanteObject.setNombreBootcamp(rs.getString("bootcamp")); + postulanteObject.setAceptado(rs.getBoolean("aceptado")); + postulante.add(postulanteObject); + } + con.close(); + }catch(Exception ex){ + ex.printStackTrace(); + } + return postulante; + } + + public static List listarPorBootcamp(String nombre){ + List postulante = null; + try{ + Connection con= DataBase.getConnection(); + PreparedStatement ps=con.prepareStatement("select a.id, a.nombre, a.apellido, a.nro_cedula, a.correo, a.telefono, a.direccion, \n" + + " a.experiencia_laboral, a.estudio_universitario, a.bootcamp_id, a.notebook, c.nombre_lenguaje as bootcamp, \n" + + " a.aceptado from postulante a\n" + + " inner join bootcamp b on b.id= a.bootcamp_id\n" + + " inner join lenguaje c on c.id=b.id_lenguaje\n" + + " where c.nombre_lenguaje ilike ? "); + ps.setString(1, "%" + nombre + "%"); + ResultSet rs = ps.executeQuery(); + postulante = new ArrayList<>(); + Postulante postulanteObject= new Postulante(); + while(rs.next()){ + postulanteObject.setId(rs.getInt("id")); + postulanteObject.setNombre(rs.getString("nombre")); + postulanteObject.setApellido(rs.getString("apellido")); + postulanteObject.setNroCedula(rs.getInt("nro_cedula")); + postulanteObject.setCorreo(rs.getString("correo")); + postulanteObject.setTelefono(rs.getString("telefono")); + postulanteObject.setDireccion(rs.getString("direccion")); + postulanteObject.setExpLaboral(rs.getBoolean("experiencia_laboral")); + postulanteObject.setEstudioUniversitario(rs.getBoolean("estudio_universitario")); + postulanteObject.setBootcampId(rs.getInt("bootcamp_id")); + postulanteObject.setNotebook(rs.getBoolean("notebook")); + postulanteObject.setNombreBootcamp(rs.getString("bootcamp")); + postulanteObject.setAceptado(rs.getBoolean("aceptado")); + postulante.add(postulanteObject); + } + con.close(); + }catch(Exception ex){ + ex.printStackTrace(); + } + return postulante; + } } diff --git a/src/main/java/com/roshka/proyectofinal/entity/Postulante.java b/src/main/java/com/roshka/proyectofinal/entity/Postulante.java index 459696f..dd21dc7 100644 --- a/src/main/java/com/roshka/proyectofinal/entity/Postulante.java +++ b/src/main/java/com/roshka/proyectofinal/entity/Postulante.java @@ -5,6 +5,7 @@ package com.roshka.proyectofinal.entity; public class Postulante { private int id,nroCedula,bootcampId; + private String nombreBootcamp; private String nombre,apellido,telefono,direccion,correo; private boolean expLaboral,estudioUniversitario,notebook,aceptado; @@ -27,6 +28,22 @@ public class Postulante { this.bootcampId = bootcampId; this.aceptado = aceptado; } + + public Postulante(int nroCedula, String nombreBootcam, String nombre, String apellido, String telefono, String direccion, String correo, boolean expLaboral, boolean estudioUniversitario, boolean notebook, int bootcampId, boolean aceptado) { + this.nroCedula = nroCedula; + this.nombreBootcamp = nombreBootcam; + this.nombre = nombre; + this.apellido = apellido; + this.telefono = telefono; + this.direccion = direccion; + this.correo = correo; + this.expLaboral = expLaboral; + this.estudioUniversitario = estudioUniversitario; + this.notebook = notebook; + this.bootcampId = bootcampId; + this.aceptado = aceptado; + } + public int getId() { return id; } @@ -97,4 +114,39 @@ public class Postulante { this.bootcampId = bootcampId; } + public void setId(int id) { + this.id = id; + } + + public int getNroCedula() { + return nroCedula; + } + + public void setNroCedula(int nroCedula) { + this.nroCedula = nroCedula; + } + + public String getNombreBootcamp() { + return nombreBootcamp; + } + + public void setNombreBootcamp(String nombreBootcamp) { + this.nombreBootcamp = nombreBootcamp; + } + + public boolean isExpLaboral() { + return expLaboral; + } + + public boolean isEstudioUniversitario() { + return estudioUniversitario; + } + + public boolean isNotebook() { + return notebook; + } + + public boolean isAceptado() { + return aceptado; + } } diff --git a/src/main/webapp/menu.html b/src/main/webapp/menu.html index f8a55bf..cf383e3 100644 --- a/src/main/webapp/menu.html +++ b/src/main/webapp/menu.html @@ -81,7 +81,7 @@ a{