public void Dispose() { if (this.disposed) { return; } this.db.Dispose(); this.db = null; this.newOrderNotifier = null; this.orderCostCalculation = null; this.disposed = true; }
private static void GenerateXmlFile(Stream s, Order order, Customer customer, IEnumerable <Merchandise> merchandises, IOrderCostCalculation occ) { if (order == null) { throw new ArgumentNullException("order"); } if (customer == null) { throw new ArgumentNullException("customer"); } if (merchandises == null) { throw new ArgumentNullException("merchandises"); } if (occ == null) { throw new ArgumentNullException("occ"); } if (s == null) { throw new ArgumentNullException("s"); } var writer = new XmlTextWriter(s, Encoding.UTF8); writer.Formatting = Formatting.Indented; var culture = new CultureInfo("ru-RU"); // Order --> writer.WriteStartElement("Order"); writer.WriteAttributeString("id", order.ID.ToString()); writer.WriteAttributeString("created", order.Created.Date.ToString("d", culture)); // Customer --> writer.WriteStartElement("Customer"); writer.WriteStartElement("Info"); writer.WriteAttributeString("name", "id"); writer.WriteAttributeString("value", customer.ID); writer.WriteEndElement(); writer.WriteStartElement("Info"); writer.WriteAttributeString("name", "company"); writer.WriteAttributeString("value", customer.Company); writer.WriteEndElement(); writer.WriteStartElement("Info"); writer.WriteAttributeString("name", "phone"); writer.WriteAttributeString("value", customer.PhoneNumber); writer.WriteEndElement(); writer.WriteStartElement("Info"); writer.WriteAttributeString("name", "email"); writer.WriteAttributeString("value", customer.EmailAddress); writer.WriteEndElement(); writer.WriteStartElement("Info"); writer.WriteAttributeString("name", "contactName"); writer.WriteAttributeString("value", customer.ContactName); writer.WriteEndElement(); writer.WriteStartElement("Info"); writer.WriteAttributeString("name", "address"); writer.WriteAttributeString("value", customer.Address); writer.WriteEndElement(); writer.WriteStartElement("Info"); writer.WriteAttributeString("name", "inn"); writer.WriteAttributeString("value", customer.INN); writer.WriteEndElement(); writer.WriteEndElement(); // <-- Customer // OrderDetails --> writer.WriteStartElement("Details"); #region Создать представление на основе таблиц OrderDetails и Merchandise var merchandiseOrder = order.Details.Join(merchandises, od => od.GoodsID, m => m.ID, (od, m) => new { MerchandiseId = m.ID, Title = m.Title, Pack = m.Pack, UnitMeasure = m.UnitMeasure, OrderCost = occ.GetMerchandisePriceWithDiscount(order.ID, m.ID), OrderQuantity = od.Quantity, OrderComment = od.Comment }); #endregion foreach (var item in merchandiseOrder) { writer.WriteStartElement("Item"); writer.WriteAttributeString("merchandiseId", item.MerchandiseId.ToString()); writer.WriteAttributeString("title", item.Title); writer.WriteAttributeString("unitMeasure", item.UnitMeasure); writer.WriteAttributeString("pack", item.Pack.ToString()); writer.WriteAttributeString("cost", item.OrderCost.ToString()); writer.WriteAttributeString("quantity", item.OrderQuantity.ToString()); writer.WriteAttributeString("sum", (item.OrderCost * item.OrderQuantity).ToString()); writer.WriteAttributeString("comment", item.OrderComment); writer.WriteEndElement(); } writer.WriteEndElement(); // <-- OrderDetails writer.WriteEndElement(); // <-- Order writer.Flush(); }
public OrderController(IOrderRepository service, INewOrderNotifier orderNotifier, IOrderCostCalculation orderCalc) { this.service = service; this.service.NewOrderNotifier = orderNotifier; this.service.OrderCostCalculation = orderCalc; }