Commit 6f8c22e7 by Jose Baez

Merge branch 'crearBootcamp2' into 'develop'

Crear bootcamp2

See merge request !26
parents ae9d434c 6e74c551
......@@ -3,9 +3,9 @@ package com.roshka.proyectofinal.bootcamp;
import com.roshka.proyectofinal.DataBase;
import com.roshka.proyectofinal.entity.Bootcamp;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class BootcampDao {
......@@ -33,4 +33,107 @@ public class BootcampDao {
return status;
}
public static int update(Bootcamp b){
int status=0;
try{
Connection con= DataBase.getConnection();
PreparedStatement ps=con.prepareStatement(
"update Bootcamp set id_lenguaje=?,id_profesor=?,fecha_inicio=?,fecha_fin=?,descripcion=?,titulo=?,activo=? where id=?");
ps.setInt(1,b.getId_lenguaje());
ps.setInt(2,b.getId_profesor());
ps.setString(3,b.getFecha_inicio());
ps.setString(4,b.getFecha_fin());
ps.setString(5,b.getDescripcion());
ps.setString(6,b.getTitulo());
ps.setBoolean(7,b.getActivo());
ps.setInt(8,b.getId());
status=ps.executeUpdate();
con.close();
}catch(Exception ex){ex.printStackTrace();}
return status;
}
public static List<Bootcamp> listar(){
ArrayList<Bootcamp> list = new ArrayList<>();
String sql = "select a.id, a.fecha_inicio, a.fecha_fin, a.descripcion, a.titulo,\n" +
"a.activo, b.nombre_lenguaje, c.nombre, c.apellido \n" +
"from bootcamp a\n" +
"inner join lenguaje b\n" +
"on a.id_lenguaje=b.id\n" +
"inner join profesor c\n" +
"on a.id_profesor=c.id";
try{
Connection con= DataBase.getConnection();
PreparedStatement ps=con.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while(rs.next()){
Bootcamp boot = new Bootcamp();
boot.setId(rs.getInt("id"));
boot.setActivo(rs.getBoolean("activo"));
boot.setDescripcion(rs.getString("descripcion"));
boot.setTitulo(rs.getString("titulo"));
boot.setFecha_fin(rs.getString("fecha_fin"));
boot.setFecha_inicio(rs.getString("fecha_inicio"));
boot.setNombre_profesor(rs.getString("nombre"));
boot.setApellido_profesor(rs.getString("apellido"));
boot.setNombre_lenguaje(rs.getString("nombre_lenguaje"));
list.add(boot);
}
con.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
return list;
}
public static int delete(int id){
int status=0;
try{
Connection con=DataBase.getConnection();
PreparedStatement ps=con.prepareStatement("delete from bootcamp where id=?");
ps.setInt(1,id);
status=ps.executeUpdate();
con.close();
}catch(Exception e){e.printStackTrace();}
return status;
}
public static Bootcamp getBootcampById(int id){
Bootcamp b=new Bootcamp();
try{
Connection con=DataBase.getConnection();
PreparedStatement ps=con.prepareStatement("select * from bootcamp where id=?");
ps.setInt(1,id);
ResultSet rs=ps.executeQuery();
if(rs.next()){
b.setId(rs.getInt("id"));
b.setActivo(rs.getBoolean("activo"));
b.setDescripcion(rs.getString("descripcion"));
b.setTitulo(rs.getString("titulo"));
b.setFecha_fin(rs.getString("fecha_fin"));
b.setFecha_inicio(rs.getString("fecha_inicio"));
b.setNombre_profesor(rs.getString("nombre"));
b.setApellido_profesor(rs.getString("apellido"));
b.setNombre_lenguaje(rs.getString("nombre_lenguaje"));
b.setImagen(rs.getString("imagen"));
}
con.close();
}catch(Exception ex){ex.printStackTrace();}
return b;
}
}
package com.roshka.proyectofinal.bootcamp;
import java.io.IOException;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@WebServlet("/DeleteServletBootcamp")
public class DeleteServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String sid=request.getParameter("id");
int id=Integer.parseInt(sid);
System.out.println("Este es el id " + id);
BootcampDao.delete(id);
response.sendRedirect("formulario_bootcamp.jsp");
}
}
package com.roshka.proyectofinal.bootcamp;
import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.ServletException;
import java.io.IOException;
public class EditServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
String sid=request.getParameter("id");
int id=Integer.parseInt(sid);
request.setAttribute("id", id);
RequestDispatcher rd = request.getRequestDispatcher("formulario_bootcamp.jsp");
rd.forward(request, response);
}
}
\ No newline at end of file
......@@ -28,8 +28,6 @@ public class SaveServlet extends HttpServlet {
activo = true;
}
Bootcamp b =new Bootcamp( id_lenguaje, id_profesor, fecha_inicio, fecha_fin, descripcion, imagen, titulo, activo);
int status= BootcampDao.save(b);
......
......@@ -2,7 +2,7 @@ package com.roshka.proyectofinal.entity;
public class Bootcamp {
private int id, id_lenguaje, id_profesor;
private String fecha_inicio,fecha_fin,descripcion,imagen,titulo;
private String fecha_inicio,fecha_fin,descripcion,imagen,titulo, nombre_profesor, apellido_profesor, nombre_lenguaje;
private boolean activo;
public Bootcamp() {
......@@ -24,6 +24,10 @@ public class Bootcamp {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getId_lenguaje() {
return id_lenguaje;
}
......@@ -81,12 +85,35 @@ public class Bootcamp {
}
public boolean getActivo() {
return activo;
return this.activo;
}
public void setActivo(boolean activo) {
this.activo = activo;
public boolean setActivo(boolean activo) {
return this.activo = activo;
}
public String getNombre_profesor() {
return nombre_profesor;
}
public void setNombre_profesor(String nombre_profesor) {
this.nombre_profesor = nombre_profesor;
}
public String getApellido_profesor() {
return apellido_profesor;
}
public void setApellido_profesor(String apellido_profesor) {
this.apellido_profesor = apellido_profesor;
}
public String getNombre_lenguaje() {
return nombre_lenguaje;
}
public void setNombre_lenguaje(String nombre_lenguaje) {
this.nombre_lenguaje = nombre_lenguaje;
}
}
......@@ -15,6 +15,14 @@ public class Profesor {
this.correo = correo;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNombre() {
return nombre;
}
......
package com.roshka.proyectofinal.lenguaje;
import com.roshka.proyectofinal.entity.Lenguaje;
import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
......@@ -9,16 +7,15 @@ import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
@WebServlet("/ProyectoFinal-Bootcamp/crearBootcamp")
public class ObtenerLenguaje extends HttpServlet {
@WebServlet("/DeleteServletLenguaje")
public class DeleteServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
List<Lenguaje> len = LenguajeDao.listar();
request.setAttribute("listaLenguaje", len);
RequestDispatcher rqd = request.getRequestDispatcher("./formulario_bootcamp.jsp");
rqd.forward(request, response);
String sid=request.getParameter("id");
int id=Integer.parseInt(sid);
System.out.println("Este es el id " + id);
LenguajeDao.delete(id);
response.sendRedirect("formulario_lenguaje.jsp");
}
}
package com.roshka.proyectofinal.lenguaje;
import com.roshka.proyectofinal.DataBase;
import com.roshka.proyectofinal.entity.Bootcamp;
import com.roshka.proyectofinal.entity.Lenguaje;
import jakarta.servlet.RequestDispatcher;
......@@ -19,6 +20,7 @@ public class LenguajeDao {
Connection con= DataBase.getConnection();
PreparedStatement ps=con.prepareStatement(
"insert into lenguaje (nombre_lenguaje) values (?)");
ps.setString(1,l.getNombre_lenguaje());
status=ps.executeUpdate();
......@@ -49,4 +51,37 @@ public class LenguajeDao {
}
return list;
}
public static int delete(int id){
int status=0;
try{
Connection con=DataBase.getConnection();
PreparedStatement ps=con.prepareStatement("delete from lenguaje where id=?");
ps.setInt(1,id);
status=ps.executeUpdate();
con.close();
}catch(Exception e){e.printStackTrace();}
return status;
}
public static Lenguaje getLenguajeById(int id){
Lenguaje lenguaje=new Lenguaje();
try{
Connection con=DataBase.getConnection();
PreparedStatement ps=con.prepareStatement("select * from lenguaje where id=?");
ps.setInt(1,id);
ResultSet rs=ps.executeQuery();
if(rs.next()){
lenguaje.setId(rs.getInt("id"));
lenguaje.setNombre_lenguaje(rs.getString("nombre_lenguaje"));
}
con.close();
}catch(Exception ex){ex.printStackTrace();}
return lenguaje;
}
}
......@@ -2,6 +2,7 @@ package com.roshka.proyectofinal.lenguaje;
import com.roshka.proyectofinal.entity.Lenguaje;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
......@@ -9,6 +10,7 @@ import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/SaveServletLenguaje")
public class SaveServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
......@@ -23,7 +25,7 @@ public class SaveServlet extends HttpServlet {
int status=LenguajeDao.save(l);
if(status>0){
out.print("<p>Record saved successfully!</p>");
request.getRequestDispatcher("index.html").include(request, response);
request.getRequestDispatcher("formulario_lenguaje.jsp").include(request, response);
}else{
out.println("Sorry! unable to save record");
}
......
package com.roshka.proyectofinal.profesor;
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;
@WebServlet("/DeleteServletProfesor")
public class DeleteServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String sid=request.getParameter("id");
int id=Integer.parseInt(sid);
ProfesorDao.delete(id);
response.sendRedirect("formulario_profesor.jsp");
}
}
......@@ -5,6 +5,10 @@ import com.roshka.proyectofinal.entity.Profesor;
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 ProfesorDao {
......@@ -26,4 +30,67 @@ public class ProfesorDao {
return status;
}
public static List<Profesor> listar(){
ArrayList<Profesor> list = new ArrayList<>();
String sql = "select * from profesor";
try{
Connection con= DataBase.getConnection();
PreparedStatement ps=con.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while(rs.next()){
Profesor profe = new Profesor();
profe.setId(rs.getInt("id"));
profe.setNombre(rs.getString("nombre"));
profe.setApellido(rs.getString("apellido"));
profe.setNro_cedula(rs.getInt("nro_cedula"));
profe.setCorreo(rs.getString("correo"));
list.add(profe);
}
con.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
return list;
}
public static int delete(int id){
int status=0;
try{
Connection con=DataBase.getConnection();
PreparedStatement ps=con.prepareStatement("delete from profesor where id=?");
ps.setInt(1,id);
status=ps.executeUpdate();
con.close();
}catch(Exception e){e.printStackTrace();}
return status;
}
public static Profesor getProfesorById(int id){
Profesor p=new Profesor();
try{
Connection con=DataBase.getConnection();
PreparedStatement ps=con.prepareStatement("select * from profesor where id=?");
ps.setInt(1,id);
ResultSet rs=ps.executeQuery();
if(rs.next()){
p.setId(rs.getInt("id"));
p.setNombre(rs.getString("nombre"));
p.setApellido(rs.getString("apellido"));
p.setNro_cedula(rs.getInt("nro_cedula"));
p.setCorreo(rs.getString("correo"));
}
con.close();
}catch(Exception ex){ex.printStackTrace();}
return p;
}
}
......@@ -2,6 +2,7 @@ package com.roshka.proyectofinal.profesor;
import com.roshka.proyectofinal.entity.Profesor;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
......@@ -9,6 +10,7 @@ import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/SaveServletProfesor")
public class SaveServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
......@@ -25,7 +27,7 @@ public class SaveServlet extends HttpServlet {
int status=ProfesorDao.save(p);
if(status>0){
out.print("<p>Record saved successfully!</p>");
request.getRequestDispatcher("index.html").include(request, response);
request.getRequestDispatcher("formulario_profesor.jsp").include(request, response);
}else{
out.println("Sorry! unable to save record");
}
......
package com.roshka.proyectofinal.usuario;
import com.roshka.proyectofinal.entity.Usuario;
import com.roshka.proyectofinal.profesor.ProfesorDao;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class SaveServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
String nombre=request.getParameter("nombre");
String apellido=request.getParameter("apellido");
String email=request.getParameter("correo");
String contrasena=request.getParameter("contrasena");
Usuario u =new Usuario(nombre, apellido, email, contrasena);
int status= UsuarioDao.save(u);
if(status>0){
out.print("<p>Record saved successfully!</p>");
request.getRequestDispatcher("index.html").include(request, response);
}else{
out.println("Sorry! unable to save record");
}
out.close();
}
}
package com.roshka.proyectofinal.usuario;
import com.roshka.proyectofinal.DataBase;
import com.roshka.proyectofinal.entity.Usuario;
import java.sql.Connection;
import java.sql.PreparedStatement;
public class UsuarioDao {
public static int save(Usuario u){
int status=0;
try{
Connection con= DataBase.getConnection();
PreparedStatement ps=con.prepareStatement(
"insert into usuario (nombre,apellido,contrasena,correo) values (?,?,?,?)");
ps.setString(1,u.getNombre());
ps.setString(2,u.getApellido());
ps.setString(3,u.getContrasena());
ps.setString(4,u.getCorreo());
status=ps.executeUpdate();
con.close();
}catch(Exception ex){ex.printStackTrace();}
return status;
}
}
......@@ -13,13 +13,18 @@
<div class="container">
<h1>Crear Bootcamp</h1>
<%@ 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.entity.Bootcamp, com.roshka.proyectofinal.lenguaje.LenguajeDao, com.roshka.proyectofinal.bootcamp.BootcampDao, com.roshka.proyectofinal.entity.Profesor, com.roshka.proyectofinal.profesor.ProfesorDao, java.util.List,java.util.Iterator" %>
<%
LenguajeDao lenDao = new LenguajeDao();
List<Lenguaje> listLenguaje = lenDao.listar();
Iterator<Lenguaje> iter = listLenguaje.iterator();
Lenguaje len = null;
Lenguaje len = null;
ProfesorDao profeDao = new ProfesorDao();
List<Profesor> listProfesor = profeDao.listar();
Iterator<Profesor> iterProfe = listProfesor.iterator();
Profesor profe = null;
%>
<form action="" method="post">
<label for="lenguaje">Lenguajes:</label>
......@@ -33,6 +38,70 @@
</option>
<% } %>
</select>
<label for="lenguaje">Profesores:</label>
<select name="lenguaje" id="lenguaje">
<% while(iterProfe.hasNext()){
profe = iterProfe.next();
%>
<option value=<%= profe.getId() %> >
<%= profe.getNombre() + " " + profe.getApellido() %>
</option>
<% } %>
</select>
</form>
</div>
<div>
<%
BootcampDao bootDao = new BootcampDao();
List<Bootcamp> listBoot = bootDao.listar();
Iterator<Bootcamp> iterBoot = listBoot.iterator();
Bootcamp boot = null;
%>
<table>
<thead>
<tr>
<th>Titulo</th>
<th>Descripcion</th>
<th>fecha de Inicio</th>
<th>Fecha de Fin</th>
<th>Lenguaje</th>
<th>Profesor</th>
<th>Activo</th>
</tr>
</thead>
<tbody>
<% while(iterBoot.hasNext()){
boot = iterBoot.next();
%>
<tr>
<th> <%= boot.getTitulo() %> </th>
<th> <%= boot.getDescripcion() %> </th>
<th> <%= boot.getFecha_inicio() %> </th>
<th> <%= boot.getFecha_fin() %> </th>
<th> <%= boot.getNombre_lenguaje() %> </th>
<th> <%= boot.getNombre_profesor() + " " + boot.getApellido_profesor() %> </th>
<th> <%= boot.getActivo() %> </th>
<th> <form action="/bootcamp/EditServlet">
<input type="hidden" name="id" value=<%= boot.getId() %>>
<input type="submit" value="Editar" > </input>
</form>
</th>
<th>
<form action="DeleteServletBootcamp" method="get">
<input type="hidden" name="id" value= <%= boot.getId() %> >
<input type="submit" value="Borrar" > </input>
</form>
</th>
</tr>
<% } %>
</tbody>
</table>
</form>
</div>
</body>
......
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="css/bootstrap.css" rel="stylesheet" type="text/css" />
<title>JSP Page</title>
</head>
<body>
<div>
<h1>Crear Lenguaje</h1>
<%@ page import="com.roshka.proyectofinal.entity.Lenguaje, com.roshka.proyectofinal.lenguaje.LenguajeDao, java.util.List,java.util.Iterator" %>
</div>
<div>
<%
LenguajeDao lenDao = new LenguajeDao();
List<Lenguaje> listLen = lenDao.listar();
Iterator<Lenguaje> iterLen = listLen.iterator();
Lenguaje lenguaje = null;
%>
<form method="post" action="SaveServletLenguaje">
<label for="nombre_lenguaje">
Nombre del Lenguaje nuevo:
</label>
<input name="nombre_lenguaje">
</input>
<button type="submit">
Crear Lenguaje
</button>
</form>
<table>
<thead>
<tr>
<th>Lenguaje</th>
<th>Editar</th>
<th>Eliminar</th>
</tr>
</thead>
<tbody>
<% while(iterLen.hasNext()){
lenguaje = iterLen.next();
%>
<th> <%= lenguaje.getNombre_lenguaje() %> </th>
<th> <form action="EditServlet" method="get">
<input type="hidden" name="id" value=<%= lenguaje.getId() %>>
<input type="submit" value="Editar" > </input>
</form>
</th>
<th>
<form action="DeleteServletLenguaje" method="get">
<input type="hidden" name="id" value= <%= lenguaje.getId() %> >
<input type="submit" value="Borrar" > </input>
</form>
</th>
</tr>
<% } %>
</tbody>
</table>
</form>
</div>
</body>
</html>
\ No newline at end of file
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="css/bootstrap.css" rel="stylesheet" type="text/css" />
<title>JSP Page</title>
</head>
<body>
<div>
<h1>Crear Profesor</h1>
<%@ page import="com.roshka.proyectofinal.entity.Profesor, com.roshka.proyectofinal.profesor.ProfesorDao, java.util.List,java.util.Iterator" %>
</div>
<div>
<%
ProfesorDao profeDao = new ProfesorDao();
List<Profesor> listProfe = profeDao.listar();
Iterator<Profesor> iterProfe = listProfe.iterator();
Profesor profesor = null;
%>
<form method="post" action="SaveServletProfesor">
<label for="nombre">
Nombre:
</label>
<input name="nombre"></input>
<label for="apellido">
Apellido:
</label>
<input name="apellido"></input>
<label for="correo">
Correo:
</label>
<input name="correo"></input>
<label for="nro_cedula">
Numero de Cedula:
</label>
<input name="nro_cedula"></input>
<button type="submit">
Crear Profesor
</button>
</form>
<table>
<thead>
<tr>
<th>Nombre</th>
<th>Apellido</th>
<th>Numero de Cedula</th>
<th>Correo</th>
<th>Editar</th>
<th>Eliminar</th>
</tr>
</thead>
<tbody>
<% while(iterProfe.hasNext()){
profesor = iterProfe.next();
%>
<th> <%= profesor.getNombre() %> </th>
<th> <%= profesor.getApellido() %> </th>
<th> <%= profesor.getNro_cedula() %> </th>
<th> <%= profesor.getCorreo() %> </th>
<th> <form action="EditServlet" method="get">
<input type="hidden" name="id" value=<%= profesor.getId() %>>
<input type="submit" value="Editar" > </input>
</form>
</th>
<th>
<form action="DeleteServletProfesor" method="get">
<input type="hidden" name="id" value= <%= profesor.getId() %> >
<input type="submit" value="Borrar" ></input>
</form>
</th>
</tr>
<% } %>
</tbody>
</table>
</form>
</div>
</body>
</html>
\ No newline at end of file
......@@ -23,6 +23,7 @@
<!-- logo con link -->
</div>
<div class="menu">
<ul>
<li class="link-menu"><a href="">Home</a></li>
<li class="link-menu"><a href="formulario.jsp">Postulate</a></li>
......@@ -30,7 +31,12 @@
<li class="link-menu"><a href="login.jsp">Login</a>
<li class="link-menu"><a href="protected">Recurso Protegido</a></li>
</li>
<li class="link-menu"><a href="formulario_lenguaje.jsp">Crear lenguaje</a>
</li>
<li class="link-menu"><a href="formulario_profesor.jsp">Crear profesor</a>
</li>
</ul>
</div>
<!-- menu -->
</div>
......
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