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: Subir
 *
 */
 public class Subir extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
    /* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#HttpServlet()
	 */
	 
	 static final long serialVersionUID = 0;
	 
	 public Subir() {
		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;

		//Conseguimos la operacion enviada a traves del formulario
		String operacion = request.getParameter("operacion");
		
		String pagina="subir.jsp";

 		SubirBean s=new SubirBean();
		HttpSession session= request.getSession(true);
		
     	/*
     	 * Si la operacion es seleccionadoSubir o seleccionadoBajar recogeremos
     	 * el tipo de documentacion que se quieres subir o bajar
     	 */
		if (operacion.equals("seleccionadoSubir")||operacion.equals("seleccionadoBajar")){
     		
     		pagina="subirDocumentacion.jsp";
     		
     		int numero=0;
     		int i=1;
			String tipo= request.getParameter("tipo");
			
			while(i<12){
				String j=String.valueOf(i);
				if(tipo.equals(j)){
					numero=i;
				}
				i++;
			}
			
			//Recogemos el numero elegido para luego guardarlo en el atributo SubirBean de la sesion
			s.setNumeroElegido(numero);
			
     		session.setAttribute("SubirBean",s);
     		
     		//Comprobamos de que operacion se trata para devolvernos una pagina u otra
     		if(operacion.equals("seleccionadoSubir")){
     			//Si la operaciono es seleccionadoSubir nos llevara a la pagina de subir documentacion
     			pagina="subirDocumentacion.jsp";
     		}else{
     			//Si la operaciono es seleccionadoBajar nos llevara a la pagina de bajar documentacion
     			pagina="bajarDocumentacion.jsp";
     		}    		
     	}
		
		/*
		 * Si la operacion es subirTeoria recogeremos los datos del formulario y llamaremos
		 * a la funcion correspondiente del bean SubirBean para agregar una nueva teoria a
		 * la base de datos
		 */
     	if (operacion.equals("subirTeoria")){
     		
     		
    		String nombre=(String)request.getParameter("nombre");
    		String definicion=(String)request.getParameter("descripcion");
    		String url=(String)request.getParameter("url");
    		  
    		s.subirTeoria(nombre, definicion, url);	
     	}
     	
     	/*
		 * Si la operacion es subirEstrategia recogeremos los datos del formulario y llamaremos
		 * a la funcion correspondiente del bean SubirBean para agregar una nueva estrategia 
		 * a la base de datos
		 */
     	if (operacion.equals("subirEstrategia")){
     		
     		String nombre=(String)request.getParameter("nombre");
    		String definicion=(String)request.getParameter("descripcion");
    		String url=(String)request.getParameter("url");
    		  
    		s.subirEstrategia(nombre, definicion, url);   			  		
     	}
     	
     	/*
		 * Si la operacion es subirEvento recogeremos los datos del formulario y llamaremos
		 * a la funcion correspondiente del bean SubirBean para agregar un nuevo evento a
		 * la base de datos
		 */
     	if (operacion.equals("subirEvento")){
     	
     		String nombre=(String)request.getParameter("nombre");
    		String definicion=(String)request.getParameter("descripcion");
    		String url=(String)request.getParameter("url");
    		String idTeoria=(String)request.getParameter("idTeoria");
    		String idEstrategia=(String)request.getParameter("idEstrategia");
    		int idT=Integer.parseInt(idTeoria);
    		int idE=Integer.parseInt(idEstrategia);
    		  
    		//Comprobamos si el evento esta relacionado con una estrategia y con ninguna teoria
    		if(idTeoria.equals("0")){
    			if(!idEstrategia.equals("0")){
    				s.subirEventoEstrategia(nombre, definicion, idE, url);
    			}
    		}
    		//O si el evento esta relacionado con una teoria y con ninguna estrategia
    		if(idEstrategia.equals("0")){
    			if(!idTeoria.equals("0")){
    				s.subirEventoTeoria(nombre, definicion, idT, url);
    			}
    		}
    		//O si esta relacionado con una teoria y una estrategia
    		if(!(idEstrategia.equals("0")&& idTeoria.equals("0"))){
    			s.subirEvento(nombre, definicion, idT, idE, url);
    		}
    		
     	}
     	
     	/*
		 * Si la operacion es subirTactica recogeremos los datos del formulario y llamaremos
		 * a la funcion correspondiente del bean SubirBean para agregar una nueva tactica a
		 * la base de datos
		 */
     	if (operacion.equals("subirTactica")){
     		
     		String nombre=(String)request.getParameter("nombre");
    		String definicion=(String)request.getParameter("descripcion");
    		String url=(String)request.getParameter("url");
    		String idEvento=(String)request.getParameter("idEvento");
    		int idEv=Integer.parseInt(idEvento);
    		  
    		s.subirTactica(nombre, definicion, idEv, url);
    		   
     	}     	
     	
     	/*
		 * Si la operacion es subirEjemplo recogeremos los datos del formulario y llamaremos
		 * a la funcion correspondiente del bean SubirBean para agregar un nuevo ejemplo a
		 * la base de datos
		 */
     	if (operacion.equals("subirEjemplo")){
     		
     		String definicion=(String)request.getParameter("descripcion");
    		String url=(String)request.getParameter("url");
    		String idTactica=(String)request.getParameter("idTactica");
    		int idT=Integer.parseInt(idTactica);
    		
    		s.subirEjemplo(definicion, idT, url);
    			
     	}
     	
     	/*
		 * Si la operacion es subirPregunta recogeremos los datos del formulario y llamaremos
		 * a la funcion correspondiente del bean SubirBean para agregar una nueva pregunta a
		 * la base de datos
		 */
     	if (operacion.equals("subirPregunta")){
     		
     		String pregunta=(String)request.getParameter("pregunta");
    		String opcion1=(String)request.getParameter("opcion1");
    		String opcion2=(String)request.getParameter("opcion2");
    		String opcion3=(String)request.getParameter("opcion3");
    		String referencia=(String)request.getParameter("referencia");
    		int r=Integer.parseInt(referencia);    		
    		int c=0;
    		String correcta=request.getParameter("correcta");    		

    		if(correcta.equals("1")){ c=1;}
			if(correcta.equals("2")){ c=2;}
			if(correcta.equals("3")){ c=3;}			

    		s.subirPregunta(pregunta, opcion1, opcion2, opcion3, c, r);
     	}
     	
     	/*
		 * Si la operacion es subirPalabra recogeremos los datos del formulario y llamaremos
		 * a la funcion correspondiente del bean SubirBean para agregar una nueva palabra a
		 * la base de datos
		 */
     	if (operacion.equals("subirPalabra")){
     		
     		String palabra=(String)request.getParameter("palabra");
    		String definicion=(String)request.getParameter("descripcion");
    		
    		s.subirPalabra(palabra, definicion);
    		
     		
     	}
     	
     	/*
		 * Si la operacion es subirRelacion recogeremos los datos del formulario y llamaremos
		 * a la funcion correspondiente del bean SubirBean para relacionar una pregunta con 
		 * una evaluacion y aņadirlo en la base de datos
		 */
     	if (operacion.equals("subirRelacion")){
     		
     		String idPregunta=(String)request.getParameter("idPregunta");
    		String idEvaluacion=(String)request.getParameter("idEvaluacion");
    		
    		int idE=Integer.parseInt(idEvaluacion);
    		int idP=Integer.parseInt(idPregunta);
    		s.relacionarPregEva(idE, idP);     		
     	}
     	
     	/*
		 * Si la operacion es subirEvaluacion recogeremos los datos del formulario y llamaremos
		 * a la funcion correspondiente del bean SubirBean para agregar una nueva evaluacion a
		 * la base de datos
		 */
     	if (operacion.equals("subirEvaluacion")){
     		
     		String nombre=(String)request.getParameter("nombre");
     		s.subirEvaluacion(nombre);     		
     	}
     	
     	/*
		 * Si la operacion es subirEnlace recogeremos los datos del formulario y llamaremos
		 * a la funcion correspondiente del bean SubirBean para agregar un nuevo enlace 
		 * a la base de datos
		 */
     	if (operacion.equals("subirEnlace")){
     		
     		String nombre=(String)request.getParameter("nombre");
    		String enlace=(String)request.getParameter("enlace");
    		  
    		s.subirEnlace(nombre, enlace); 			  		
     	}
     	
     	/*
		 * Si la operacion es bajarTeoria recogeremos los datos del formulario y llamaremos
		 * a la funcion correspondiente del bean SubirBean para eliminar una entrada de la 
		 * tabla correspondiente
		 */
     	if (operacion.equals("bajarTeoria")){
     		
     		String idTeoria=(String)request.getParameter("id");
    		int id=Integer.parseInt(idTeoria);
    		s.eliminarTeoria(id);
     	}
     	
     	/*
		 * Si la operacion es bajarEstrategia recogeremos los datos del formulario y llamaremos
		 * a la funcion correspondiente del bean SubirBean para eliminar una entrada de la 
		 * tabla correspondiente
		 */
     	if (operacion.equals("bajarEstrategia")){
     		
     		String idEstrategia=(String)request.getParameter("id");
     		int id=Integer.parseInt(idEstrategia);
     		s.eliminarEstrategia(id);
     	}
     	
     	/*
		 * Si la operacion es bajarEvento recogeremos los datos del formulario y llamaremos
		 * a la funcion correspondiente del bean SubirBean para eliminar una entrada de la 
		 * tabla correspondiente
		 */
     	if (operacion.equals("bajarEvento")){
     		
     		String idEvento=(String)request.getParameter("id");
     		int id=Integer.parseInt(idEvento);
     		s.eliminarEvento(id);
     	}
     	
     	/*
		 * Si la operacion es bajarTactica recogeremos los datos del formulario y llamaremos
		 * a la funcion correspondiente del bean SubirBean para eliminar una entrada de la 
		 * tabla correspondiente
		 */
     	if (operacion.equals("bajarTactica")){

     		String idTactica=(String)request.getParameter("id");
     		int id=Integer.parseInt(idTactica);
     		s.eliminarTactica(id);
     	}     	
     	
     	/*
		 * Si la operacion es bajarEjemplo recogeremos los datos del formulario y llamaremos
		 * a la funcion correspondiente del bean SubirBean para eliminar una entrada de la 
		 * tabla correspondiente
		 */
     	if (operacion.equals("bajarEjemplo")){
     	
     		String idEjemplo=(String)request.getParameter("id");
     		int id=Integer.parseInt(idEjemplo);
     		s.eliminarEjemplo(id);
     	}
     	
     	/*
		 * Si la operacion es bajarPregunta recogeremos los datos del formulario y llamaremos
		 * a la funcion correspondiente del bean SubirBean para eliminar una entrada de la 
		 * tabla correspondiente
		 */
     	if (operacion.equals("bajarPregunta")){
     		
     		String idPregunta=(String)request.getParameter("idPreg");
     		int id=Integer.parseInt(idPregunta);
     		String idEvaluacion=(String)request.getParameter("idEva");
     		int id2=Integer.parseInt(idEvaluacion);
     		s.eliminarEvaPreg(id, id2);
     		s.eliminarPregunta(id);
     	}
     	
     	/*
		 * Si la operacion es bajarPalabra recogeremos los datos del formulario y llamaremos
		 * a la funcion correspondiente del bean SubirBean para eliminar una entrada de la 
		 * tabla correspondiente
		 */
     	if (operacion.equals("bajarPalabra")){

     		String idPalabra=(String)request.getParameter("id");
     		int id=Integer.parseInt(idPalabra);
     		s.eliminarPalabra(id);
     	}
     	
     	/*
		 * Si la operacion es bajarArchivo recogeremos los datos del formulario y llamaremos
		 * a la funcion correspondiente del bean SubirBean para eliminar una entrada de la 
		 * tabla correspondiente
		 */
     	if (operacion.equals("bajarArchivo")){
     		String idArchivo=(String)request.getParameter("id");
     		int id=Integer.parseInt(idArchivo);
     		String nombre=s.getNombreArchivo(id);
     		//ruta del deploy
     		String ruta=s.getRutaArchivo(id);
     		//ruta proyecto
     		String ruta2="C:/Documents and Settings/SSSI/AWJuan/workspace/proyecto/educacion.war/data/";
     		ruta2+=nombre;
     		File f1=new File(ruta);
     		File f2=new File(ruta2);
     		f1.delete();
     		f2.delete();
     		s.eliminarArchivo(id);
     	}
	
     	/*
		 * Si la operacion es bajarEvaluacion recogeremos los datos del formulario y llamaremos
		 * a la funcion correspondiente del bean SubirBean para eliminar una entrada de la 
		 * tabla correspondiente
		 */
     	if (operacion.equals("bajarEvaluacion")){
     		String idEvaluacion=(String)request.getParameter("id");
     		int id=Integer.parseInt(idEvaluacion);
     		s.eliminarEvaluacion(id);
     	}
     	
     	/*
		 * Si la operacion es bajarEnlace recogeremos los datos del formulario y llamaremos
		 * a la funcion correspondiente del bean SubirBean para eliminar una entrada de la 
		 * tabla correspondiente
		 */
     	if (operacion.equals("bajarEnlace")){
     		
     		String idEnlace=(String)request.getParameter("id");
     		int id=Integer.parseInt(idEnlace);
     		s.eliminarEnlace(id);
     	}
     	
		RequestDispatcher dispatcher = request.getRequestDispatcher(pagina);
		dispatcher.forward(request, response); 
	}
 
}   	  	    

