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." })); }
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)); }
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)); }