Mercurial > pub > bltoolkit
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 + } +}