package agilpizza.servlet;

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

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

import agilpizza.dao.ClienteDAO;
import agilpizza.dao.ProdutoDAO;
import agilpizza.modelo.Cliente;
import agilpizza.modelo.Ingrediente;
import agilpizza.modelo.QuantidadeDeIngrediente;

public class MontarServlet extends HttpServlet {

	private static final long serialVersionUID = -4127253820264183478L;
	
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		ServletContext context = this.getServletContext();		
		ProdutoDAO produtoDAO;
		boolean ehPizza;		
		List<QuantidadeDeIngrediente>  listaQuantidadeDeIngredientes;
		
		if(context.getAttribute("produtos") == null){
			produtoDAO = new ProdutoDAO();
			context.setAttribute("produtos", produtoDAO);
		}
		else{
			produtoDAO = (ProdutoDAO) context.getAttribute("produtos");
		}
		
		String tipoMassa = req.getParameter("tipoMassa");
		ehPizza = (tipoMassa != null);
		
		String[] ingredientes = req.getParameterValues("chkIngrediente");
		
		if (ingredientes == null) {
			req.getSession().setAttribute
			("mensagem", "Nenhum" + (ehPizza ? " ingrediente" : "a bebida") + " selecionad" + (ehPizza? "o" : "a") + "!");
			resp.sendRedirect("erro.jsp");
			return;
		}	
		HttpSession session = req.getSession();
		session.setAttribute("PizzaCliente", listaQuantidadeDeIngredientes(req, ingredientes, produtoDAO));
		session.setAttribute("ehPizza", ehPizza);
		if (ehPizza)
		{	
			
			session.setAttribute("TipoMassa", tipoMassa);
			
		}
		else {
			
			session.setAttribute("TipoMassa", null);
			
			
			
		}
		resp.sendRedirect("mostraPizza.jsp");

	}

	private List<QuantidadeDeIngrediente> listaQuantidadeDeIngredientes(HttpServletRequest req, String[] ingredientes, ProdutoDAO produtoDAO) {
		
		List<QuantidadeDeIngrediente> lista = new ArrayList<QuantidadeDeIngrediente>();
		String quantidade;
		Ingrediente ingrediente;
		
		for (String x: ingredientes)
		{		
			quantidade = req.getParameter("Quantidade"+x);
			ingrediente = produtoDAO.buscaIngrediente(x);
			lista.add(new QuantidadeDeIngrediente(ingrediente, Integer.parseInt(quantidade)));
		}
		
		return lista;
	}
	
	private List<Ingrediente> listaIngredientes(String[] ingredientes) {
		
		List<Ingrediente> lista = new ArrayList<Ingrediente>();
		
		for (int i = 0; i < ingredientes.length; ++i)
		{		
			lista.add(new Ingrediente(ingredientes[i]));
		}
		
		return lista;
	}

	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		this.doGet(req, resp);
	}
}
