public void Checkout(Carrinho carrinho)
        {
            if (_estoqueService.Verifica(carrinho))
            {
                _cartaoService.Pagar(carrinho);

                _notificaoService.EnviaEmail(carrinho);
            }
        }
        public void Checkout(Carrinho carrinho, DetalhePagamento detalhePagamento)
        {
            EstoqueService estoqueService = new EstoqueService();

            if (estoqueService.Verifica(carrinho))
            {
                CartaoService cartaoService = new CartaoService();
                cartaoService.Pagar(carrinho, detalhePagamento);

                NotificacaoService notificaoService = new NotificacaoService();
                notificaoService.EnviaEmail(carrinho);
            }
        }
        public bool VerificaEstoque(Carrinho carrinho)
        {
            foreach (var produto in carrinho.Produtos)
            {
                try
                {
                    //Violação do Dependency Inversion Principle
                    var estoqueService = new EstoqueService();

                    if (!estoqueService.Verifica(produto.Nome, produto.Quantidade))
                    {
                        return(false);
                    }
                    ;
                }
                catch (EstoqueService.InsufficientInventoryException ex)
                {
                    throw new OrderException("Produto Insuficiente " + produto.Nome, ex);
                }
            }
            return(true);
        }