示例#1
0
        public IActionResult Done(string purchaseId)
        {
            //call getPaymentStatus
            var response = _connectionHandler.GetPaymentStatus(purchaseId);

            if (response.State == 2)
            {
                //find all products with a price lower than 25% of totalOrder
                var product = _unitOfWork.Product.GetExtraPurchaseProduct(response.Price);

                var shoppingCartItems = _shoppingCart.GetShoppingCartItems();

                //creaating order
                var order = _unitOfWork.Order.CreateOrder(response);
                order.OrderDetails = _unitOfWork.Order.AddDetailsToOrder(shoppingCartItems, order.OrderId);
                _unitOfWork.Complete();

                switch (response.PaymentMethod)
                {
                case PaymentMethodEnum.Invoice:
                case PaymentMethodEnum.Loan:
                    ViewData["description"] = purchaseId;

                    if (product != null)
                    {
                        var purchaseViewModel = new ExtraPurchaseViewModel
                        {
                            Product    = product,
                            ProductId  = product.ProductID,
                            PurchaseId = purchaseId
                        };
                        return(View(purchaseViewModel));
                    }

                    _shoppingCart.ClearCart();
                    return(View("CheckoutComplete", order));

                default:
                    _shoppingCart.ClearCart();
                    return(View("CheckoutComplete", order));
                }
            }
            return(View("Error", new ErrorViewModel {
                ErrorMessage = $"Payment failed."
            }));
        }
示例#2
0
        public IActionResult PurchaseOrder(ExtraPurchaseViewModel purchaseViewModel)
        {
            var order = _unitOfWork.Order.Find(o => o.PurchaseId == purchaseViewModel.PurchaseId).FirstOrDefault();

            var request = new PurchaseOrderRequest()
            {
                OrderReference = order.OrderId,
                ExternalId     = purchaseViewModel.PurchaseId,
                Items          = _unitOfWork.Order.GetItemsFromOrder(order.OrderId)
            };

            _shoppingCart.ClearCart();

            _connectionHandler.PurchaseOrder(request);

            return(View("CheckoutComplete", order));
        }
示例#3
0
        public IActionResult AddUpSaleToOrder(ExtraPurchaseViewModel purchaseViewModel)
        {
            var order = _unitOfWork.Order.Find(o => o.PurchaseId == purchaseViewModel.PurchaseId).FirstOrDefault();
            //get product
            var product = _unitOfWork.Product.Get(purchaseViewModel.ProductId);

            //convert product to orderdetail
            var orderDetail = _unitOfWork.OrderDetail.ConvertProductToOrderDetail(product, order.OrderId);

            //add orderdetail in db
            _unitOfWork.OrderDetail.Add(orderDetail);
            _unitOfWork.Complete();

            //get orderdetails, sum price, update db
            order.OrderTotal = _unitOfWork.OrderDetail.Find(d => d.OrderId == order.OrderId).Sum(i => i.Price * i.Amount);
            _unitOfWork.Order.Update(order);
            _unitOfWork.Complete();

            return(RedirectToAction("PurchaseOrder", purchaseViewModel));
        }