package com.atrium.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

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

import net.sf.json.JSONSerializer;

import com.atrium.hibernate.Usuarios;
import com.atrium.hibernate.modelo.IGestion_Usuario;
import com.atrium.spring.Acceso_ApplicationContext;

/**
 * Procesos de peticones AJAX de la pagina de administracion.
 * 
 * @author Roxana Ariza Sánchez.
 *  
 */
public class Controlador_AJAX extends HttpServlet {

	/**
	 * The doGet method of the servlet. <br>
	 * 
	 * This method is called when a form has its tag value method equals to get.
	 * 
	 * @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 doGet(HttpServletRequest peticion, HttpServletResponse respuesta)
			throws ServletException, IOException {
		IGestion_Usuario gestion_usuario;
		List<Usuarios> lista_usuarios = null;
		String salida = null;
		// RECOGEMOS ELTIPO DE PETICION PEDIDA PARA OPERAR
		String tipo_operacion = peticion.getParameter("tipo_operacion");
		//OPERACIONES SEGUN PETICION
		if (tipo_operacion.equalsIgnoreCase("ayuda_usuarios")) {
			gestion_usuario = Acceso_ApplicationContext
					.getBean(IGestion_Usuario.class);
			lista_usuarios = gestion_usuario.consultar_Todos();
			// ELIMINAMOS LAS CARGAS VAGAS PENDIENTES
			for (Usuarios usuario : lista_usuarios) {
				usuario.setRoles(null);
			}
			// CONVERSION A FORMATO JSON
			salida = JSONSerializer.toJSON(lista_usuarios).toString();
		}
		if (tipo_operacion.equalsIgnoreCase("datos_usuarios")) {
			gestion_usuario = Acceso_ApplicationContext
					.getBean(IGestion_Usuario.class);
			Usuarios usuario = gestion_usuario.consultar_ConRol(peticion
					.getParameter("usuario"));
			// ELIMINAMOS LAS CARGAS VAGAS ANTES DE LA CONVERSION
			if (usuario != null && usuario.getRoles() != null) {
				usuario.getRoles().setTareases(null);
				usuario.getRoles().setUsuarioses(null);
			}
			// CONVERTIMOS A FORMATO JSON
			salida = JSONSerializer.toJSON(usuario).toString();
		}
		// PREPARAMOS LA RESPUESTA Y SE ENVIA AL CLIENTE
		respuesta.setContentType("text/plain");
		respuesta.getWriter().print(salida);
	}

}
