public ActionResult Create(CreateDeliveryOrderViewModel model) { isAdminLogged(); ViewBag.Parent = "Quản lý giao hàng"; ViewBag.Child = "Lập đơn giao hàng"; // những thuộc tính cần lựa chọn khi lập đơn giao hàng ViewBag.Storage = _disService.SearchByID(model.idDistributor.Value).Storages.ToList(); ViewBag.Staff = _staffService.GetAll().ToList(); DeliveryOrder dOrder = new DeliveryOrder(); dOrder.deliveryAdd = model.deliveryAdd; dOrder.description = model.description; dOrder.deliveryDate = model.deliveryDate; dOrder.idOrder = model.idOrder; dOrder.idDistributor = model.idDistributor; dOrder.idStaff = model.idStaff; dOrder.recipient = model.recipient; dOrder.recipientPhone = model.recipientPhone; dOrder.status = 5; dOrder.updateDate = DateTime.Now; dOrder.deliveryDate = DateTime.Now; dOrder.totalPurchase = model.totalPurchase; //dOrder.idDeliveryOrder = _deliveryOrderService.GenerateDOrderId(); // lits product lưu giữ sp để cập nhật số lượng sau khi lập giao hàng List <Product> ListProduct = new List <Product>(); // mặc định sl trong kho đủ giao bool checkStorage = true; foreach (var item in model.DetailedDeliveryOrder) { // add chi tiết giao vào đơn giao hàng //item.idDeliveryOrder = dOrder.idDeliveryOrder; dOrder.DetailedDeliveryOrders.Add(item); // kiểm tra lượng tồn kho var p = _productService.GetProduct(item.idProduct); int sl = p.Quantity.Value - item.quantity.Value - item.promoQuantity.Value; if (sl > 0) { p.Quantity = sl; ListProduct.Add(p); } else { ViewBag.msg = "Sản phẩm " + p.ProductName + " chỉ còn " + p.Quantity; ViewBag.types = 1; checkStorage = false; } } // nếu trong kho đủ sl if (checkStorage) { bool rs = true; rs = _deliveryOrderService.AddDeliveryOrder(dOrder); if (rs) { // cập nhật sl sp trong kho foreach (var item in ListProduct) { _productService.UpdateProduct(item); } // lập thành công chuyển qua trang chi tiết return(RedirectToAction("Details", new { id = dOrder.idDeliveryOrder })); } ViewBag.msg = "Lập thất bại"; ViewBag.types = 1; } // lập thất bại, chèn Product và chi tiết(ngoài view cần lấy name, price) model.DetailedDeliveryOrder.Clear(); foreach (var item in dOrder.DetailedDeliveryOrders) { item.Product = _productService.GetProduct(item.idProduct); model.DetailedDeliveryOrder.Add(item); } return(View(model)); }