コード例 #1
0
        public IActionResult CreatePayment(Payment payment)
        {
            var email = User.GetEmail();

            var successfullPayment = false;

            using (var context = new MainDatabaseContext())
            {
                var order = context.Orders
                            .Where(x => x.Id == payment.OrderId)
                            .Include(p => p.ProductOrders.Select(po => po.Product))
                            .Include(p => p.Buyer)
                            .FirstOrDefault();

                if (order == null)
                {
                    return(View("Error"));
                }

                order.AddBuyer(GetOrCreateNewBuyer(context, email));

                if (payment.Type == PaymentType.Card)
                {
                    successfullPayment = _paymentProvider.SendPaymentData(payment);
                    order.PayByCard(payment, successfullPayment);
                    _emailService.SendEmail(email, successfullPayment ? EmailType.PaymentAccepted : EmailType.PaymentRefused);
                    context.SaveChanges();
                    return(successfullPayment ? View("Success") : View("Failure"));
                }
                else
                {
                    _emailService.SendEmail(email, EmailType.WaitingForTransfer);
                    order.PayByTransfer(payment);
                    context.SaveChanges();
                    return(View("Success"));
                }
            }
        }