public ActionResult AddLine(int orderId, int proId, int count) { ResultWeb result = new ResultWeb(); Product product = db.Products.Find(proId); if (product == null) { result.Type = ResultWeb.ResultType.FIELD_INVALID; return(Json(result, JsonRequestBehavior.AllowGet)); } var details = db.OrderDetails.Where(od => od.OrderId == orderId); OrderDetail line = details.Where(od => od.ProductId == proId).FirstOrDefault(); if (line == null) { line = new OrderDetail { OrderId = orderId, ProductId = proId }; if (count > product.InStock) { line.Quantity = product.InStock; result.Type = ResultWeb.ResultType.OUT_OF_STOCK; } else { line.Quantity = count; result.Type = ResultWeb.ResultType.OK_ADD; } line.TotalAmount = product.Price * line.Quantity; db.OrderDetails.Add(line); db.SaveChanges(); } else { line.Quantity += count; if (line.Quantity > product.InStock) { line.Quantity = product.InStock; result.Type = ResultWeb.ResultType.OUT_OF_STOCK; } else { result.Type = ResultWeb.ResultType.OK_ADD; } line.TotalAmount = product.Price * line.Quantity; db.Entry(line).State = EntityState.Modified; db.SaveChanges(); } RecalculateOrderCost(orderId); return(Json(result, JsonRequestBehavior.AllowGet)); }
public virtual void Update(TEntity entityToUpdate) { _ctx.Set <TEntity>().Attach(entityToUpdate); _ctx.Entry(entityToUpdate).State = EntityState.Modified; }
public ActionResult ViewOrder(int?Id, OrderStatus?stateCurrent) { if (Id == null || stateCurrent == null) { return(RedirectToAction("Error", "Staff" , new { errorCode = "Lỗi 400." , errorDetail = "Yêu cầu của bạn không hợp lệ" })); } Models.Order order = db.Orders.Find(Id); if (order == null) { return(RedirectToAction("Error", "Staff" , new { errorCode = "Lỗi 404." , errorDetail = "Không tìm thấy đơn hàng với id: " + Id.ToString() })); } if (stateCurrent == OrderStatus.New || stateCurrent == OrderStatus.Canceled) { return(RedirectToAction("Error", "Staff" , new { errorCode = "Lỗi 403." , errorDetail = "Bạn không được phép làm điều này" })); } switch (order.Status) { case OrderStatus.Packing: { order.Status = OrderStatus.Delivering; db.Entry(order).State = EntityState.Modified; db.SaveChanges(); } break; case OrderStatus.Delivering: { order.DeliveryDate = DateTime.Today; order.Status = OrderStatus.Completed; db.Entry(order).State = EntityState.Modified; db.SaveChanges(); } break; case OrderStatus.Pending: { SubProduct(order); order.Status = OrderStatus.Packing; db.Entry(order).State = EntityState.Modified; db.SaveChanges(); } break; } order = db.Orders.Where(o => o.Status == stateCurrent).FirstOrDefault(); if (order == null) { return(RedirectToAction("ListOrder", "Staff")); } Models.User user = db.Users.Where(u => u.Username == User.Identity.Name).FirstOrDefault(); ViewBag.User = user; if (User.IsInRole("Admin")) { ViewBag.IsAdmin = true; } else { ViewBag.IsAdmin = false; } return(View(order)); }