package agilpizza.servlet;

import java.io.IOException;
import java.util.Collection;

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

import agilpizza.Constantes;
import agilpizza.dao.PizzaTradicionalDAO;
import agilpizza.modelo.Pedido;
import agilpizza.modelo.PizzaTradicional;

public class AdicionaPizzaPedidoServlet extends HttpServlet {

	private static final long serialVersionUID = -4127253820264183478L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {

		PizzaTradicionalDAO pizzaTradicionalDao = (PizzaTradicionalDAO) getServletContext()
				.getAttribute("pizzaTradicionalDao");

		Pedido pedido = (Pedido) req.getSession().getAttribute(
				Constantes.PEDIDO);

		if (pedido == null) {
			pedido = new Pedido();
			req.getSession().setAttribute(Constantes.PEDIDO, pedido);
		}

		Collection<PizzaTradicional> pizzasTradicionais = pizzaTradicionalDao
				.buscaPizzaTradicional();
		for (PizzaTradicional pizza : pizzasTradicionais) {
			String numeroDeUnidades = req.getParameter(pizza.getNome()
					.replaceAll(" ", ""));

			if (numeroDeUnidades != null)
				try {
					int quantidade = ValidacaoUtil
							.getQuantidade(numeroDeUnidades);
					pedido.alteraQuantidadeDePizza(pizza, quantidade);
				} catch (NumberFormatException e) {
					req.getSession().setAttribute("textoDoErro",
							"Quantidade deve ser um número positivo.");
					req.getSession().setAttribute("paginaDeVolta",
							"pizzastradicionais.jsp");
					resp.sendRedirect("erro.jsp");
					return;
				}
		}

		resp.sendRedirect("mostraPedido.jsp");
	}

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