public ActionResult DeleteOrder(int id) { Order order; List<Order_Detail> orderDetails; List<Order> orders; using (NorthwindConnection db = new NorthwindConnection()) { order = db.Orders.SingleOrDefault(x => x.OrderID == id); if (order.ShippedDate > DateTime.Now) { orderDetails = db.Order_Details.Where(x => x.OrderID == id).ToList(); List<int> prodIds = new List<int>(); foreach (var orderDetail in orderDetails) { prodIds.Add(orderDetail.ProductID); } foreach (var prodId in prodIds) { db.DeleteOrderDetail(id, prodId); } db.DeleteOrder(id); orders = db.Orders.ToList(); return RedirectToAction("Index", "Home"); } else { return View(); } } }
public ActionResult ChangeAmount(int orderId, int productId, string change, short amount) { Order order; List<Order_Detail> orderDetail; Customer customer; List<Product> products; List<Category> categories; using (NorthwindConnection db = new NorthwindConnection()) { categories = db.Categories.ToList(); products = db.Products.ToList(); order = db.Orders.SingleOrDefault(o => o.OrderID == orderId); orderDetail = GetOrderDetails(db, order.OrderID); short quantity = orderDetail.SingleOrDefault(x => x.ProductID == productId).Quantity; if (change == "add") { quantity += amount; } else { if ((quantity - amount) > 0) { quantity -= amount; } else { quantity = 0; } } if (quantity > 0) { orderDetail.SingleOrDefault(x => x.ProductID == productId).Quantity = quantity; } else { Order_Detail rowToRemove = orderDetail.SingleOrDefault(x => x.ProductID == productId); orderDetail.Remove(rowToRemove); db.DeleteOrderDetail(order.OrderID, productId); } customer = db.Customers.SingleOrDefault(c => c.CustomerID == order.CustomerID); db.SaveChanges(); } OrderDetailsModel model = new OrderDetailsModel(); model.Order = order; model.OrderDetails = orderDetail; model.Customer = customer; model.Products = products; model.categories = categories.Select(x => new SelectListItem() { Value = x.CategoryID.ToString(), Text = x.CategoryName }); return PartialView("_OrderDetails", model); }