package com.atrium.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.util.ResourceBundle;

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

import com.atrium.hibernate.Roles;
import com.atrium.hibernate.Usuarios;
import com.atrium.negocio.ILogica_GestionUsuarios;
import com.atrium.reflexion.Cargar_Valores;
import com.atrium.spring.Acceso_ApplicationContext;

/**
 * Gestion de los procesos CRUD de usuarios.
 * 
 * @author Roxana Ariza Sánchez.
 *  
 */
public class Controlador_Usuarios extends HttpServlet {

	/**
	 * The doPost method of the servlet. <br>
	 * 
	 * This method is called when a form has its tag value method equals to
	 * post.
	 * 
	 * @param request
	 *            the request send by the client to the server
	 * @param response
	 *            the response send by the server to the client
	 * @throws ServletException
	 *             if an error occurred
	 * @throws IOException
	 *             if an error occurred
	 */
	public void doPost(HttpServletRequest peticion,
			HttpServletResponse respuesta) throws ServletException, IOException {
		// RECOGEMOS EL BOTON PULSADO POR EL USUARIO EN EL FORMULARIO
		String opcion = peticion.getParameter("boton");
		// PREPARO LAS VARIABLES DE PROCESO PARA LA GESTION DE LOS USUARIOS
		String resultado_opcion = null;
		String bm = "disabled";
		String balta = "";
		String salida = "jsp/inicio.jsp?tarea=administracion.jsp";
		ILogica_GestionUsuarios neg_usuarios = null;
		Usuarios usuario = null;
		// EN CASO DE PULSAR CUALQUIER BOTON QUE NO SEA SALIR
		if (!opcion.equals("Salir")) {
			// CREAMOS EL OBJETO DE LOGICA
			neg_usuarios = Acceso_ApplicationContext
					.getBean(ILogica_GestionUsuarios.class);
			// CREAMOS Y CARGAMOS EL OBJETO DE DOMINIO
			usuario = new Usuarios();
			Cargar_Valores.cargar_Peticion(usuario, peticion);
			// CARGAMOS EL ROL ELEGIDO POR EL USUARIO
			String rol_elegido = peticion.getParameter("rol");
			if (!rol_elegido.equals("-1")) {
				Roles rol_nuevo = new Roles();
				rol_nuevo.setCodigoRol(new Byte(rol_elegido));
				usuario.setRoles(rol_nuevo);
			}
		}
		// LLAMADA A LOS DISTINTOS PROCESOS DE LA GESTION DE LOS USUARIOS
		if (opcion.equals("Alta")) {
			try {
				neg_usuarios.alta_Usuario(usuario);
				usuario = new Usuarios();
				resultado_opcion = "ALTA CORRECTA";
			} catch (Exception e) {
				resultado_opcion = "ALTA ERRONEA";
			}
		}
		if (opcion.equals("Baja")) {
			try {
				neg_usuarios.baja_Usuarios(usuario);
				resultado_opcion = "BAJA CORRECTA";
				usuario = new Usuarios();
				balta = "";
			} catch (Exception e) {
				resultado_opcion = "BAJA ERRONEA";
			}
		}
		if (opcion.equals("Modificacion")) {
			try {
				neg_usuarios.modificacion_Usuarios(usuario);
				resultado_opcion = "MODIFICACION CORRECTA";
				usuario = new Usuarios();
				balta = "";
			} catch (Exception e) {
				resultado_opcion = "MODIFICACION ERRONEA";
			}
		}
		if (opcion.equals("Consulta")) {

		}
		if (opcion.equals("Salir")) {
			// REGRESAMOS A LA PAGINA DE INICIO
			salida = "jsp/inicio.jsp?tarea=inicial.jsp";
			// LIMPIAMOS LOS OBJETOS NO NECESARIOS
			peticion.getSession().removeAttribute("lista_roles");
		}
		
		peticion.setAttribute("mensaje_usuario", resultado_opcion);
		peticion.setAttribute("bm", bm);
		peticion.setAttribute("balta", balta);
		peticion.setAttribute("usuario_trabajo", usuario);
		// VOLVEMOS A LA PAGINA DE ADMINISTRACION
		RequestDispatcher pagina_salida = peticion.getRequestDispatcher(salida);
		pagina_salida.forward(peticion, respuesta);
	}

}
