package agilpizza.controlador.pizzaria;

import java.util.List;

import agilpizza.controlador.usuario.UsuarioControlador;
import agilpizza.controlador.util.JSFUtil;
import agilpizza.modelo.pizza.Bebida;
import agilpizza.modelo.pizza.Endereco;
import agilpizza.modelo.pizza.Ingrediente;
import agilpizza.modelo.pizza.Pizza;

public class PedidoControlador {
	private Pizza pizza;
	private List<Ingrediente> ingredientesSelecionados;
	private List<Bebida> bebidasSelecionadas;
    private Endereco dadosCliente;
	
	private Double valorTotalBebidas = new Double(0.0);
	private Double valorTotalPedido = new Double(0.0);
	
	public Pizza getPizza() {
		return pizza;
	}

	public void setPizza(Pizza pizza) {
		this.pizza = pizza;
	}

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

	public void setIngredientesSelecionados(
			List<Ingrediente> ingredientesSelecionados) {
		this.ingredientesSelecionados = ingredientesSelecionados;
	}
	
	public String adicionaPizzaAoPedido(){
		
		if(getIngredientesSelecionados().isEmpty()){
			JSFUtil.aviso("Por favor escolha ao menos um ingrediente!");
			return null;
		}
			
		pizza = new Pizza("Customizada", getIngredientesSelecionados());
		
		calculaTotalPedido();
		
		return "endereco";
	}
	
	public void adicionaEnderecoAoPedido(Endereco endereco){
		
		this.dadosCliente = endereco;
	}
	
	public Endereco getEndereco(){
		
		return dadosCliente;
	}
	
	public String validaBebidas(){
					
		for (Bebida beb : getBebidasSelecionadas()) {
			valorTotalBebidas += beb.getValor();
		}
		calculaTotalPedido();
		
		return "endereco";
	}
	
	public String fechaPedido(){
		JSFUtil.aviso("Seu pedido está a caminho.");
		
		PizzaiolloControlador control = 
			(PizzaiolloControlador)
			JSFUtil.pegarBean("pizzaiolloControlador");
	
		control.addPizza(pizza);
		
		return "mostraFimPedido";
	}

	public void calculaTotalPedido(){
		if(pizza != null)
			valorTotalPedido = valorTotalBebidas + pizza.getValorTotal();
		else
			valorTotalPedido = valorTotalBebidas;
	}
	
	public boolean isTemBebida(){
		if(bebidasSelecionadas == null)
			return false;
		return !bebidasSelecionadas.isEmpty();
	}
	
	public void setTemBebida(boolean x){}
	
	public List<Bebida> getBebidasSelecionadas() {
		return bebidasSelecionadas;
	}

	public void setBebidasSelecionadas(List<Bebida> bebidasSelecionadas) {
		this.bebidasSelecionadas = bebidasSelecionadas;
	}

	public Double getValorTotalBebidas() {
		return valorTotalBebidas;
	}

	public void setValorTotalBebidas(Double valorTotalBebidas) {
		this.valorTotalBebidas = valorTotalBebidas;
	}

	public Double getValorTotalPedido() {
		return valorTotalPedido;
	}

	public void setValorTotalPedido(Double valorTotalPedido) {
		this.valorTotalPedido = valorTotalPedido;
	}

}
