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