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