Exemple #1
0
        public static void Execute()
        {
            var products = new List <Product>
            {
                new Product {
                    Name = "Tenis Adidas", Price = new Random().Next(500)
                },
                new Product {
                    Name = "Camisa Boliche", Price = new Random().Next(500)
                },
                new Product {
                    Name = "Raquete Tenis", Price = new Random().Next(500)
                }
            };

            var order = new Order
            {
                Id       = Guid.NewGuid(),
                Products = products
            };

            var creditCardPaymentMethod = new Payment
            {
                PaymentMethod = PaymentMethod.Billet,
                CreditCard    = "5555 2222 5555 9999"
            };

            var billetPaymentMethod = new Payment
            {
                PaymentMethod = PaymentMethod.Billet
            };

            var bankTransferPaymentMethod = new Payment
            {
                PaymentMethod = PaymentMethod.BankTransfer,
                CreditCard    = "5555 2222 5555 9999"
            };

            #region Simple Way

            var creditCardOrder = new OrderService(
                new CreditCardPaymentService(
                    new CreditCardPaymentFacade(
                        new PayPalGateway(),
                        new ConfigurationManager()
                        )
                    )
                );
            var creditCardPayment = creditCardOrder.MakePayment(order, creditCardPaymentMethod);
            Console.WriteLine(creditCardPayment.Status);

            Console.WriteLine("-------------------------------------------------------");

            var billetOrder = new OrderService(
                new BilletPaymentService(
                    new BilletPaymentFacade()
                    )
                );
            var billetPayment = billetOrder.MakePayment(order, billetPaymentMethod);
            Console.WriteLine(billetPayment.Status);

            Console.WriteLine("-------------------------------------------------------");

            var bankTransferOrder = new OrderService(
                new BankTransferPaymentService(
                    new BankTransferPaymentFacade()
                    )
                );
            var bankTransferPayment = bankTransferOrder.MakePayment(order, bankTransferPaymentMethod);
            Console.WriteLine(bankTransferPayment.Status);

            Console.WriteLine("-------------------------------------------------------");

            #endregion

            #region Elegant Way

            var creditCardOrder2   = new OrderService(PaymentFactory.CreatePayment(creditCardPaymentMethod.PaymentMethod));
            var creditCardPayment2 = creditCardOrder2.MakePayment(order, creditCardPaymentMethod);
            Console.WriteLine(creditCardPayment2.Status);

            Console.WriteLine("-------------------------------------------------------");

            var billetOrder2   = new OrderService(PaymentFactory.CreatePayment(billetPaymentMethod.PaymentMethod));
            var billetPayment2 = billetOrder2.MakePayment(order, billetPaymentMethod);
            Console.WriteLine(billetPayment2.Status);

            Console.WriteLine("-------------------------------------------------------");

            var bankTransferOrder2   = new OrderService(PaymentFactory.CreatePayment(bankTransferPaymentMethod.PaymentMethod));
            var bankTransferPayment2 = bankTransferOrder2.MakePayment(order, bankTransferPaymentMethod);
            Console.WriteLine(bankTransferPayment2.Status);

            #endregion
        }
Exemple #2
0
        public static void Run()
        {
            var products = new List <Product>
            {
                new Product {
                    Name = "Adidas shoes", Amount = new Random().Next(500)
                },
                new Product {
                    Name = "Boliche t-shirt", Amount = new Random().Next(500)
                },
                new Product {
                    Name = "Tennis racket", Amount = new Random().Next(500)
                }
            };

            var request = new Request
            {
                Id       = Guid.NewGuid(),
                Products = products
            };

            var creditCardMethod = new Payment
            {
                PaymentMethod = PaymentMethod.CreditCard,
                CrediCard     = "5555 2222 5555 9999"
            };

            var boletoMethod = new Payment
            {
                PaymentMethod = PaymentMethod.Boleto
            };

            var TransferPaymentMethod = new Payment
            {
                PaymentMethod = PaymentMethod.BankTransfer,
                CrediCard     = "5555 2222 5555 9999"
            };

            #region Forma Simples

            var pedidoCredito = new RequestService(
                new CreditCardPaymentService(
                    new CreditCardPaymentFacade(
                        new PayPalGateway(),
                        new ConfigurationManager())));
            var pagamentoCredito = pedidoCredito.RealizarPagamento(request, creditCardMethod);
            Console.WriteLine(pagamentoCredito.Status);

            Console.WriteLine("-------------------------------------------------------");

            var pedidoBoleto = new RequestService(
                new BoletoPaymentService(
                    new BoletoPaymentFacade()));

            var pagamentoBoleto = pedidoBoleto.RealizarPagamento(request, boletoMethod);
            Console.WriteLine(pagamentoBoleto.Status);

            Console.WriteLine("-------------------------------------------------------");

            var pedidoTransferencia = new RequestService(
                new PaymentTransferService(
                    new PaymentTransferFacade()));

            var pagamentoTransferencia = pedidoTransferencia.RealizarPagamento(request, boletoMethod);
            Console.WriteLine(pagamentoTransferencia.Status);

            Console.WriteLine("-------------------------------------------------------");

            #endregion

            #region Forma Elegante

            var pedidoCredito2    = new RequestService(PaymentFactory.CreatePayment(creditCardMethod.PaymentMethod));
            var pagamentoCredito2 = pedidoCredito2.RealizarPagamento(request, creditCardMethod);
            Console.WriteLine(pagamentoCredito2.Status);

            Console.WriteLine("-------------------------------------------------------");

            var pedidoBoleto2    = new RequestService(PaymentFactory.CreatePayment(boletoMethod.PaymentMethod));
            var pagamentoBoleto2 = pedidoBoleto2.RealizarPagamento(request, boletoMethod);
            Console.WriteLine(pagamentoBoleto2.Status);

            Console.WriteLine("-------------------------------------------------------");

            var pedidoTransferencia2    = new RequestService(PaymentFactory.CreatePayment(TransferPaymentMethod.PaymentMethod));
            var pagamentoTransferencia2 = pedidoTransferencia2.RealizarPagamento(request, TransferPaymentMethod);
            Console.WriteLine(pagamentoTransferencia2.Status);

            #endregion
        }