package agilpizza.servlet;

import java.io.IOException;

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 agilpizza.Constantes;
import agilpizza.dao.PedidoDAO;
import agilpizza.modelo.Pedido;

public class FechaPedidoServlet extends HttpServlet {

	private static final long serialVersionUID = -4127253820264183478L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		HttpSession session = req.getSession();
		Pedido pedido = (Pedido) session.getAttribute(Constantes.PEDIDO);
		if (pedido == null) {
			session.setAttribute("textoDoErro",
							"Não é possível fechar o pedido pois você não pediu nada!!");
			session.setAttribute("paginaDeVolta", "mostraPedido.jsp");
			resp.sendRedirect("erro.jsp");
			return;
		}

		if (pedido.getCliente() == null) {
			req.getSession().setAttribute("fechandoPedido", true);
			resp.sendRedirect("endereco.jsp");
			return;
		}

		PedidoDAO pedidosDao = (PedidoDAO) getServletContext().getAttribute(
				"pedidosDao");
		if (pedidosDao == null) {
			pedidosDao = new PedidoDAO();
			getServletContext().setAttribute("pedidosDao", pedidosDao);
		}

		try {
			pedidosDao.fechaPedido(pedido);
			session.setAttribute(Constantes.PEDIDO, null);
			resp.sendRedirect("mostraEndereco.jsp");
		} catch (Exception e) {
			session.setAttribute("textoDoErro", e.getMessage());
			session.setAttribute("paginaDeVolta", "mostraPedido.jsp");
			resp.sendRedirect("erro.jsp");
		}
	}

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