diff Demo/Asp.Net/BusinessLogic/OrderManager.cs @ 0:f990fcb411a9

Копия текущей версии из github
author cin
date Thu, 27 Mar 2014 21:46:09 +0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Demo/Asp.Net/BusinessLogic/OrderManager.cs	Thu Mar 27 21:46:09 2014 +0400
@@ -0,0 +1,71 @@
+using System;
+using System.Collections.Generic;
+using System.Transactions;
+
+using BLToolkit.Data;
+
+namespace PetShop.BusinessLogic
+{
+	using DataAccess;
+	using ObjectModel;
+
+	public class OrderManager
+	{
+		#region Order
+
+		/// <summary>
+		/// Inserts the order and updates the inventory stock within a transaction.
+		/// </summary>
+		/// <param name="order">All information about the order</param>
+		public void InsertOrder(Order order)
+		{
+			using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
+			{
+				OrderAccessor accessor = Accessor;
+
+				using (DbManager db = accessor.GetDbManager())
+				{
+					order.Courier = "UPS";
+					order.Locale  = "US_en";
+					order.ID      = accessor.Query.InsertAndGetIdentity(db, order);
+
+					accessor.InsertStatus(db, order.ID);
+
+					for (int i = 0; i < order.Lines.Length; i++)
+					{
+						OrderLineItem line = order.Lines[i];
+
+						line.OrderID = order.ID;
+
+						accessor.Query.Insert(line);
+					}
+				}
+
+				InventoryAccessor inv = InventoryAccessor.CreateInstance();
+
+				using (DbManager db = inv.GetDbManager())
+					foreach (OrderLineItem line in order.Lines)
+						inv.TakeInventory(db, line.Quantity, line.ItemID);
+
+				ts.Complete();
+			}
+		}
+
+		public List<Order> GetAllOrderList()
+		{
+			return Accessor.GetAllOrderList();
+		}
+
+		#endregion
+
+		#region Accessor
+
+		OrderAccessor Accessor
+		{
+			[System.Diagnostics.DebuggerStepThrough]
+			get { return OrderAccessor.CreateInstance(); }
+		}
+
+		#endregion
+	}
+}