Mercurial > pub > bltoolkit
comparison Demo/Asp.Net/BusinessLogic/Cart.cs @ 0:f990fcb411a9
Копия текущей версии из github
| author | cin |
|---|---|
| date | Thu, 27 Mar 2014 21:46:09 +0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:f990fcb411a9 |
|---|---|
| 1 using System; | |
| 2 using System.Collections.Generic; | |
| 3 | |
| 4 namespace PetShop.BusinessLogic | |
| 5 { | |
| 6 using ObjectModel; | |
| 7 | |
| 8 [Serializable] | |
| 9 public class Cart | |
| 10 { | |
| 11 /// <summary> | |
| 12 /// Calculate the total for all the cartItems in the Cart | |
| 13 /// </summary> | |
| 14 public decimal Total | |
| 15 { | |
| 16 get | |
| 17 { | |
| 18 decimal total = 0; | |
| 19 | |
| 20 foreach (CartItem item in _items.Values) | |
| 21 total += item.Subtotal; | |
| 22 | |
| 23 return total; | |
| 24 } | |
| 25 } | |
| 26 | |
| 27 /// <summary> | |
| 28 /// Update the quantity for item that exists in the cart | |
| 29 /// </summary> | |
| 30 /// <param name="itemId">Item Id</param> | |
| 31 /// <param name="qty">Quantity</param> | |
| 32 public void SetQuantity(string itemId, int qty) | |
| 33 { | |
| 34 _items[itemId].Quantity = qty; | |
| 35 } | |
| 36 | |
| 37 /// <summary> | |
| 38 /// Return the number of unique items in cart | |
| 39 /// </summary> | |
| 40 public int Count | |
| 41 { | |
| 42 get { return _items.Count; } | |
| 43 } | |
| 44 | |
| 45 /// <summary> | |
| 46 /// Add an item to the cart. | |
| 47 /// When ItemId to be added has already existed, this method will update the quantity instead. | |
| 48 /// </summary> | |
| 49 /// <param name="itemId">Item Id of item to add</param> | |
| 50 public void Add(string itemId) | |
| 51 { | |
| 52 CartItem cartItem; | |
| 53 | |
| 54 if (!_items.TryGetValue(itemId, out cartItem)) | |
| 55 { | |
| 56 Item item = new ProductManager().GetItem(itemId); | |
| 57 | |
| 58 if (item != null) | |
| 59 { | |
| 60 cartItem = new CartItem(); | |
| 61 | |
| 62 cartItem.ItemID = itemId; | |
| 63 cartItem.Name = item.ProductName; | |
| 64 cartItem.Price = (decimal)item.Price; | |
| 65 cartItem.Type = item.Name; | |
| 66 cartItem.CategoryID = item.CategoryID; | |
| 67 cartItem.ProductID = item.ProductID; | |
| 68 | |
| 69 _items.Add(itemId, cartItem); | |
| 70 } | |
| 71 } | |
| 72 | |
| 73 cartItem.Quantity++; | |
| 74 } | |
| 75 | |
| 76 /// <summary> | |
| 77 /// Add an item to the cart. | |
| 78 /// When ItemId to be added has already existed, this method will update the quantity instead. | |
| 79 /// </summary> | |
| 80 /// <param name="item">Item to add</param> | |
| 81 public void Add(CartItem item) | |
| 82 { | |
| 83 CartItem cartItem; | |
| 84 | |
| 85 if (!_items.TryGetValue(item.ItemID, out cartItem)) | |
| 86 _items.Add(item.ItemID, item); | |
| 87 else | |
| 88 cartItem.Quantity += item.Quantity; | |
| 89 } | |
| 90 | |
| 91 /// <summary> | |
| 92 /// Remove item from the cart based on <paramref name="itemId"/> | |
| 93 /// </summary> | |
| 94 /// <param name="itemId">ItemId of item to remove</param> | |
| 95 public void Remove(string itemId) | |
| 96 { | |
| 97 _items.Remove(itemId); | |
| 98 } | |
| 99 | |
| 100 // Internal storage for a cart | |
| 101 private Dictionary<string, CartItem> _items = new Dictionary<string, CartItem>(); | |
| 102 | |
| 103 /// <summary> | |
| 104 /// Returns all items in the cart. Useful for looping through the cart. | |
| 105 /// </summary> | |
| 106 /// <returns>Collection of CartItemInfo</returns> | |
| 107 public ICollection<CartItem> Items | |
| 108 { | |
| 109 get { return _items.Values; } | |
| 110 } | |
| 111 | |
| 112 /// <summary> | |
| 113 /// Method to convert all cart items to order line items | |
| 114 /// </summary> | |
| 115 /// <returns>A new array of order line items</returns> | |
| 116 public OrderLineItem[] GetOrderLineItems() | |
| 117 { | |
| 118 OrderLineItem[] items = new OrderLineItem[_items.Count]; | |
| 119 | |
| 120 int lineNum = 0; | |
| 121 | |
| 122 foreach (CartItem item in _items.Values) | |
| 123 { | |
| 124 OrderLineItem line = new OrderLineItem(); | |
| 125 | |
| 126 items[lineNum] = line; | |
| 127 | |
| 128 line.ItemID = item.ItemID; | |
| 129 line.Line = ++lineNum; | |
| 130 line.Quantity = item.Quantity; | |
| 131 line.Price = item.Price; | |
| 132 } | |
| 133 | |
| 134 return items; | |
| 135 } | |
| 136 | |
| 137 /// <summary> | |
| 138 /// Clear the cart | |
| 139 /// </summary> | |
| 140 public void Clear() | |
| 141 { | |
| 142 _items.Clear(); | |
| 143 } | |
| 144 } | |
| 145 } |
