package agilpizza.controlador.pizza;

import java.util.ArrayList;
import java.util.Collection;

import agilpizza.controlador.usuario.EnderecoControlador;
import agilpizza.controlador.util.JSFUtil;
import agilpizza.modelo.pizza.Categoria;
import agilpizza.modelo.pizza.CategoriaDAO;
import agilpizza.modelo.pizza.Ingrediente;
import agilpizza.modelo.pizza.Pedido;
import agilpizza.modelo.pizza.PedidoDAO;
import agilpizza.modelo.pizza.Pizza;

public class MontarPizzaControlador {
	private Collection<Ingrediente> ingredientes;
	private Collection<Ingrediente> ingredientesSelecionados;
	private Pizza pizzaMontada;

	public MontarPizzaControlador() {
		// JSFUtil.
		CategoriaDAO dao = new CategoriaDAO();
		ingredientes = new ArrayList<Ingrediente>();
		for (Categoria categoria : dao.buscaCategorias()) {
			ingredientes.addAll(categoria.getIngredientes());
		}
	}

	public String adicionaPizzaAoPedido() {
		EnderecoControlador enderecoControlador = (EnderecoControlador) JSFUtil.pegarBean("enderecoControlador");
		
//		if (enderecoControlador == null
//				|| enderecoControlador.getEndereco().getTelefone() == null) {
//			JSFUtil.aviso("Por favor, primeiro cadastre seus dados.");
//			return "cadastraEndereco";
//		}
		
		// montar a pizza
		pizzaMontada = new Pizza();
		for (Ingrediente i : ingredientesSelecionados) {
			pizzaMontada.adicionarIngrediente(i);
		}
		
		enderecoControlador.getPedido().adicionarPizza(pizzaMontada);				
		
		return "mostrarPizza";
	}
	
	public String fecharPedido() {
		EnderecoControlador enderecoControlador = (EnderecoControlador) JSFUtil.pegarBean("enderecoControlador");
		
		PedidoDAO dao;
		dao = PedidoDAO.getInstanciaUnica();
		
		dao.addPedido(enderecoControlador.getPedido());
		
		return "fimPedido";
	}

	public Collection<Ingrediente> getIngredientes() {
		return ingredientes;
	}

	public void setIngredientes(Collection<Ingrediente> ingredientes) {
		this.ingredientes = ingredientes;
	}

	public Collection<Ingrediente> getIngredientesSelecionados() {
		return ingredientesSelecionados;
	}

	public void setIngredientesSelecionados(
			Collection<Ingrediente> ingredientesSelecionados) {
		this.ingredientesSelecionados = ingredientesSelecionados;
	}

	public Pizza getPizzaMontada() {
		return pizzaMontada;
	}

	public void setPizzaMontada(Pizza pizzaMontada) {
		this.pizzaMontada = pizzaMontada;
	}
}
