annotate Demo/Asp.Net/BusinessLogic/DataAccess/ProfileAccessor.cs @ 3:1ef98bd70424

!bug 100 +3h Исправление проблемы BLToolkit + mono 3.4
author cin
date Fri, 22 Aug 2014 17:34:46 +0400
parents f990fcb411a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1 using System;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2 using System.Collections.Generic;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4 using BLToolkit.Data;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 using BLToolkit.DataAccess;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 namespace PetShop.BusinessLogic.DataAccess
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 using ObjectModel;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 public abstract class ProfileAccessor : AccessorBase<ProfileAccessor.DB, ProfileAccessor>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 public class DB : DbManager { public DB() : base("ProfileDB") {} }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 [SqlQuery(@"
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 SELECT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 UniqueID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 FROM
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 Profiles
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 WHERE
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 Username = @userName AND ApplicationName = @appName")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 public abstract int? GetUniqueID(string @userName, string @appName);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 [SqlQuery(@"
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 SELECT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 UniqueID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 FROM
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 Profiles
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 WHERE
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 Username = @userName AND ApplicationName = @appName AND IsAnonymous != @isAuthenticated")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 public abstract int? GetUniqueIDAuth(string @userName, string @appName, bool @isAuthenticated);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 [SqlQuery(@"
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 INSERT INTO Profiles (
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 Username, ApplicationName, LastActivityDate, LastUpdatedDate, IsAnonymous
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 ) Values (
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 @userName, @appName, getdate(), getdate(), CASE WHEN @isAuthenticated = 1 THEN 0 ELSE 1 END
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 )
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 SELECT SCOPE_IDENTITY()")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 public abstract int CreateProfile(string @userName, string @appName, bool @isAuthenticated);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 [SqlQuery(@"
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 SELECT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 a.FirstName as ToFirstName,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 a.LastName as ToLastName,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 a.Address1 as Addr1,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 a.Address2 as Addr2,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 a.City,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 a.State,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 a.Zip,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 a.Country,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 a.Email,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 a.Phone
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 FROM
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 Account a
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 JOIN Profiles p ON p.UniqueID = a.UniqueID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 WHERE
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 p.Username = @userName AND p.ApplicationName = @appName;")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 public abstract Address GetAccountInfo(string @userName, string @appName);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 [SqlQuery(@"
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 SELECT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 c.ItemId,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 c.Name,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 c.Type,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 c.Price,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 c.CategoryId,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 c.ProductId,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 c.Quantity
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 FROM
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 Profiles p
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 JOIN Cart c ON c.UniqueID = p.UniqueID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 WHERE
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 p.Username = @userName AND
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 p.ApplicationName = @appName AND
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 c.IsShoppingCart = @isShoppingCart")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 public abstract IList<CartItem> GetCartItems(string @userName, string @appName, bool @isShoppingCart);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 [SqlQuery(@"
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 DELETE FROM Account WHERE UniqueID = @uniqueID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 INSERT INTO Account (
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 UniqueID, Email, FirstName, LastName, Address1, Address2, City, State, Zip, Country, Phone
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 ) VALUES (
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 @uniqueID, @Email, @ToFirstName, @ToLastName, @Addr1, @Addr2, @City, @State, @Zip, @Country, @Phone
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 )")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 public abstract void SetAccountInfo(int @uniqueID, Address address);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90 // This method is not abstract as BLToolkit does not generate methods for the ExecuteForEach method.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 // It's virtual as we want to get statistic info for this method.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 // Counter and Log aspects wrap all abstract, virtual, and override members.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94 public virtual void SetCartItems(int uniqueID, ICollection<CartItem> cartItems, bool isShoppingCart)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96 using (DbManager db = GetDbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 db.BeginTransaction();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 db
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 .SetCommand(@"
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 DELETE FROM
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 Cart
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 WHERE
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 UniqueID = @uniqueID AND IsShoppingCart = @isShoppingCart",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 db.Parameter("@uniqueID", uniqueID),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107 db.Parameter("@isShoppingCart", isShoppingCart))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 .ExecuteNonQuery();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110 if (cartItems.Count > 0)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112 db
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113 .SetCommand(@"
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114 INSERT INTO Cart (
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115 UniqueID, ItemId, Name, Type, Price, CategoryId, ProductId, IsShoppingCart, Quantity
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 ) VALUES (
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117 @uniqueID, @ItemId, @Name, @Type, @Price, @CategoryId, @ProductId, @isShoppingCart, @Quantity
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 )",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119 db.CreateParameters(typeof(CartItem),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120 db.Parameter("@uniqueID", uniqueID),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121 db.Parameter("@isShoppingCart", isShoppingCart)))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122 .ExecuteForEach(cartItems);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125 db.CommitTransaction();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129 [SqlQuery(@"
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130 UPDATE
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
131 Profiles
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
132 SET
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
133 LastActivityDate = getdate()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
134 WHERE
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
135 Username = @userName AND ApplicationName = @appName")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
136 public abstract void UpdateActivityDate(string @userName, string @appName);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
137
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
138 [SqlQuery(@"
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
139 UPDATE
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
140 Profiles
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
141 SET
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
142 LastActivityDate = getdate(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
143 LastUpdatedDate = getdate()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
144 WHERE
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
145 Username = @userName AND ApplicationName = @appName")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
146 public abstract void UpdateActivityAndUdpateDates(string @userName, string @appName);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
147
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
148 [SqlQuery(@"DELETE FROM Profiles WHERE UniqueID = @uniqueID")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
149 [ScalarSource(ScalarSourceType.AffectedRows)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
150 public abstract int DeleteProfile(int @uniqueID);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
151
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
152 [SqlQuery(@"
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
153 SELECT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
154 Username
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
155 FROM
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
156 Profiles
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
157 WHERE ApplicationName = @appName AND LastActivityDate <= @userInactiveSinceDate")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
158 public abstract IList<string> GetInactiveProfiles(DateTime userInactiveSinceDate, string appName);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
159
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
160 [SqlQuery(@"
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
161 SELECT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
162 Username
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
163 FROM
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
164 Profiles
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
165 WHERE ApplicationName = @appName AND LastActivityDate <= @userInactiveSinceDate AND IsAnonymous = @isAnonymous")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
166 public abstract IList<string> GetInactiveProfiles(DateTime @userInactiveSinceDate, string @appName, bool @isAnonymous);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
167
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
168 const string _profileQuery = @"
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
169 FROM
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
170 Profiles
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
171 WHERE
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
172 ApplicationName = @appName AND
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
173 (@isAnonymous IS NULL OR IsAnonymous = @isAnonymous) AND
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
174 (@userName IS NULL OR Username LIKE @userName) AND
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
175 (@userInactiveSinceDate IS NULL OR LastActivityDate >= @userInactiveSinceDate)";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
176
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
177 [SqlQuery(@"
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
178 SELECT @totalRecords = Count(*)" + _profileQuery + @"
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
179 SELECT *" + _profileQuery)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
180 public abstract IList<CustomProfile> GetProfile(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
181 bool? @isAnonymous, string @userName, DateTime? @userInactiveSinceDate, string @appName, out int @totalRecords);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
182 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
183 }