0
|
1 using System;
|
|
2 using System.Collections.Generic;
|
|
3
|
|
4 using BLToolkit.Aspects;
|
|
5 using BLToolkit.Data;
|
|
6 using BLToolkit.DataAccess;
|
|
7
|
|
8 namespace PetShop.BusinessLogic.DataAccess
|
|
9 {
|
|
10 using ObjectModel;
|
|
11
|
|
12 public abstract class ProductAccessor : AccessorBase<ProductAccessor.DB, ProductAccessor>
|
|
13 {
|
|
14 public class DB : DbManager { public DB() : base("ProductDB") {} }
|
|
15
|
|
16 #region Item
|
|
17
|
|
18 const string _itemQuery = @"
|
|
19 SELECT
|
|
20 i.*,
|
|
21 n.Qty,
|
|
22 p.Name as ProductName,
|
|
23 p.CategoryId
|
|
24 FROM
|
|
25 Item i
|
|
26 JOIN Product p ON p.ProductId = i.ProductId
|
|
27 JOIN Inventory n ON n.ItemId = i.ItemId";
|
|
28
|
|
29 [SqlQuery(_itemQuery + @" WHERE i.ProductId = @id")]
|
|
30 public abstract IList<Item> GetItemListByProductID(string @id);
|
|
31
|
|
32 [SqlQuery(_itemQuery + @" WHERE i.ItemId = @itemID")]
|
|
33 public abstract Item GetItem(string @itemID);
|
|
34
|
|
35 [SqlQuery(_itemQuery + @" ORDER BY i.Name")]
|
|
36 public abstract List<Item> GetAllItemList();
|
|
37
|
|
38 #endregion
|
|
39
|
|
40 #region Product
|
|
41
|
|
42 [Cache(MaxMinutes = 60)]
|
|
43 [SqlQuery(@"SELECT * FROM Product WHERE CategoryId = @id")]
|
|
44 public abstract IList<Product> GetProductListByCategoryID(string @id);
|
|
45
|
|
46 #endregion
|
|
47
|
|
48 #region Categoty
|
|
49
|
|
50 // This method needs to be cached, so we can't call Query.SelectByKey directly from the manager class.
|
|
51 //
|
|
52 [Cache(MaxMinutes=60)]
|
|
53 public virtual Category GetCategory(string id)
|
|
54 {
|
|
55 return Query.SelectByKey<Category>(id);
|
|
56 }
|
|
57
|
|
58 #endregion
|
|
59
|
|
60 #region Inventory
|
|
61
|
|
62 [SqlQuery(@"SELECT Qty FROM Inventory WHERE ItemId = @itemId")]
|
|
63 public abstract int CurrentQtyInStock(string @itemId);
|
|
64
|
|
65 #endregion
|
|
66 }
|
|
67 }
|