public void EfetuarPedido(Carrinho carrinho, DetalhePagamento detalhePagamento, bool notificarClienteEmail, bool notificarClienteSms) { try { // Parte 1# - Calculo de imposto de produtos e valor total do carrinho. // Calcula imposto dos produtos do carrinho carrinho.Produtos = _carrinhoService.CalculaImpostoProdutosCarrinho(carrinho.Produtos); // Calcula o valor total do carrinho carrinho.ValorTotalPedido = _carrinhoService.CalculaValorTotalCarrinho(carrinho.Produtos); // Parte 2# - Pagamento do Pedido // Realiza o pagamento carrinho.FoiPago = _pagamentoService.EfetuarPagamentoPedido(detalhePagamento, carrinho.ValorTotalPedido); // Parte 3# - Solicitação e Entrega de Produto(s) if (!_carrinhoService.CarrinhoFoiPago(carrinho)) { throw new ExternalException("O pagamento não foi efetuado."); } _carrinhoService.SolicitarProdutosCarrinho(carrinho); carrinho.FoiEntregue = _carrinhoService.EntregarProdutosCarrinho(carrinho); // Parte 4# - Baixa no estoque if (!_estoqueService.ProdutosCarrinhoEntregue(carrinho)) { throw new ExternalException("Os produtos não foram entregues."); } _carrinhoService.BaixarEstoqueCarrinho(carrinho); // Parte 5# - Notificação de Cliente por e-mail _mailService.notificarClienteEmail(carrinho.Cliente, notificarClienteEmail); // Parte 5# - Notificação de Cliente por SMS _smsService.NotificarClienteSms(carrinho.Cliente, notificarClienteSms); } catch (Exception) { throw; } }