/// <summary> /// Add a user. /// </summary> /// <param name="profile"></param> public void AddUser(ConModels.User profile) { lock (SyncObject) { var old = AllUsers.FirstOrDefault(p => p.Id == profile.Id); if (old != null) { throw new Exception("User is already in cache"); } var addit = new ConModels.User() { Id = profile.Id }; CopyProperties(addit, profile); AllUsers.Add(addit); } }
/// <summary> /// Rebuild the cache entirely. /// </summary> public void Refresh() { Logger.Info("User cache refreshing..."); lock (SyncObject) { AllUsers = new List<User>(); foreach (var us in Users.GetUsers()) { var user = new ConModels.User() { Id = us.Id }; CopyProperties(user, us); AllUsers.Add(user); } } Logger.Info("User cache refreshed."); }
/// <summary> /// Rebuild the cache entirely. /// </summary> public void Refresh() { List<ConModels.User> users = new List<ConModels.User>(); var ubad = new Dictionary<string, List<ConModels.User>>(); using (IDataReader reader = DataManager.GetDataReader("dbo.Membership_GetUsers", CommandType.StoredProcedure)) { while (reader.Read()) { var profile = new ConModels.User(true); profile.PersonGUID = (System.Guid)reader["UserID"]; profile.UserName = GetString(reader, "UserName"); profile.LastName = GetString(reader, "LastName"); profile.FirstName = GetString(reader, "FirstName"); profile.Organization = GetString(reader, "Organization"); profile.SetValue("Title", GetString(reader, "Title")); profile.SetValue("PrimaryContact", GetString(reader, "PrimaryContact")); profile.BusinessEmail = GetString(reader, "LoweredBusinessEmail"); profile.RecoveryEmail = GetString(reader, "LoweredEmail"); users.Add(profile); var app = GetString(reader, "LoweredApplicationName"); List<ConModels.User> uba = null; if (!ubad.TryGetValue(app, out uba)) { uba = new List<ConModels.User>(); ubad.Add(app, uba); } uba.Add(profile); } } // replace cache lock (SyncObject) { AllUsers = users; UsersByApplication = ubad; } }
public void CreateUserTest() { ContactsRepository target = container.Resolve<ContactsRepository>(); Guid id = Guid.Parse("E4C7BDA6-0D28-4A82-8FD6-D76A212C7E3E"); User profile = new ConModels.User() { Id = id, RecoveryEmail = "*****@*****.**", UserName = "******", Organization = "Testing", HomeEmail = "*****@*****.**" }; Guid expected = id; Guid actual; actual = target.CreateUser(profile); Assert.AreEqual(expected, actual); // get by name var byname = target.GetUserByName("testuser"); Assert.AreEqual("testuser", byname.UserName); Assert.AreEqual("*****@*****.**", byname.HomeEmail); // get by ID var byid = target.GetUserById(id); Assert.AreEqual("testuser", byname.UserName); Assert.AreEqual("*****@*****.**", byname.RecoveryEmail); // now delete user target.DeleteUser(id); }