/*
 * SuperOffersHandler.java
 *
 * Created on 10 de agosto de 2004, 17:57
 */

package com.fenalco.servlets.shopkeeper;

import java.io.IOException;
import java.io.File;

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.Community;
import com.fenalco.entities.Store;
import com.fenalco.entities.SuperOffer;
import com.fenalco.entities.User;
import com.fenalco.utilities.MessageBuilder;
import com.fenalco.entities.SupplierProduct;

/**
 * Este servlet procesa las solictudes de visualización de la información
 * detallada referente a una superoferta, de tal forma que carga la información
 * de la superoferta como una instancia de la clase <CODE>SuperOffer</CODE> de
 * acuerdo con el parámetro <CODE>id</CODE> y luego la envía a la página
 * versuperoferta.jsp como un atributo con nombre <CODE>view</CODE>. También
 * construye la list de establecimientos del minorista que aparecen en
 * versuperoferta.jsp con el fin que el minorista pueda seleccionar el destino
 * de compra de la superoferta.
 * 
 * @author Mario Linares Vásquez
 */
public class SuperOffersHandler extends HttpServlet
{

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

	}

	/**
	 * Destructor de el servlet.
	 */
	public void destroy( )
	{

	}

	/**
	 * Procesa las solicitudes de los métodos HTTP <code>GET</code> y
	 * <code>POST</code>. Este método construye una instancia de la clase
	 * <CODE>SuperOffer</CODE> con el parámetro <CODE>id</CODE> del <CODE>
	 * request</CODE>, que luego es cargada en el <CODE>response</CODE> como
	 * un atributo con nombre <CODE>view</CODE>. También crea una instancia
	 * de la clase <CODE>StoresList</CODE> con id del usuario de la sesión y
	 * lo envia en el <CODE>reponse</CODE> como atributo con nombre <CODE>
	 * storesList</CODE>. El flujo es redireccionado a la página
	 * versuperoferta.jsp
	 * 
	 * @param request
	 *            servlet request
	 * @param response
	 *            servlet response
	 * @throws ServletException
	 * @throws IOException
	 */
	protected void processRequest( HttpServletRequest request,
			HttpServletResponse response ) throws ServletException, IOException
	{

		String url = "/minorista/versuperoferta.jsp";
		String message = "";
        HttpSession session = request.getSession( false );

	    try
	    {
	        if( session != null && ( User )session.getAttribute( "user" ) != null && ( ( User )session.getAttribute( "user" ) ).getRoleId() == 3 )
			{
				int id = Integer.parseInt(request.getParameter("id"));
				SuperOffer view = new SuperOffer(id);
				Store store = (Store) request.getSession().getAttribute("store");
	
				int supplier = view.getSupplierId();
				view.calculateValue(Community.getComunityOfShopKeeper(
						store.getId(), supplier));
				//int shopKeeperId = (
				// (User)request.getSession().getAttribute("user") ).getCompanyId();
				// StoreList storesList = new StoreList(shopKeeperId);
				//request.setAttribute("storesList", storesList.getStores());
				request.setAttribute("view", view);
	                        
	            SupplierProduct supplierProduct = new SupplierProduct( view.getProductId() );
	
	            // voy a mirar si el producto tiene imagen
	            boolean hasImage = false;
	            String path = getServletContext().getRealPath( supplierProduct.getImage() );
	            File file = new File( path );
	            if( file.isFile() )
	            {
	                hasImage = true;
	            }
	            else
	            {
	                hasImage = false;
	            }
	
	            request.setAttribute( "hasImage", new Boolean( hasImage ) );
	            
	                        
			}
			else
			{
				message = MessageBuilder.buildMessage(15);
				url = "/index.jsp";
			}
			String operation = (String) request.getAttribute("operationType");
			if( operation != null && operation.equals("purchase") )
			{
				message = (String) request.getAttribute("message");
			}
	    }
	    catch( Exception e )
	    {
	        url="/logout";
	        message = MessageBuilder.buildMessage(15);
	    }

		request.setAttribute("message", message);

		RequestDispatcher dispatcher = getServletContext()
				.getRequestDispatcher(url);
		dispatcher.forward(request, response);

	}

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

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

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

}