public StatusComando ConfirmarPedido(PedidoRestaurante pedido)
        {
            try
            {
                switch (pedido.Local)
                {
                case LocalPedidoRestaurante.Mesa:
                    var mesaAberta = GetMesa(pedido.Mesa);
                    if (mesaAberta != null)
                    {
                        // Valida todas as composições que estão entrando para verificar a integridade.
                        foreach (var produto in pedido.Produtos)
                        {
                            ComposicaoProdutoRepository.Validate(produto);
                        }
                        foreach (var prod in pedido.Produtos)
                        {
                            mesaAberta.Produtos.Add(prod);
                        }
                    }
                    else
                    {
                        MesasAbertas.Add(pedido);
                    }
                    break;

                default:
                    switch (pedido.Local)
                    {
                    case LocalPedidoRestaurante.Balcao:
                        FilaSalao.Add(pedido);
                        break;

                    case LocalPedidoRestaurante.Entrega:
                        FilaEntrega.Add(pedido);
                        break;
                    }
                    break;
                }
                pedido.Confirmado = true;
                return(StatusComando.ConcluidoSucesso);
            }
            catch (Exception ex)
            {
                LastException = ex.Message;
            }

            return(StatusComando.ConcluidoSucesso);
        }
 public StatusComando AdicionarItemMesa(int mesa, ComposicaoProduto composicao)
 {
     try
     {
         if (ComposicaoProdutoRepository.Validate(composicao))
         {
             var m = GetMesa(mesa);
             if (m == null)
             {
                 throw new Exception(string.Format("A mesa {0} não foi encontrada.", mesa));
             }
             AjustarPrecoComposicao(composicao);
             m.Produtos.Add(composicao);
             return(StatusComando.ConcluidoSucesso);
         }
     }
     catch (Exception ex)
     {
         LastException = ex.Message;
     }
     return(StatusComando.ErroExecucao);
 }