コード例 #1
0
ファイル: Receiving.aspx.cs プロジェクト: zamin2/eRaceSystem
        protected void ForceClose_Click(object sender, EventArgs e)
        {
            MessageUserControl.TryRun(() =>
            {
                var controller = new ReceivingController();

                var closeOrder = new ForceCloseDetails();

                var itemInfo = new List <ForceCloseItems>();

                foreach (GridViewRow item in OrderGridView.Rows)
                {
                    var itemProductID   = item.FindControl("OrderDetailID") as Label;
                    var itemOutstanding = item.FindControl("ItemQuantityOutstanding") as Label;

                    var product = new ForceCloseItems();

                    product.ProductID           = int.Parse(itemProductID.Text);
                    product.QuantityOutstanding = int.Parse(itemOutstanding.Text);

                    itemInfo.Add(product);
                }

                closeOrder.OrderID = int.Parse(OrderListDropDown.SelectedValue);
                closeOrder.Closed  = true;
                closeOrder.Comment = Comments.Text;
                closeOrder.Items   = itemInfo;

                controller.ForceCloseOrder(closeOrder);
            }, "Force Close Order", "Order has been force closed");

            Response.Redirect("~/Subsystem/Receiving/Receiving");
        }
コード例 #2
0
        public void ForceCloseOrder(ForceCloseDetails order)
        { /* command modify Products, Order and OrderDeatails */
          // Validation

            List <Exception> errors = new List <Exception>();

            if (order == null)
            {
                throw new ArgumentNullException(nameof(order), $"No {nameof(ForceCloseDetails)} was supplied for an existing PO.");
            }
            else
            {
                if (order.Comment.Trim().Equals(null))
                {
                    throw new Exception("Please give a reason in the comment box for why the order is being closed.");
                }
            }


            using (var context = new eRaceContext())
            {
                var given = context.Orders.Find(order.OrderID);
                if (given == null)
                {
                    throw new ArgumentException($"The given order id of {order.OrderID} does not exist in the database.");
                }

                given.Comment = order.Comment;
                given.Closed  = true;

                var existingOrder = context.Entry(given);

                existingOrder.Property(nameof(given.Comment)).IsModified = true;
                existingOrder.Property(nameof(given.Closed)).IsModified  = true;

                foreach (var item in order.Items)
                {
                    var givenOrder   = context.OrderDetails.Find(item.ProductID);
                    var givenProduct = context.Products.Find(givenOrder.ProductID);

                    if (givenProduct == null)
                    {
                        throw new ArgumentException($"The given product id of {item.ProductID} does not exist in the database.");
                    }

                    givenProduct.QuantityOnOrder = givenProduct.QuantityOnOrder - item.QuantityOutstanding;

                    if (givenProduct.QuantityOnOrder < 0)
                    {
                        givenProduct.QuantityOnOrder = 0;
                    }

                    var existingProduct = context.Entry(givenProduct);

                    existingProduct.Property(nameof(givenProduct.QuantityOnOrder)).IsModified = true;
                }

                context.SaveChanges();
            }
        }