protected void SaveButton_Click(object sender, EventArgs e) { var container = new DeliveryManagerModelContainer(); Order order; var orderIDParam = Request.QueryString[OrderConstants.IDParamName]; if (orderIDParam != null) { int orderID = Int32.Parse(orderIDParam); order = container.Orders.Single(d => d.Id == orderID); } else { order = new Order(); container.Orders.AddObject(order); } order.Number = NumberTextBox.Text.Trim(); order.WithoutDelivery = WithoutDeliveryCheckBox.Checked; order.Date = Calendar.SelectedDate; order.ClientId = Int32.Parse(ClientsList.SelectedValue); foreach (GridViewRow row in EntriesGridView.Rows) { var hdnField = row.Cells[0].Controls.OfType<HiddenField>().Single(); var depotEntryId = Int32.Parse(hdnField.Value); var depotEntry = container.Entries.Single(de => de.Id == depotEntryId) as DepotEntry; var orderEntry = order.OrderEntries.SingleOrDefault(oe => oe.DepotEntry.Id == depotEntryId); var chkBox = row.Cells[0].Controls.OfType<CheckBox>().Single(); if (chkBox.Checked) { var txtBox = row.Cells[0].Controls.OfType<TextBox>().Single(); int count; if (!Int32.TryParse(txtBox.Text, out count) || count < 1) count = 1; if (orderEntry == null) { orderEntry = new OrderEntry { DepotEntry = depotEntry, DeliveryEntityId = depotEntry.DeliveryEntityId, Cost = depotEntry.DeliveryEntity.Cost, Price = depotEntry.DeliveryEntity.Price }; order.OrderEntries.Add(orderEntry); } orderEntry.Count = count; } else { if (orderEntry != null) { // return entities back depotEntry.Count += orderEntry.Count; container.Entries.DeleteObject(orderEntry); } } } container.SaveChanges(); Response.Redirect("~/Orders/OrdersList.aspx", true); }
/// <summary> /// Create a new OrderEntry object. /// </summary> /// <param name="id">Initial value of the Id property.</param> /// <param name="count">Initial value of the Count property.</param> /// <param name="deliveryEntityId">Initial value of the DeliveryEntityId property.</param> /// <param name="orderId">Initial value of the OrderId property.</param> /// <param name="cost">Initial value of the Cost property.</param> /// <param name="price">Initial value of the Price property.</param> public static OrderEntry CreateOrderEntry(global::System.Int32 id, global::System.Int32 count, global::System.Int32 deliveryEntityId, global::System.Int32 orderId, global::System.Decimal cost, global::System.Decimal price) { OrderEntry orderEntry = new OrderEntry(); orderEntry.Id = id; orderEntry.Count = count; orderEntry.DeliveryEntityId = deliveryEntityId; orderEntry.OrderId = orderId; orderEntry.Cost = cost; orderEntry.Price = price; return orderEntry; }