package educacion;

import java.io.*;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


/**
 * Servlet implementation class for Servlet: Login
 *
 */
 public class Login extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
    /* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#HttpServlet()
	 */
	 
	 static final long serialVersionUID = 0;
	 
	public Login() {
		super();
	}   	
	
	/* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doPost(request,response);
	}  	
	
	/* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//private static Connection conDB = null;
		//private static String DBUrl;
		
		//Recogemos la operacion que recibe el servlet del formulario
		String operacion = request.getParameter("operacion");
		String pagina="Login.jsp";
		
		/*
		 * Si la operacion es entrar comprobaremos que el usuario y password son correctos
		 */
     	if (operacion.equals("entrar")){
     		
     	//Recogemos el usuario y password que se envia en el formulario	
		String usuario=(String)request.getParameter("usuario");
		String pass=(String)request.getParameter("pass");
		String password;
		String nombre;
		
		boolean correcto;
		
		HttpSession session= request.getSession(true);
		UsuarioBean u= (UsuarioBean)session.getAttribute("usuario");
		if(u==null){
			u = new UsuarioBean();
			session.setAttribute("usuario",u);
		}
		if(usuario==null || pass==null){ 
			//alguno de los campos esta vacio
			u.setMensaje("Error al introducir usuario o password");
			correcto=false;
			pagina="Login.jsp";
		}else{
			try{
					//Comprobamos que existe un usuario con el identificador introducido
					if(u.existeUsuario(usuario)){
					
						//Introducimos el identificador del usuario para conseguir el nombre y la clave
						u.setIdUsuario(usuario);
						nombre=u.getNombre();					
						password=u.getClave();
					
						//Comprobamos que el password introducido corresponde con el almacenado en la base de datos
						if(password.compareTo(pass)==0){
							correcto=true;
							pagina="principal.jsp";
							u.setNombre(nombre);
							u.setClave(password);
						}else{
							//Sino coinciden los passwords se enviara de nuevo a la pagina de login
							u.setMensaje("Usuario o contraseņa incorrectos");
							correcto=false;
							pagina="Login.jsp";
						}
						u.setCorrecto(correcto);
					}else{
						//Sino existe ese identificador de usuario en la base de datos devolveremos la pagina de login
						u.setMensaje("Usuario o contraseņa incorrectos");
						correcto=false;
						pagina="Login.jsp";
					}	
				
			}catch(Exception e){e.printStackTrace();}
		}
	}
     	/*
		 * Si la operacion es registrar se recogen los datos del formulario del nuevo usuario
		 */
	if(operacion.equals("registrar")){
		
		HttpSession session= request.getSession(true);
		UsuarioBean u= (UsuarioBean)session.getAttribute("usuario");
		
		if(u==null){
			u = new UsuarioBean();
			session.setAttribute("usuario",u);
		}
		
		String nombre=(String)request.getParameter("nombre");
		String idUsuario=(String)request.getParameter("idUsuario");
		String pass=(String)request.getParameter("pass");
		int tipo;
		if((request.getParameter("1")!= null)){
			tipo=1;
	    }else{
	    	tipo=2;
	    }
		
		  
			
			//Comprobamos si el usuario que vamos a registrar existe ya o no
			if(u.existeUsuario(idUsuario)){
				u.setMensaje("El usuario ya esta registrado");
				pagina="registro.jsp";
			}
			else{
				//Sino existe creamos un nuevo usuario
				u.nuevoUsuario(idUsuario, nombre, pass, tipo);
				u.setMensaje("Usuario registrado correctamente");
				pagina="registro.jsp";
			}
		
	}
	/*
	 * Si la operacion es eliminar recogemos el identificador del usuario a eliminar que 
	 * se pasa al formulario
	 */
	if(operacion.equals("eliminar")){
		
		HttpSession session= request.getSession(true);
		UsuarioBean u= (UsuarioBean)session.getAttribute("usuario");
		pagina="listar.jsp";
		if(u==null){
			u = new UsuarioBean();
			session.setAttribute("usuario",u);
		}
		String idUsuario=(String)request.getParameter("idUsuario");
		
		
			//Comprobamos si el usuario que vamos a registrar existe ya o no
			if(u.existeUsuario(idUsuario)){
				u.borrarUsuario(idUsuario);
				u.setMensaje2("Usuario eliminado correctamente");
			}else{
				u.setMensaje2("El usuario no esta registrado");
			}
		
	}
	/*
	 * Si la operacion es buscar el significado de una palabra recogemos el identificador 
	 * de la palabra seleccionada y consultamos su significado
	 */
	if(operacion.equals("buscar")){
		
		BuscadorBean b=new BuscadorBean();
		HttpSession session= request.getSession(true);
		String palabra = request.getParameter("palabra");	
		
			int idPalabra=0;
			int numeroPalabras= b.getNumeroPalabras();
			int i=1;
			
			while(i!=numeroPalabras+1){
				String j=String.valueOf(i);
				if(palabra.equals(j)){
					idPalabra=i;
				}
				i++;
			}
			
			//Recogemos la palabra y su definicion y lo guardamos en el atributo
			// buscador de la sesion
			
			String pal=b.getPalabra(idPalabra);
			b.setPalabra(pal);
			String definicion=b.getDefinicion(idPalabra);
			b.setDefinicion(definicion);
			b.setIdPalabra(idPalabra);
			session.setAttribute("buscador",b);
			
			//El servlet nos devolvera de nuevo a la pagina del glosario 
			pagina="buscador.jsp";
		
	}
		RequestDispatcher dispatcher = request.getRequestDispatcher(pagina);
		dispatcher.forward(request, response); 
		//Conexion.desconecta();
	}  
}   	  	    
