package agilpizza.servlet;

import java.io.IOException;

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

import agilpizza.Constantes;
import agilpizza.modelo.Cliente;
import agilpizza.modelo.Endereco;
import agilpizza.modelo.Pedido;

public class ClienteServlet extends HttpServlet {

	private static final long serialVersionUID = -4127253820264183478L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		String nome = (String) req.getParameter("nome");
		String telefone = (String) req.getParameter("telefone");
		String email = (String) req.getParameter("email");

		String rua = (String) req.getParameter("rua");
		String numero = (String) req.getParameter("numero");
		String complemento = (String) req.getParameter("complemento");
		String bairro = (String) req.getParameter("bairro");
		String cep = (String) req.getParameter("cep");

		if (ValidacaoUtil.isVazio(nome) || ValidacaoUtil.isVazio(telefone)
				|| ValidacaoUtil.isVazio(email)) {
			resp.sendError(404, "Dados do cliente incompletos!");
			return;
		}

		if (ValidacaoUtil.isVazio(rua) || ValidacaoUtil.isVazio(numero)
				|| ValidacaoUtil.isVazio(bairro)
				|| ValidacaoUtil.isCEPInvalido(cep)) {
			resp.sendError(404, "Esse endereço não foi encontrado!");
			return;
		}

		Endereco end = new Endereco(rua, numero, complemento, bairro, cep);
		Cliente cliente = new Cliente(nome, telefone, end, email);
		
		Pedido pedido = (Pedido) req.getSession().getAttribute(Constantes.PEDIDO);
		if (pedido == null) {
			pedido = new Pedido();
			req.getSession().setAttribute(Constantes.PEDIDO, pedido);
		}
		pedido.setCliente(cliente);
		
		Boolean fechandoPedido = (Boolean) req.getSession().getAttribute("fechandoPedido");
		if (fechandoPedido != null && fechandoPedido) {
			RequestDispatcher dispatcher = req.getRequestDispatcher("/fecharPedido");
			dispatcher.forward(req, resp);
			return;
		}
		
		resp.sendRedirect("mostraEndereco.jsp");
	}

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