Commit 6e74c551 by Nahuel Mereles Rodriguez

Merge branch 'develop' of…

Merge branch 'develop' of https://phoebe.roshka.com/gitlab/jbaez/ProyectoFinal-Bootcamp into crearBootcamp2
parents 37df89f0 ae9d434c
package com.roshka.proyectofinal;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import java.io.*;
public class LoginHandler extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
// Get the user's name and password
String name = req.getParameter("name");
String passwd = req.getParameter("passwd");
// Check the name and password for validity
if (!allowUser(name, passwd)) {
out.println("<HTML><HEAD><TITLE>Access Denied</TITLE></HEAD>");
out.println("<BODY>Your login and password are invalid.<BR>");
out.println("You may want to <A HREF=\"/login.html\">try again</A>");
out.println("</BODY></HTML>");
}
else {
// Valid login. Make a note in the session object.
HttpSession session = req.getSession(true);
session.putValue("logon.isDone", name); // just a marker object
// Try redirecting the client to the page he first tried to access
try {
String target = (String) session.getValue("login.target");
if (target != null)
res.sendRedirect(target);
return;
}
catch (Exception ignored) { }
// Couldn't redirect to the target. Redirect to the site's home page.
res.sendRedirect(req.getScheme() + "://" +
req.getServerName() + ":" + req.getServerPort());
}
}
protected boolean allowUser(String user, String passwd) {
return true; // trust everyone
}
}
\ No newline at end of file
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<Postulante> postulantes = listarPostulante();
String respuesta = req.getParameter("id");
boolean valor = Boolean.parseBoolean(req.getParameter("valor"));
String nombre = req.getParameter("nombreBuscar")== null ? "0" : req.getParameter("nombreBuscar");
System.out.println(nombre);
if(respuesta != null) {
update(Integer.parseInt(req.getParameter("id")), valor);
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<Postulante> postulantes = listarPostulanteAceptados();
req.getServletContext().setAttribute("postulantes", postulantes);
RequestDispatcher reqDisp= req.getRequestDispatcher("postulante-consulta.jsp");
reqDisp.forward(req,resp);
} else if (respuesta.equals("notebook")) {
List<Postulante> postulantes = buscarPorNoteBook();
req.getServletContext().setAttribute("postulantes", postulantes);
RequestDispatcher reqDisp= req.getRequestDispatcher("postulante-consulta.jsp");
reqDisp.forward(req,resp);
} else {
List<Postulante> postulantes = listarPorBootcamp(respuesta);
req.getServletContext().setAttribute("postulantes", postulantes);
RequestDispatcher reqDisp= req.getRequestDispatcher("postulante-consulta.jsp");
reqDisp.forward(req,resp);
}
}
}
...@@ -4,8 +4,13 @@ import com.roshka.proyectofinal.entity.Postulante; ...@@ -4,8 +4,13 @@ import com.roshka.proyectofinal.entity.Postulante;
import java.sql.Connection; import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class PostulanteDao { public class PostulanteDao {
List<Postulante> postulante = null;
public static int save(Postulante postulante){ public static int save(Postulante postulante){
int status=0; int status=0;
...@@ -30,4 +35,219 @@ public class PostulanteDao { ...@@ -30,4 +35,219 @@ public class PostulanteDao {
return status; return status;
} }
public static List<Postulante> listarPostulante(){
List<Postulante> 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, Boolean valor){
if(valor==true){
try{
Connection con= DataBase.getConnection();
PreparedStatement ps=con.prepareStatement("update postulante set aceptado= false\n" +
"where id=?");
ps.setInt(1,id);
ps.executeUpdate();
con.close();
}catch(Exception ex){
ex.printStackTrace();
}
}else {
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<Postulante> buscarPorNombre(String nombre){
List<Postulante> 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<Postulante> listarPostulanteAceptados(){
List<Postulante> 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<Postulante> listarPorBootcamp(String nombre){
List<Postulante> 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;
}
public static List<Postulante> buscarPorNoteBook(){
List<Postulante> 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.notebook=true ");
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;
}
} }
...@@ -80,13 +80,27 @@ public class SaveServlet extends HttpServlet { ...@@ -80,13 +80,27 @@ public class SaveServlet extends HttpServlet {
} }
int status=PostulanteDao.save(postulante); int status=PostulanteDao.save(postulante);
if(status>0){ if(status>0){
out.print("<p>Record saved successfully!</p>"); //out.print("<p>Record saved successfully!</p>");
request.getRequestDispatcher("index.html").include(request, response); out.print(" <div class=\"alert\">\n" +
" <span class=\"closebtn\" onclick=\"this.parentElement.style.display='none';\">&times;</span> \n" +
" <strong>Formulario Cargado!</strong> EXITOSAMENTE CARGADO\n" +
"</div>");
request.getRequestDispatcher("formulario.jsp").include(request, response);
}else{ }else{
if (rechazarDatos){ if (rechazarDatos){
out.println("El correo ingresado ya esta registrado para el bootcamp actual"); //out.println("El correo ingresado ya esta registrado para el bootcamp actual");
out.print(" <div class=\"alert info\">\n" +
" <span class=\"closebtn\" onclick=\"this.parentElement.style.display='none';\">&times;</span> \n" +
" <strong>Formulario ya Cargado!</strong> YA EXISTE EL FORMULARIO\n" +
"</div>");
request.getRequestDispatcher("formulario.jsp").include(request, response);
}else { }else {
out.println("Sorry! unable to save record"); out.println("Error al cargar datos");
out.print(" <div class=\"alert info error\">\n" +
" <span class=\"closebtn\" onclick=\"this.parentElement.style.display='none';\">&times;</span> \n" +
" <strong>Formulario ya Cargado!</strong> YA EXISTE EL FORMULARIO\n" +
"</div>");
request.getRequestDispatcher("formulario.jsp").include(request, response);
} }
} }
......
...@@ -5,6 +5,7 @@ package com.roshka.proyectofinal.entity; ...@@ -5,6 +5,7 @@ package com.roshka.proyectofinal.entity;
public class Postulante { public class Postulante {
private int id,nroCedula,bootcampId; private int id,nroCedula,bootcampId;
private String nombreBootcamp;
private String nombre,apellido,telefono,direccion,correo; private String nombre,apellido,telefono,direccion,correo;
private boolean expLaboral,estudioUniversitario,notebook,aceptado; private boolean expLaboral,estudioUniversitario,notebook,aceptado;
...@@ -27,6 +28,22 @@ public class Postulante { ...@@ -27,6 +28,22 @@ public class Postulante {
this.bootcampId = bootcampId; this.bootcampId = bootcampId;
this.aceptado = aceptado; 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() { public int getId() {
return id; return id;
} }
...@@ -97,4 +114,39 @@ public class Postulante { ...@@ -97,4 +114,39 @@ public class Postulante {
this.bootcampId = bootcampId; 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;
}
} }
package com.roshka.proyectofinal.login; package com.roshka.proyectofinal.login;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletException; import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import com.roshka.proyectofinal.entity.LoginBean; import com.roshka.proyectofinal.entity.LoginBean;
import com.roshka.proyectofinal.login.md5JavaHash; import com.roshka.proyectofinal.login.md5JavaHash;
import jakarta.servlet.http.HttpSession; import jakarta.servlet.http.HttpSession;
import static java.lang.System.out; import static java.lang.System.out;
/** /**
* Servlet implementation class LoginServlet * Servlet implementation class LoginServlet
*/ */
@WebServlet("/login") @WebServlet("/login")
public class LoginServlet extends HttpServlet { public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* @see HttpServlet#HttpServlet() * @see HttpServlet#HttpServlet()
*/ */
...@@ -48,6 +42,7 @@ public class LoginServlet extends HttpServlet { ...@@ -48,6 +42,7 @@ public class LoginServlet extends HttpServlet {
LoginDao loginDao = new LoginDao(); LoginDao loginDao = new LoginDao();
md5JavaHash passEncrip = new md5JavaHash(); md5JavaHash passEncrip = new md5JavaHash();
String passwordMD5 = ""; String passwordMD5 = "";
response.setContentType("text/html");
PrintWriter out = response.getWriter(); PrintWriter out = response.getWriter();
String username = request.getParameter("username"); String username = request.getParameter("username");
...@@ -60,42 +55,43 @@ public class LoginServlet extends HttpServlet { ...@@ -60,42 +55,43 @@ public class LoginServlet extends HttpServlet {
} catch (NoSuchAlgorithmException e) { } catch (NoSuchAlgorithmException e) {
e.printStackTrace(); e.printStackTrace();
} }
out.println(passwordMD5);
loginBean.setPassword(passwordMD5); loginBean.setPassword(passwordMD5);
loginBean.setCorreo(correo); loginBean.setCorreo(correo);
out.println("EL pass encriptado es: " +passwordMD5); //out.println("EL pass encriptado es: " +passwordMD5);
if (loginDao.validate(loginBean)) if (loginDao.validate(loginBean))
{ {
HttpSession session = request.getSession(true); //incluir nota de sesion valida HttpSession session = request.getSession(true); //incluir nota de sesion valida
session.setAttribute("logon.isDone", username); session.setAttribute("logon.isDone", correo);
//out.print ("Bienvenido " + correo);
// Tratar de re-dirigir a la pagina que el usuario quiso acceder // Tratar de re-dirigir a la pagina que el usuario quiso acceder
try { try {
String target = (String) session.getAttribute("login.target"); String target = (String) session.getAttribute("login.target");
response.sendRedirect("loginSuccess.jsp"); //response.sendRedirect("loginSuccess.jsp");
//out.println(" \n Destino: " + target);
if (target != null) if (target != null)
response.sendRedirect(target); response.sendRedirect(target);
return; //return;
} }
catch (Exception ignored) { } catch (Exception ignored) { }
// Si no es posible redireccionar a la pagina solicitada, llevar a la main page // Si no es posible redireccionar a la pagina solicitada, llevar a la main page
//response.sendRedirect(request.getScheme() + "://" + RequestDispatcher rd = request.getRequestDispatcher("menu.html");
// request.getServerName() + ":" + request.getServerPort()); rd.include(request,response);
System.out.println("redirigir al index.html");
} else { } else {
//si no es un user valido - mandar error y redireccionar al inicio de sesion //si no es un user valido - mandar error y redireccionar al inicio de sesion
RequestDispatcher rd = request.getRequestDispatcher("/login.jsp");
//out.print("<div br align = \"center\" class=\"messageError\" > Credenciales incorrectas! Reintente ... </div>");
rd.include(request,response);
out.println("<p> You may want to <a href='/login.jsp'> try again </a> </p>");
// request.getRequestDispatcher("login.jsp").include(request, response);
// response.sendRedirect("login.jsp");
} }
} }
......
package com.roshka.proyectofinal.login;
import java.io.IOException;
import java.io.PrintWriter;
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 jakarta.servlet.http.HttpSession;
/**
* Servlet implementation class LoginServlet
*/
@WebServlet("/logout")
public class LogoutServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public LogoutServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//response.getWriter().append("Served at: ").append(request.getContextPath());
response.setContentType("text/html");
PrintWriter out = response.getWriter();
//out.print("Has cerrado tu sesion !");
request.getRequestDispatcher("index.html").include(request,response);
HttpSession session = request.getSession(true);
session.invalidate();
out.close();
}
}
\ No newline at end of file
package com.roshka.proyectofinal; package com.roshka.proyectofinal.login;
import java.io.*; import java.io.*;
import java.util.*; import java.util.*;
import jakarta.servlet.*; import jakarta.servlet.*;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.*; import jakarta.servlet.http.*;
@WebServlet("/protected")
public class ProtectedResource extends HttpServlet { public class ProtectedResource extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
...@@ -22,7 +25,7 @@ public class ProtectedResource extends HttpServlet { ...@@ -22,7 +25,7 @@ public class ProtectedResource extends HttpServlet {
session.setAttribute("login.target", session.setAttribute("login.target",
HttpUtils.getRequestURL(req).toString()); HttpUtils.getRequestURL(req).toString());
res.sendRedirect(req.getScheme() + "://" + req.getServerName() + ":" res.sendRedirect(req.getScheme() + "://" + req.getServerName() + ":"
+ req.getServerPort() + "/login.jsp"); + req.getServerPort() + "/finalProyect2/login.jsp");
return; return;
} }
// El usuario se loggeo y puede ver el recurso // El usuario se loggeo y puede ver el recurso
......
/* el header donde va el logo y el menu */
html,body{
background-image: url(imagenes/descarga.svg);
}
/* damos los estilos a todo lo que contiene el body */
body{
background-color: rgba(11, 49, 110, 0.75);
font-family:Calibri, Candara, Segoe, Segoe UI, Optima, Arial, sans-serif;
color: wheat;
font-weight: bold;
display: flex;
justify-content: center;
align-items: center;
height: 160%;}
}
/* para el logo */
img{
width: 165px;
padding: 10px;
}
p.enter{
text-align: center;
font-size: 20px;
}
/* para el parrafo */
p:hover{
color: yellow;
}
/* para el create o sea para el main */
.create{
width: 100%;
max-width: 785px;
min-width: 320px;
border-radius: 15px;
background-color: rgba(11, 49, 110, 0.75);
padding: 1rem;
}
/* contenedor */
/* para el forrmulario */
.form label{
display: block;
border: none;
align-items:center;
}
.form input{
display: block;
border: none;
width: 50%;
align-items:center;
}
.form input[type="email"],.form input[type="text"],.form input[type="number"]{
background-color: transparent;
border-radius: 10px;
border: 1px solid #000;
}
.form input:hover{
background-color: wheat;
}
a{
text-decoration: none;
}
ul{
list-style:none;
font-size:15px;
}
a{
text-decoration:none;
color:black;
background-color: #21211d;
border-radius: 10px;
color: #FFF;
padding: 10px;
margin:15px;
text-decoration: none;
cursor: pointer;
background-image: url(imagenes/descarga.svg);
}
.form input[type="reset"] , .form input[type="submit"]{
text-decoration:none;
background-color: rgba(11, 49, 110, 0.75);
background-image: url(imagenes/descarga.svg);
border-radius: 10px;;
padding: 15px;
border-radius: 10px;
text-decoration: none;
color:#ffff;
text-align:left;
cursor: pointer;
width:80px;
text-align:center;
}
input#ruby,input#python,input#c,input#javascript,input#java{
width:20px;
}
input#experiencia_laboral,input#notebook,input#universidad{
width:100px;
}
/* parrafo final */
//mi parte jose leeme
</style>
<!-- <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta id="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<title>postulacion</title>
</head> -->
<%@ page language="java" contentType="text/html; charset=UTF-8" <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> pageEncoding="UTF-8"%>
<!DOCTYPE html> <!DOCTYPE html>
...@@ -15,19 +6,28 @@ pageEncoding="UTF-8"%> ...@@ -15,19 +6,28 @@ pageEncoding="UTF-8"%>
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="css/bootstrap.css" rel="stylesheet" type="text/css" /> <link href="estilos/form.css" rel="stylesheet" type="text/css" />
<title>JSP Page</title> <link rel="shortcut icon" href="imagenes/roshkaicon.ico" sizes="any" />
<!-- CSS only -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous">
<link rel="stylesheet" media="(max-width: 800px)" href="example.css" />
<title>Formulario Postulante</title>
</head> </head>
<body> <body>
<main> <header>
<div class="logo">
<img src="imagenes/logo-roshka.svg" alt="log-roshka" />
</div>
</header>
<main class="create">
<article class="contenedor">
<div> <div>
<p>Si sigues interesado y cumples con los requisitos, completa el siguiente formulario: </p> <p class="enter">Si sigues interesado y cumples con los requisitos, completa el siguiente formulario: </p>
<form method="post" action="SaveServlet"> <form method="post" action="SaveServlet" class="form">
<label for="nombre">Ingrese su Nombre:</label> <label class="mr-2" for="nombre">Ingrese su Nombre:</label>
<input required id="nombre" name="nombre" type="text"><br> <input required id="nombre" name="nombre" type="text"><br>
<label for="apellido">Ingrese su Apellido:</label> <label for="apellido">Ingrese su Apellido:</label>
...@@ -45,10 +45,6 @@ pageEncoding="UTF-8"%> ...@@ -45,10 +45,6 @@ pageEncoding="UTF-8"%>
<label for="direccion">Direccion:</label> <label for="direccion">Direccion:</label>
<input required id="direccion" name="direccion" type="text"><br> <input required id="direccion" name="direccion" type="text"><br>
<label for="experiencia_laboral">Experiencia laboral</label>
<!-- Si no lo marca el valor que envia es null y si lo marca es "ON" -->
<input id="experiencia_laboral" name="experiencia_laboral" type="checkbox"><br>
<p for="experiencia_programando">Lenguajes de programacion que conoces:</p>
<%@ page import="com.roshka.proyectofinal.entity.Lenguaje, com.roshka.proyectofinal.lenguaje.LenguajeDao, java.util.List,java.util.Iterator" %> <%@ page import="com.roshka.proyectofinal.entity.Lenguaje, com.roshka.proyectofinal.lenguaje.LenguajeDao, java.util.List,java.util.Iterator" %>
...@@ -65,7 +61,7 @@ pageEncoding="UTF-8"%> ...@@ -65,7 +61,7 @@ pageEncoding="UTF-8"%>
len = iter.next(); len = iter.next();
%> %>
<li> <li class="d-flex check-inline" >
<label for=<%=len.getNombre_lenguaje() %> > <%= len.getNombre_lenguaje() %> </label><input value=<%=len.getId() %> id= <label for=<%=len.getNombre_lenguaje() %> > <%= len.getNombre_lenguaje() %> </label><input value=<%=len.getId() %> id=
<%=len.getNombre_lenguaje() %> name= <%=len.getNombre_lenguaje() %> name=
<%=len.getNombre_lenguaje() %> type="checkbox"><br> <%=len.getNombre_lenguaje() %> type="checkbox"><br>
...@@ -74,19 +70,189 @@ pageEncoding="UTF-8"%> ...@@ -74,19 +70,189 @@ pageEncoding="UTF-8"%>
<% } %> <% } %>
</ul> </ul>
<li class="d-flex">
<label for="experiencia_laboral" >Experiencia laboral</label>
</li>
<!-- Si no lo marca el valor que envia es null y si lo marca es "ON" -->
<input id="experiencia_laboral" name="experiencia_laboral" type="checkbox" ><br>
<p for="experiencia_programando">Lenguajes de programacion que conoces:</p>
<label for="notebook">Cuenta con notebook:</label> <label for="notebook">Cuenta con notebook</label>
<input id="notebook" name="notebook" type="checkbox"><br> <input id="notebook" name="notebook" type="checkbox"><br>
<label for="universidad">Estudio Universitario: </label> <label for="universidad">Estudio Universitario </label>
<input id="universidad" name="universidad" type="checkbox"><br> <input id="universidad" name="universidad" type="checkbox"><br>
<input type="submit"> <input class="enviar info error" type="submit">
<input type="reset" value="Borrar"> <input class="borrar" type="reset" value="Borrar"><br>
<label for="otro">otro</label>
<input id="otro" name="otro" type="checkbox"><br>
<a href="index.html">volver</a>
</form> </form>
</div>
</article>
</main> </main>
</body> </body>
</html> </html>
<style>
/* el header donde va el logo y el menu */
html,body{
background-image: url(imagenes/descarga.svg);
}
/* damos los estilos a todo lo que contiene el body */
body{
background-color: rgba(11, 49, 110, 0.75);
font-family:Calibri, Candara, Segoe, Segoe UI, Optima, Arial, sans-serif;
color: wheat;
font-weight: bold;
display: flex;
justify-content: center;
align-items: center;
height: 160%;}
}
/* para el logo */
img{
width: 165px;
padding: 10px;
}
p.enter{
text-align: center;
font-size: 20px;
}
/* para el parrafo */
p:hover{
color: yellow;
}
/* para el create o sea para el main */
.create{
width: 100%;
max-width: 785px;
min-width: 320px;
border-radius: 15px;
background-color: rgba(11, 49, 110, 0.75);
padding: 1rem;
}
/* contenedor */
/* para el forrmulario */
.form label{
display: block;
border: none;
align-items:center;
}
.form input{
display: block;
border: none;
width: 50%;
align-items:center;
}
.form input[type="email"],.form input[type="text"],.form input[type="number"]{
background-color: transparent;
border-radius: 10px;
border: 1px solid #000;
}
.form input:hover{
background-color: wheat;
}
a{
text-decoration: none;
}
ul{
list-style:none;
font-size:15px;
}
a{
text-decoration:none;
color:black;
background-color: #21211d;
border-radius: 10px;
color: #FFF;
padding: 10px;
margin:15px;
text-decoration: none;
cursor: pointer;
background-image: url(imagenes/descarga.svg);
}
.form input[type="reset"] , .form input[type="submit"]{
text-decoration:none;
background-color: rgba(11, 49, 110, 0.75);
background-image: url(imagenes/descarga.svg);
border-radius: 5px;;
padding: 10px;
border-radius: 10px;
margin:10px;
text-decoration: none;
color:#ffff;
text-align:left;
cursor: pointer;
width:80px;
text-align:center;
}
/*hola mundo*/
input#ruby,input#python,input#c,input#javascript,input#java{
width:30px;
}
input#experiencia_laboral,input#notebook,input#universidad{
width:500px;
}
/* para el alert */
.alert {
padding: 10px;
background-color: background-color: #2196F3;
color: white;
}
.alert.info {background-color: #2196F3;}
.alert.error {background-color: #ff0000;}
.closebtn {
margin-left: 15px;
color: white;
font-weight: bold;
float: right;
font-size: 22px;
line-height: 20px;
cursor: pointer;
transition: 0.3s;
}
.closebtn:hover {
color: black;
}
</style>
<script>
var close = document.getElementsByClassName("enviar");
var i;
for (i = 0; i < close.length; i++) {
close[i].onclick = function(){
var div = this.parentElement;
div.style.opacity = "0";
setTimeout(function(){ div.style.display = "none"; }, 600);
}
}
</script>
\ No newline at end of file
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
<title>Roshka WebSite</title> <title>Roshka WebSite</title>
</head> </head>
<div class="header"> <div class="header">
<div class="logo"> <div class="logo">
<a href="./index.html"> <img class="logoi" src="imagenes/logo-roshka.svg" alt="" /> </a> <a href="./index.html"> <img class="logoi" src="imagenes/logo-roshka.svg" alt="" /> </a>
...@@ -27,6 +28,8 @@ ...@@ -27,6 +28,8 @@
<li class="link-menu"><a href="">Home</a></li> <li class="link-menu"><a href="">Home</a></li>
<li class="link-menu"><a href="formulario.jsp">Postulate</a></li> <li class="link-menu"><a href="formulario.jsp">Postulate</a></li>
<li class="link-menu"><a href="formulario_bootcamp.jsp">Crear bootcamp</a> <li class="link-menu"><a href="formulario_bootcamp.jsp">Crear bootcamp</a>
<li class="link-menu"><a href="login.jsp">Login</a>
<li class="link-menu"><a href="protected">Recurso Protegido</a></li>
</li> </li>
<li class="link-menu"><a href="formulario_lenguaje.jsp">Crear lenguaje</a> <li class="link-menu"><a href="formulario_lenguaje.jsp">Crear lenguaje</a>
</li> </li>
...@@ -60,7 +63,7 @@ ...@@ -60,7 +63,7 @@
<p data-block-key="cwggy">Es un campo de entrenamiento intensivo y gratuito para principiantes que ya programan y quieren ser parte de la empresa</p> <p data-block-key="cwggy">Es un campo de entrenamiento intensivo y gratuito para principiantes que ya programan y quieren ser parte de la empresa</p>
</div> </div>
<div class="postulacion"> <div class="postulacion">
<button type="submit" class="cta-main">POSTULACION</button> <a href="formulario.jsp"><button type="submit" class="cta-main">POSTULACION</button></a>
<!-- <a href="/postulacion" class="cta-main">POSTULACION</a> --> <!-- <a href="/postulacion" class="cta-main">POSTULACION</a> -->
</div> </div>
</div> </div>
......
...@@ -14,6 +14,10 @@ ...@@ -14,6 +14,10 @@
</h1> </h1>
<br/> <br/>
<a href="hello-servlet">Hello Servlet</a><br> <a href="hello-servlet">Hello Servlet</a><br>
<a href="login.jsp">LOGIN</a><br>
<a href="logout">LOGOUT</a><br>
<a href="protected">RECUSO PROTEGIDO</a><br>
</body> </body>
......
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <!--
<!DOCTYPE html> Follow me on
<html> ------------
<head> Codepen: https://codepen.io/mycnlz/
<title>BootcampsLogin</title> Dribbble: https://dribbble.com/mycnlz
</head> Pinterest: https://pinterest.com/mycnlz/
<body> -->
<div align=" center">
<h1>User Login Form</h1> <div class='box'>
<div class='box-form'>
<div class='box-login-tab'></div>
<div class='box-login-title'>
<div class='i i-login'></div><h2> USUARIO </h2>
<link rel="stylesheet" href="usrebe.css">
<link rel="stylesheet" href="usrebe.js">
</div>
<form action="login" method="post"> <form action="login" method="post">
<table align = "center"> <div class='box-login'>
<tr><td>Correo:</td> <td><input type="text" name = "correo"></td></tr> <div class='fieldset-body' id='login_form'>
<tr><td>Password:</td><td><input type="password" name="password"></td></tr> <button onclick="openLoginInfo();" class='b b-form i i-more' title='Mais Informações'></button>
<p class='field'>
<label for='user'>E-MAIL</label>
<input type='text' id='correo' name='correo' title='Correo' />
<span id='valida' class='i i-warning'></span>
</p>
<p class='field'>
<label for='password'>PASSWORD</label>
<input type='password' id='password' name='password' title='Password' />
<span id='valida' class='i i-close'></span>
</p>
<tr><td><input type="submit" value="Login"/></td></tr> <input type='submit' id='do_login' value='INICIAR SESION' title='INICIAR SESION' />
</table> </div>
</div>
</div>
</form> </form>
<div class='box-info'>
<p><button onclick="closeLoginInfo();" class='b b-info i i-left' title='Back to Sign In'></button><h3>Need Help?</h3>
</p>
<div class='line-wh'></div>
<button onclick="" class='b-support' title='Forgot Password?'> Forgot Password?</button>
<button onclick="" class='b-support' title='Contact Support'> Contact Support</button>
<div class='line-wh'></div>
<button onclick="" class='b-cta' title='Sign up now!'> CREATE ACCOUNT</button>
</div> </div>
</div>
</body>
</html>
\ No newline at end of file
...@@ -81,7 +81,7 @@ a{ ...@@ -81,7 +81,7 @@ a{
<div class="column menu"> <div class="column menu">
<ul> <ul>
<li><a href="#"> MANAGE BOOTCAMP </a></li> <li><a href="#"> MANAGE BOOTCAMP </a></li>
<li><a href="#"> MANAGE POSTULANTE </a></li> <li><a href="filtros-postulante"> MANAGE POSTULANTE </a></li>
<li><a href="#"> MANAGE LENGUAJES </a></li> <li><a href="#"> MANAGE LENGUAJES </a></li>
<li><a href="#"> MANAGE PROFESORES </a></li> <li><a href="#"> MANAGE PROFESORES </a></li>
<li><a href="#"> USUARIO NUEVO (ADMINISTRADOR) </a></li> <li><a href="#"> USUARIO NUEVO (ADMINISTRADOR) </a></li>
......
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Postulantes Manage</title>
</head>
<body>
<div>
<h1>Lista Postulantes</h1>
<form action="filtros-postulante" >
<input type="search" name="nombreBuscar"
placeholder="Buscar por nombre">
<button type="submit">Buscar</button>
</form>
<table>
<tr>
<th>#</th>
<th>Nombre</th>
<th>Apellido</th>
<th>Cedula</th>
<th>Correo</th>
<th>Telefono</th>
<th>Direccion</th>
<th>Experiencia laboral</th>
<th>Estudio universitario</th>
<th>
<form action="filtros-postulante" method="post">
<input type="hidden" name="nombre" value="notebook">
<button type="submit">Notebooks</button>
</form>
</th>
<th>
<form action="filtros-postulante" method="post">
<input type="search" name="nombre" placeholder="Buscar por Bootcamp" required>
<button type="submit">Bootcamp</button>
</form>
</th>
<th>
<form action="filtros-postulante" method="post">
<input type="hidden" name="nombre" value="aceptado">
<button type="submit">Aceptado</button>
</form>
</th>
<th></th>
</tr>
<tbody>
<c:forEach var="postulante" items="${postulantes}" varStatus="myIndex">
<tr>
<td> ${myIndex.index + 1}-</td>
<td> ${postulante.nombre}</td>
<td> ${postulante.apellido}</td>
<td> ${postulante.nroCedula}</td>
<td> ${postulante.correo}</td>
<td> ${postulante.telefono}</td>
<td> ${postulante.direccion}</td>
<td>
<c:if test="${postulante.expLaboral == true}">
SI
</c:if>
<c:if test="${postulante.expLaboral != true}">
NO
</c:if>
</td>
<td>
<c:if test="${postulante.estudioUniversitario == true}">
SI
</c:if>
<c:if test="${postulante.estudioUniversitario != true}">
NO
</c:if>
</td>
<td>
<c:if test="${postulante.notebook == true}">
SI
</c:if>
<c:if test="${postulante.notebook != true}">
NO
</c:if>
</td>
<td> ${postulante.nombreBootcamp}</td>
<td>
<c:if test="${postulante.aceptado == true}">
SI
</c:if>
<c:if test="${postulante.aceptado != true}">
NO
</c:if>
</td>
<td>
<c:if test="${postulante.aceptado == true}">
<input type="hidden" name="valor" value="false">
<button><a href="filtros-postulante?id=${postulante.id}">Rechazar</a></button>
</c:if>
<c:if test="${postulante.aceptado != true}">
<input type="hidden" name="valor" value="true">
<button><a href="filtros-postulante?id=${postulante.id}">Aceptar</a></button>
</c:if>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</body>
</html>
\ No newline at end of file
...@@ -60,7 +60,7 @@ Icons ...@@ -60,7 +60,7 @@ Icons
margin: 13px 0px 0px 15px; margin: 13px 0px 0px 15px;
position: relative; position: relative;
float: left; float: left;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAMAAAAJbSJIAAAA3lBMVEUddbz///8ddb3///0ddrv//v////z7///8/v38/vz+/fwKbrb2//8ddroAa7IAbLOUvNPx//9Oh7MVcrwAZ6wAbLcAZ6kAbLIAbbkAZKjn+fkAZaUAZa0AaazR5+wAbrXC3uo9gLPf8vgjcq5kmb6mx9tzo8kqdq2w0eJ5pcbL4u7O5usveLR7qcNwnb681+hVjLdUjsCIs8iLttNLisBmm8dbk7qLs9XU7vmlyuAwdqiWuNISaqOYxN85gbmsydhLha1dk7a709ukxdLM7fWt1+gjb6Ld9vWDqcSvydsrtU6zAAAfvklEQVR4nO09iX/TOLOR5MjyESeuc7ROnMPO3dC0hJYW2JaF772F//8feho5l23JcdIWlu91fixsIbE1mtHcMyqV3uAN3uAN3uAN3uAN3uAN/v+B9rsX8AqAxa8NaP+NKALgwx/500CrxMTCAL95LS8NgFnMi1bPajQ6nXrHsSyL/4z/m1jU6gVBNH5fW97P5/P7Ze39OAoc67+EmBhbncnVtK8jDoQQtAb/2+rmwvIEz/6pqFb4f9irflrN3Rg5QiiJ8Swjxv9kYe2xZf3BApVj2Kj8mHPiEbYl3T5wjO3+sM7JiMV2/FnAGa/nDJ5c3dANWk6htvmZGQYn5KxtxV/4k0jJxSSuXy91REwiJd+aiAiZJkLdYcf73Ss+EioabpwtdWqyHb3UYFJ9+cn63Ws+EnB7ZFNqmAexIzGvUveq86cIVCEXW0OfL7x8mHwxjmUTmWgUyYydf+PR1Epee8QlyHHAqX0ZyR72b4Te4B4Z7FgMTdO+TokbLfXnvwWsa58wejQNDVSrJlDRtAqoEM4S2PMsj1uyQp9ov9kAwrg6tilDORpCDgbtttJL97ye1bz48uF2DHD72G4HYOT9ZtsAEFyL0KOwpPZdqbK/dlyyKoOPo3vftdcS13b95ehu8vsMdmGFcgSJaR5JQW4TEDRqJURp72L4M+T2HmWUMrBoEaXCdnDnq4XjxR/Fv5Zj4RBZ1y45VsZwMMskbO+vFvdWofrjrD8Mfs9pxN7Ep+ywls9iaKJhQo56A9swyyo+Nwjitqz3G3DUmnOO4PEYEhNNnQSPNkZC3xApjiZj/ByE7+q/2lbnpmgN0aPR41BmfpQkSNtVf3htKBF9Pmj9Yl71ru2jTRlYMifULLa7NxSxPud9YU1XYui15i+Vq7jdJQoWJWt+013f9109wX4gmfpB8kmRf3BfiGlwpXR/1vg1KIq9771Tr8fkPn73YXgTNNvt6GbWt5GxJbdh2p8SYkazvuvkoNEOqsOk7rt6YhGvCXjhp8XChp0QY/5o0urFsVLN81rBLERG7Doyit5bidXhgV7A7YIHc12JpsGv0ori7CjEu/s5quIKd4vBKqhAeNhqvndj5980ukFihTjoE6OYzcCISblLgn+FSMVYLv4Mxn2/fpQSCJC6sD5dctryj+iDxD+UuEQ+Avg2hYOe9tpxdG4Nn6+4gZVdgMkNgFWwsbH2A6MV/GWOwL4bJYSFxiVycaNPfJL6Z4LNX4+Q4skRt2YkKzOofVXXtghufudOEGfWoM8/ESb9Xjzxj3YtAcVXP4reEMkx1K8cnIlpC5SxVvoSUnTl7eLB3PeL5uRoo4gh/4P32n6js1S8/XOOwqp4d3rf2f933OwjahYK7ySAhI+vG47UtC+ufOfndfXp8LDm/PUoEFs/Bn/pE5McZRfFu8FIGOFXFajeUCYdmKF/yGEdUBtWzLExi+E21xMnOF8cT8Ltolfl0mAqM7kZmTrFNxb3BqHK7CsCtVc14IKubGWGPjj40q2Yx51bn9DTMST6de/1EMQLXXZ46GWz0LZy3aFZkwduTbOM20sMk9stiOm2LhxGRgiVZQrKjIWxC/YKx5HbhQMkOT6E1A4mI+LlaF5zpnAnTEr08Gn29Wxw9nU2CiEVAq/KmsDMoGA7vJK4saQGDdG/5pNQi+03r9XihjgF/iwnqCP+3x6dXTQ8UeFgnXcGIx8ZSIaiCCm/Dnoc8J0uw9AdaLlMI8zTVuux5nMWYOkHEMGx/UFjHZABwwB71cnIJhALyqDILYXLQP2y54HW+qFL1EUoSUTsf0vDTjT+q4uEtM+AqTPTnXWSNjVXK87XeySXR4Y+fD1xWu9L3th18l+I6zUXUWrGUgqQTEgQRu8fe2l7jxPSa0+lCHIp1K2/LIobBoRAe+RnA6XdjppFNW6COD+4qGRGWSIbCfzqR+n1VrhLwp/pfBZeSfprhOp3L2q8JZZvXSHDSB2OcJEn2bB1q/CTID7BXf9pU7Lc2Eyv15gsu2yipfNSnmJ26Z1Lmj4d7kC9o7iCP7lUnQLnsj+IU03S19eljFo27S8vxqZ8L3sbXw9cfK10ZqdfmKct4vi4PEnF/XYTPQR51MAXlyirg7mM/fhi9QDYCW6DhGct2dbxufr7wVyZnAKlPsqVGRr2zmxTZgv3my+Dntc5G7lomDAEvbPM60bKDcXOVJ19M00yqqu+uX3ASKYzqP8yjmLrum8TSu+TGaB6mip0riIEdlZI5QaC6l4ecIXgXydumob87RSlU+VHwDpMgEuNx2lchYeuEvkf7yq1q8xtyxeqccmrEqOMsyj4egcNzOpI9n328OyD2Au4ml4nebsJKwlXwqQ4pamc2Ra8AdcTCjFqGtwlKbIQfK1nv81Iv/Ec7Lid1RvM40gKJG7ZbP8k4upTMlZt0FXaJok/GIVEHj2GvzYPGHubh5Q6EneEUfeZlUf1mbtHJxruExH3blkKw0tHEj3RLvpQqiHD0DBMGk6KnSSt95R9AKV66zn44c4DdyK27MVFwmw/UIkjO4Eho/YiWzqKnRqRBY/FN0RVTUEiWJLgOEXs5hk09KI+6KodhszkRNyigEvVpP3N0ZilaVgpWUOdu6sKDIn9d+FYhDeWPMFE704SpvG2RHOUimUStD2JkHKuPiRYj2P4rZGufsEL1yzLxQyYMqtqcRLcyDE8WZh60T3ZY9H1osK13BOk4voiBW4zScOKFsyJRAZuIN+USS1IhiFhJ2OIgYLpYi4uUFd7D/RuMudrmHiIpjk1lBNPmwZHxFl6Ei7l7P/+NAwrpU5faoVQP9pLOywyKbafSfXUO7PleQmue4SRVBy0lkzSGKeqfOw8SPeemazW0DbFSbidVlFcnyTyEkGojmlTf+IdEUAutSTaghjo4QSVz1/LBaDJMczqMIO67d0nMxiabN9OBEWhZFHiDo4J6eLShaxsip0maSqYO3NItjhIM3/fbhpupjE00Kha0jatQfjMpnH1RWZhzNSvzjfkxqV1AWKe2PHuMhKrDMs5AUNuBVeXOQWj4MprCgwZCQNNrBZ+q0PWl/MCdx/Wf/Df1j+hWjbHoaXWkYDGSGIXkZMw5PLhSprC3jx15GzWkKWhyaXpWiVq1kz5DBCj3g4Hq2fFPW5ZIm7pDN5TCsMynMPbUzR+EJJMwHYHpv0oRA3WMpIGcoFP1QqYbhD2GNfUAEUja5ppi/Ht7e1ksVhUHMexPG+NmVbZC2z0/tLtTByDy2P9lCybtcrZexA2UyAioPEoKcgQxn4cUupZahCtifH7KgsfHEWE9PCy/zAb37Tb1rmVKg/Gjx8+DIfDKw6r0Wi5nM/n3dB1bf+EkCmOMrVAKQzR9brS4lb278PdwSioDDg7mwYAFaWAth/+HI3PJkDPHd8KbHsW1IA3rAZANYomk8mxCHJd5/2QRUQgrYDKfAF6/9v0XazILJktjJaNIxNCWqlzDwKIHw0QRdAXJqqDu8sfV1G9KhrBRFNqpaSJjYUfOfC/9k7KddfviSSqZRpQShrWBkHgtGJFpjmyKCbxF0fzjXdtmwnhvfGYddudZiLhzwStdEdkRZVlvgT/XcD9w93xb3UlGHIn8mjpJt8rBLqG0n6xvGtxsKYk26AFmkx/+GJBJd6OLxYyx92k/SOy+THgUuSS7NngbFtmFH2LcEV7KSy1khdI5CP3g5k77qRsEOu9NO1l2pOjU7NatYaYQgczkk3ZPAdFuSetU/8sY+H2prKqSYOh1REWdWmdJ+A6ONvVUI6ZwghfspkvVe0Uv5RQ97qXCcFwh02y6wajYaYd5jBYY5WjzGUcdWeB2LWX6J8J0hY8RDrBgk/JZfgp8MtIGkS7PmHLgzlRt5+aaLqAIJjyOB7hhn3NbiVHoy9N7zZkEhCQXp2AIT7TM4bnFhil7irqJXb5xApMb8USyjB+pT3IfpIbZp7UpkHonxMkg4al+7UmIfR1EL8WrfuD4tJV+H3DtsVf2PiW6qHgLMq4NyHfrLqfdSIZN/etkzb3k690aeK2fmQv76KOFTfxlYSRI/5HmVmVAG6GmdQuF/+Djbmf/HDJGmUrCw3jsnM8egDW6kCtqcl03V++H7RaToMbqNxE7VWrLW68HnMM23q23JOrcNln4amDbGENtc9OitFq2Lu4z27vljUEitTk1jmy59+mH29v727Hf02/hatDucck3CAzvWR1KASXgu7emkS22iRPsghaskpGseXeUD9QycdPDEPJln+ij7YJ8gKn0ZtlipUIySk55IyV/DhD7kQt0w+BtEznEBhsWSh7JQBz5zdjWRBX7WTihZ3AkOP7XsmjcdXlRhimnwn/6g3U8fH9w7NPRO5yoXlR4Y1LralEg8uVYbysTj+RGjTX5cmyTntwPT2rcd4QYYpKKSsfKlr1e16IXAqi4XQZFOMbXKpfSp7xXa2/tVLSjDVUaWAgXmPxdfXz6Wk0O4saktISMFm8Ceifo/umy+ipaDCjLvP4cspGtVTfGVXS22teL309lol6OBo4krQhhKLfKcr08tCD3vd3TrEGzCyGJBfDUqn617YanTBip8ui4ndWtNbNZTy2hkHElCK2HKQz4jAfhfsYXYMycbiOAmIXLIrOYAgMU6sqP6+BcNiEBBih3PiRmf+4vkpVUBnUn0kZy7vTCWX7BeDFeJaGikKQFDgyLv2ekyrXcKe/MfPKZrr7tRQXBuOA24JJ4weCPjVJqBNrjVGYqScrgKfBHqR2Sfr5QRbDMpc0am0BanqjLxj6KOUULZiinfgQUp+LkzKFwL7k5FRbj4PV9zlMHoBid67hgbUPIIgMk3E+PUxGCYaI3OfbmUG4fr0ZXsjOuijYkvVIQeFD9vOgKnGvEVw8Xq36XRiwQOM430EIcxp2tk+XyVJm5yYytW2IXJemELD1d5pF1xtiUmW95lp5VoPJdW36j41ogcNICrmlgUQfQr9ZHobQa84M6KyUCmwcdQ1pFsTkKPY78skeWlzIDqFLz2k/3j2I8W8MbUWsLBxA/QLVpq1MTxq3ptmByqpWjRPJoLYkEoxFyF4Jhn4j37w11nHwEmPLaTVval1RJU63C0sDi4mYj6UsKcOZaSL1DzerwQsXUpU1i2uK7Ge4S6TGkEyLCEBRWd7zOo9XSztnyIFJw8PBY+5bZPbGMPk6cKmkquHVcAuCnaG0Axlj7kKKx8hKagxIARTyXkUiCnuN9qzPYAKKrJGGu45jK3+eH9ffH/SMf8jBPsszGDA33SjE8iV95CCHcsWgnE0lm7nuurXqZ33doEZmw8RfHK5UxG1XFioh97kRUHz+EXVFIXqWiq1+/nyXw71SAInHdq5DOa9y8RMd4gjMFySR7AxNm5vXSOsrg/8oanVxcKkqaovhe1X6RFVsSUhr78tUJ/KNO1w/ZH2WNTCbhvEA/TrqDVoo7B7M/bEcDAl0TKS/I1zHlvxlceAbN1dIPv9uflByeWeyjiYCDR/BDonMopSdBAcxVCwp+J/c5K7m1KSJHCIs41xOxVsbLEFDkxmkeyZ8uuNiMAcwROgpKxvATfw7NZkg/REv6MtCj8bhynYsq1NdmxD608RRWVnK58kP9mbnKJEFELhfHdKMq5l8bimSjSqg6LO652MN3kS1nDK3UKfXHcuSm1kK6NVyxn2S7TCe5LPOa9DTlCv5tZ6sYoTSp4MYxrMdMksRv0M0NqxdN2WUVB7EoSwFt6EhQrIqb/y/Nncm9HyGw01JnRuj8wLx4VtdEUKAcv2yiLKM/zewLA3HKYMkpH8GDYsUDizhh1smM1tTGNRC+rmLhcinkfbKGHUPtzbgep/mDVolFEpOuj+vHjutBpT15JpdWqk6IkiVGTSknVme6KwwTFthlm8W+snOOlWmXSCYga+lvei7h5gGpZQw2/9Wu1kEDlQvYWWovlIaqAd5mVlTmbsSTdHtTw06beXKfWeeTQuxQ/16gh7BkphlGaPGO8bKULVP1vK121+Nowvn3FKcRK3UGBGZci6bwslPMalWwdZMnBJus+j5oezGQ7bQzVT5Y0k0B65ZfOAIZ1rbX47GXx87siGOnCYXXanCYIxMW1n9DJpi3YXEarni1HuH0g2NBlGY8imwVuyIuCw39DnTIt3l5KxIrdaBK2V7Ks0VV3e17ySs5FmKcdlIghQGYQUw1DQczPk2FqQitC4zPS5FE3k4jJNeFHfRv7o05ZQxRmmYPDLxD97ARhvTmLLc+An+kEnGcR1zU8zhzDb7FQC+Lr+SLaXBMIg3pBszsiy0jmGg+SS7udw1mu7oTdUdjSoMmX5TBD+oEoZo5fGzY8go2wNTgUEf0YO+Hz5ihrtShbx3q+bbkDctBd9kFLdRLtr7fOrUR25NSt0MXHHOpnGIV+hG9/tCogg5fwX3e4vmAjuvm8IbZqSFSYroQwANX0xJTnO5Chjt16WZCw6taLach7YbzqdXQVCRcTPuvdP3Yr/89WFOFRSXpWmbxqSqPlYJioG6vCUPQ5hVoXgH9hrVaDKpCBtBunIvctNDeYZqIjayfbPMDOvF/DutVBHpFM7oZDO4cq+yTkHbMjINEl4ohVkc5cWizh3LkrbBCO3ngMEKVsWWNO4FzzOxdHbAI0l8v1S6GHH9wl24+C4OMy7EzkFwDatD71ANsBZN9+kl28oqBDxxjbS9S2QetXIZMKrDtv3508+fT09Pfd/Wkaw8Ok1G4k4Uox8OvrLep+laaBP9kIkksR9XKFN+Q44assC5yVq0L5zG+fl5w3Ka7Q+zhy74FqI/WYlj0Th2BrTeUJLCITDZXBKmxCXwgTJ26QGnMv3K0u6yJo3/n+dVg8Gqq1NuoOhKXclM+0wdmcqDTNk4EU+TdrhpeF2Zkhqk5R4xY0H2WL5zvc7gyZWny2LgvlU/d4qHChoriZ9sMlqzZEJJc6YynzMs3qsnr4gRSDYmIxecJzkZTe5dXVVPKItayCYVMibxIUXq/E7qHIxOKovMPj0YiImOqhgT9eMM/XHvihQDeiQenwbRuGToei3fxy+A3roA+p2rqCMsE2RApu3oZyt6LhC0NGaWUV+m3OoYQ/25vRmbZXNjmrsLygIJw3BFxPq4in3vWv408k/awsNevZatoQR43pSMxHI4ku2+6moSjnj/hHEV0BQo67jqtkp7u8XNXi94kOUeDEZm0sEcpyKJm0v51VwAx+mlGKyaNKCTScA1JpfS0gWDuZOXuV9gbXNVcF45aDc4GkX8qEvP9v7IMox70WebmOlRCACMLE+zNQBkZTKciu1LG2Kh3LbgNmuCY01ZuP4Agrh5n7WVysiP1pWplmU1WoOav664TAEIuLtTKIh3YZdMVKiiNSfDj/1L4dqSRGctM/woScQC7S6eNCN+H4e+vcerq8/9UCeKWTdcSXWP75jVSj2HQ6slKuMBMHg9eFvoy19sOa3F48fvc39XLSymy6PRfjlcsfrWR1ciutbztTQY4EANZshvwQCYHX0KKyVrdXnZ708fPs5ms/H49sOHdrvZ5tAUFImv3RSDOC2nvhhePfTn4IIIpiFssHEU11E0FWxNvEpnnl401wmf17q1UYOEgsq7MUwS1o81Fvn6G11I/3KnScgupusugO/fa5lcKdY83GpUgy9fbsarzwC3G6YW0bYzJVyXNgrPy1QXcZzGMbdrpSjM6aHnUjg39KjCscUfajCzXObIsTIz+S6K251qrTWCezXdouRG9EL2wOE6t3o74xSfueCNiLGl619gc8Yn9z87Qz1KV7Izqg82HSONeCSanEdNMj+hb12DdvS1zotjZKJXjRBXGtsWjTobn2u/mAKsSJUNa1D9evewVj9dsUb1T9tmik4oeFQaYgCf7QSjG8u6A/gLpqqaWmkxZQk3ZQXyawzRdFONocUjNZODz4wthjIm3oNihTmZ9X6VP+1OFTGUAq4/qHZeDLzZ54fIT7me+xji1r0SwdMm7mLJbEQOpruQBwMzELcIOvJ+YRQ3+cwSAwqcJTH2d4NLgT37z7rLhmaQyCXbBWeipUGKYdk8Zr+0knXLqOISEpgouE1lC3HDGTEx240wMt5be6crjS4Y9p2VNUgKgJyGBuk7R1TVeGeuaWTCfutHmeEkGV3FUSonxEhtr7rCu83mp8uI6LMjRobtg4YHso2ny1YB1bpWJt4EZlsruJTAxNDkzjvz9F7szwyFgGPyARDJR6uTLG6xQqksJQ+FJ/lxNX2fd/tjtoPA+5FWePd7U/BK3E3eXR21zrrrq6ONmR2WAzerYMuKjkspgs2+fNRN/NR55kBzFZzutnCjPfsJt/r7DwErXJ850hRBoQVqlTB7ATWjlwWtB1wKnpSBR04BdyH5UidMx5uhBWCnE/dLC2EKijusPucGKLBL00tjNFSYNBkMHUk74xaEAMx+x8o06CV1eWdJ1u4vE9NWHk+/BALsrsYymwg2DDTRDrIFHB1rJpu/v4X30j437wal5hDuu30YCrXX936bJtUfjg8lJMF6D/GdVEWHQQpNFMDW3zrNjDXfANlZaylYpAqxDZSYBqA5U4rEvfQGCoed1LVSR4M3lt56dNmR1nTHiMWvq8AVnopkHIGBZpdf5AJQCy6TGJL0jOmBbRo632e9Fr1AaO0CavdTs2oI0m9UJVDxIuOyf1chZOBxRjjxFKe5l85fcNN1GwSBXW1M4X46ezo5YcBIBrBzKRX2/YNNqd4glN55td4lZUOkBnyT2BlmwBRWvP9oHbmjMzFT7Pk4ViUFsPwEsJzBEKKQCw98ogqoGAbTr3rKS7fwJFPqF9YTqFQ/jtuW90JXIeObtKABNqVG3o1SmqYBBVX0g6BILSc5lb2Wj6BxsmKu18Ob9pVnZ5rkvc9cQvYvFCwCcQ1v4MubBcRyTf1bJ48AiZqaGKACLhUWejZmm/VaK+4uyY7i93qmqlBkxisYi6yNAhgXEvN2bu1Z42f6SyaCKsX9CXwveK8c/sLVk4TjDPbU2aSf9yIyotHrzlW3YnMp7x8Y8nCewZCY9gBXXubcZRDUrJF01LFB9WkQ66lkowmuz/S0qbd3lAnyz7z8yukshtxDun/pwXRb4D5iah5eDFAlfD9ICADhZHvtJ65Cs+a6aYhqp3D5bnBIPJxnx+ny54mZoq+CJW6MFLUllNi1yCrtolIa9py7MK5hTpAQjp9Bkf/XgJP9oA7LXK5IhHi6SjvLLwUajhSXHZYZJeGqHYhSdoy9UuPibMlt7QwBofKH6pdXTS7ktUq2Zi/1wgs/WTcUj1CiffXgg2dCxfqBZHwqIgjcgvs2u4ku6s3m412ti0japhTENjhHX3c8dUX/PkA1l2Q/Ty1EKgBaqR2XyMma2kTJrx4C2EzmzgsjlLo/ins51kwmu5FISL4Cm8biceAipqoYZpAepRQMnSx/rrdhPjiikKeeLTmEh4Ch+EoHkUNvBnkLRVkCYeJOZrhTOmvCEnADRkHCcj4gac6YtHnBL1oaexo0p6qBKvnDDspwddiP/aJWzToQAukoigMKh79OAi5P5wpD89A4B2IPE62SvXG+V9cbKkZFrc5fjUUFeNE//HQcO/6HMy5cgaxt3H7RtTUWlpCiS8r7IpvET8rU/fSqTArwyYfphUchSJihz/aZS8NB14xnuu9juB3szT2nS6kghQr5V5QzMVgwpOrY2UbpO23hfk8abu4eSFGF68p2P3u5JSrznWLjEyrljgTsTUJq5rS8ZtErQ/HXfiQQ7s/jKuUyVYiyLmbhb7iE64NkQz3CnLsVXwgqcMU9TKM/ouXL9CcJJbEuoiLsftLLBNo0XBc2rTyTusoNfb0ExLUz0Zzk5VlSYKI7q7J/4qwrPe4sJO6snurk8xqDJ50q5iaSYrdevQSewVQ31RU7SWBo2tmMGAWo4C9xChs6HNDlXXDuieEz8Nyec/bkIrOcZlH4gZBi04NeCMWLjzblyyzSLgTzDRK8KNL5aKtCw8/XnbpjNZxO/brWVUb/uZgpMnfm5VBsnIWs2NSm9MYn2tJEV4Nuh8vv3/uhrTP14FIue/Sh92ITywuAF8mu6ZNg6Lf3v6bhi9CgO9oT0zBj0UxhCF+O/DJIv/4LEcQVzXOuuzANluWZbMzYI6FodGrUsqNRN3+odZABw9K/vLau3wcQjZoX/HDRAfWfqpPRoKfp+I5N6N7QxTjNX4ijUI2NqKYuZBcI0mSLFW5ekpxsqbKgiFszNefXoieWC8nB6EeoU24BJIaxmSY/XjD4C/2zl/TThLl2zFTSLb4mXOFZeaUgWz5oJevi+iEEatF9W9mAwerh9DYp3/Gjqj0jF0yoxPgNyG2XjVuVQW3pu3seHXP9fu0mavUSdWGZvrvCUHhC8CugFx9+bDn1x+Hfq9Fyupx+/jEcPl44Vtwmure0EybLAgEZuo+emaZ/GcCe14hB1DRnD403cXMUggIghbOMvF8vZdKA9/5IBEP3Ev2t5Qmd71zhPknGZvwu0Cp5+a5KH1F5n5ICuIgm1L06bpz8K0P+Tje/w4VlRRmVgERm80H60pB/MWjYmbnKtL4MmD+rH3dZze8FuGVuADXqOffVbehHIW2njyKrdCiD828DXL8KuXWg6OfbgQ6VMoPWn8OgO/C8YOVLy7ST4D8MnnUR9e8BGLeugS07gxIGU/zaEZOInFx8SC9n0euHDV8NNK3S69xNfe7QMxa7l0K8Gkw3IG7g3r+fwKip32iIPhtghnV1cTWFKwR2RgB0E+r+dDbovECr+b8AYDTDRTT+vOx2fWgTC7uX0x/jL0249uJPpt4ORPQQe1ar3losHheLSqfeWg+12/zzHwxaab+SBu4qwR7W8LYI9g9HbwMbkzxuz9RKksbP/xJM3+AN3uAN3uAN3uAN3uANtvB/OF0IauDbVYcAAAAASUVORK5CYII=); background-image:url(imagenes/roshkaicon.ico)
background-size: 18px 18px; background-size: 18px 18px;
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: center; background-position: center;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment