/*
 * ScaleView.java
 *
 * Created on 25 de agosto de 2004, 16:17
 */

package com.fenalco.servlets.supplier;

import java.io.IOException;

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

import com.fenalco.entities.PriceScale;
import com.fenalco.entities.SupplierProduct;
import com.fenalco.entities.User;
import com.fenalco.utilities.MessageBuilder;

/**
 * Carga una escala de precios de la base de datos con el fin de ser presentada
 * en la página escala.jsp
 * 
 * @author Mario Linares Vásquez
 *  
 */
public class ScaleView extends HttpServlet
{

	/**
	 * Inicializa el servlet.
	 */
	public void init( ServletConfig config ) throws ServletException
	{
		super.init(config);

	}

	/**
	 * Método destructor.
	 */
	public void destroy( )
	{

	}

	/**
	 * Procesa las solicitudes de los métodos HTTP <code>GET</code> y
	 * <code>POST</code>. Crea una instancia de la clase
	 * <code>PriceScale</code> utilizando como parámetros un identificador del
	 * producto del proveedor (<CODE>supplierProductId</CODE>), así como un
	 * identificador de la comunidad (<CODE>communityId</CODE>).
	 * 
	 * Este objeto será el utilizado por <CODE>escala.jsp</CODE> para mostrar
	 * la escala de precios asignada a un producto para una comunidad en
	 * particular.
	 * 
	 * @param request
	 *            servlet request
	 * @param response
	 *            servlet response
	 */
	protected void processRequest( HttpServletRequest request,
			HttpServletResponse response ) throws ServletException, IOException
	{
		HttpSession session = request.getSession(false);
		RequestDispatcher dispatcher;
		String url;
		String message = "";

	    try
	    {
	        if( session == null || ( User )session.getAttribute( "user" ) == null || ( ( User )session.getAttribute( "user" ) ).getRoleId() != 2 )
			{
				url = "/logout";
				//message = "Sesión no iniciada";
				message = MessageBuilder.buildMessage(15);
			}
			else
			{
				int supplierProductId = new Integer(request.getParameter("key"))
						.intValue();
				SupplierProduct supplierProduct = new SupplierProduct();
				supplierProduct.loadMinimalData(supplierProductId);
				int communityId = new Integer(request.getParameter("communityId"))
						.intValue();
				PriceScale priceScale = new PriceScale(supplierProductId,
						communityId);
				int nextMin = priceScale.getNextMin();
	
				url = "/proveedor/escala.jsp";
				if( priceScale == null )
				{
					//Fallo al cargar la escala de precios
					//message = "Fallo al cargar la escala de precios";
					message = MessageBuilder.buildMessage(6);
					url = "/proveedor/escala.jsp";
				}
				else
				{
					//message = "La carga de la lista de precios se realizó
					// correctamente";
					//message = MessageBuilder.buildMessage(3);
					message = "";
					url = "/proveedor/escala.jsp";
	
					request.setAttribute("priceScale", priceScale);
					request.setAttribute("nextMin", new Integer(nextMin));
					request.setAttribute("supplierProductId", new Integer(
							supplierProductId));
					request.setAttribute("supplierProductName", supplierProduct
							.getShortDescription());
					request.setAttribute("communityId", new Integer(communityId));
				}
	
			}
	
			if( request.getAttribute("message") != null )
			{
				message = (String) request.getAttribute("message");
			}
	    }
	    catch( Exception e )
	    {
	        url="/logout";
	        message = MessageBuilder.buildMessage(15);
	    }

		request.setAttribute("message", message);
		dispatcher = getServletContext().getRequestDispatcher(url);
		dispatcher.forward(request, response);
	}

	/**
	 * Procesa el método HTTP <code>GET</code>.
	 * 
	 * @param request
	 *            servlet request
	 * @param response
	 *            servlet response
	 */
	protected void doGet( HttpServletRequest request,
			HttpServletResponse response ) throws ServletException, IOException
	{
		processRequest(request, response);
	}

	/**
	 * Procesa el método HTTP <code>POST</code>.
	 * 
	 * @param request
	 *            servlet request
	 * @param response
	 *            servlet response
	 */
	protected void doPost( HttpServletRequest request,
			HttpServletResponse response ) throws ServletException, IOException
	{
		processRequest(request, response);
	}

	/**
	 * Retorna una breve descripción de el servlet.
	 */
	public String getServletInfo( )
	{
		return "Short description";
	}

}