public ActionResult EditOrderPaymentInfo(PaymentInfo revisedPaymentInfo) { Order order = dbContext.Orders.FirstOrDefault(o => o.Id == revisedPaymentInfo.OrderId); if (order == null) { TempData["Message"] = "Invalid Order Id!"; return RedirectToAction("Index"); } if (ModelState.IsValid) { dbContext.PaymentInfoes.Attach(revisedPaymentInfo); dbContext.Entry(revisedPaymentInfo).State = EntityState.Modified; dbContext.SaveChanges(); TempData["Message"] = "Payment Information Updated"; return RedirectToAction("OrderDetails", new { controller = "Manage", area = "", id = revisedPaymentInfo.OrderId }); } return View(revisedPaymentInfo); }
public ActionResult PlaceOrder() { CheckoutModel checkoutModel = GetCheckoutModel(); ShoppingCart cart = ShoppingCart.GetCart(this.HttpContext); Order order = new Order(); if (checkoutModel.Step1 == null) { return RedirectToAction("CheckoutStep1"); } if (checkoutModel.Step2 == null) { return RedirectToAction("CheckoutStep2"); } if (checkoutModel.Step3 == null) { return RedirectToAction("CheckoutStep3"); } order.UserName = User.Identity.Name; order.OrderDate = DateTime.Now.Date; order.OrderNumber = CreateOrderNumber(); order.OrderStatus = "Received"; order.CustomerBillingAddress = dbContext.CustomerAddresses.FirstOrDefault(a => a.Id == checkoutModel.Step1.BillingAddressId); order.CustomerShippingAddress = dbContext.CustomerAddresses.FirstOrDefault(a => a.Id == checkoutModel.Step2.ShippingAddressId); dbContext.Orders.Add(order); foreach (var cartItem in cart.GetCartItems()) { if (!CheckStock(cartItem.ProductId, cartItem.Count)) { TempData["message"] = "Requested quantity not available for Item: " + cartItem.Product.ProductName; return RedirectToAction("Index"); } } try { dbContext.SaveChanges(); } catch { return View("error", new string[] { "Database Error!" }); } Order orderCreated = dbContext.Orders.FirstOrDefault(o => o.OrderNumber == order.OrderNumber); PaymentInfo paymentInfo = new PaymentInfo() { Order=orderCreated, Name=checkoutModel.Step3.Name, CreditCardNumber=checkoutModel.Step3.CreditCardNumber, ExpiredDate=checkoutModel.Step3.ExpiredDate, SecurityCode=checkoutModel.Step3.SecurityCode }; dbContext.PaymentInfoes.Add(paymentInfo); var cartItems = cart.GetCartItems(); foreach (var cartItem in cartItems) { OrderItem orderItem = new OrderItem() { ProductId = cartItem.ProductId, OrderId = orderCreated.Id, Quantities = cartItem.Count }; Product product = dbContext.Products.FirstOrDefault(p => p.Id == cartItem.ProductId); product.Stock -= cartItem.Count; dbContext.Entry(product).State = EntityState.Modified; dbContext.OrderItems.Add(orderItem); } try { dbContext.SaveChanges(); } catch { dbContext.DeleteOrder(orderCreated.Id); return View("error", new string[] { "Database Error!" }); } cart.EmptyCart(); Session.Remove("Checkout"); try { SendConfirmationEmail(orderCreated); } catch { return View("error", new string[] { "Sorry, we have problem to send confirmation email to you, please log into My Account to Track your order." }); } return RedirectToAction("OrderConfirmation", new { id = orderCreated.Id }); }