Beispiel #1
0
        public void Dispose()
        {
            if (this.disposed)
            {
                return;
            }

            this.db.Dispose();

            this.db = null;
            this.newOrderNotifier     = null;
            this.orderCostCalculation = null;

            this.disposed = true;
        }
Beispiel #2
0
        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();
        }
Beispiel #3
0
        public OrderController(IOrderRepository service, INewOrderNotifier orderNotifier, IOrderCostCalculation orderCalc)
        {
            this.service = service;

            this.service.NewOrderNotifier     = orderNotifier;
            this.service.OrderCostCalculation = orderCalc;
        }