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 }
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 }