public User Create(UserPostModel userModel) { User toAdd = UserPostModel.ToUser(userModel); context.Users.Add(toAdd); context.SaveChanges(); context.Users.Attach(toAdd); UserRole userRole = new UserRole { Id = 1, Name = RoleConstants.REGULAR }; HistoryUserRole history = new HistoryUserRole { UserRole = userRole, StartTime = DateTime.Now }; List <HistoryUserRole> list = new List <HistoryUserRole> { history }; context.UserRoles.Add(userRole); context.UserRoles.Attach(userRole); toAdd.HistoryUserRole = list; context.SaveChanges(); //dbcontext.Users.Add(toAdd); //dbcontext.SaveChanges(); return(toAdd); }
public static HistoryUserRoleGetModel FromHistoryUserRole(HistoryUserRole historyUserRole) { return(new HistoryUserRoleGetModel { Username = historyUserRole.User.Username, UserRoleName = historyUserRole.UserRole.Name, StartTime = historyUserRole.StartTime, EndTime = historyUserRole.EndTime }); }
public void Delete() { var options = new DbContextOptionsBuilder <UsersDbContext>() .UseInMemoryDatabase(databaseName: nameof(Delete)) .Options; using (var context = new UsersDbContext(options)) { var usersService = new UserService(context, config); UserRole userRole = new UserRole { Id = 3, Name = RoleConstants.ADMIN }; HistoryUserRole history = new HistoryUserRole { StartTime = DateTime.Now, UserRoleId = 3, UserRole = userRole, }; List <HistoryUserRole> list = new List <HistoryUserRole> { history }; User user1 = new User { Username = "******", HistoryUserRole = list, DateRegister = DateTime.Now }; //aragorn.History.Add(history); var addedCosmin = new RegisterPostModel { Email = "*****@*****.**", FirstName = "Cosmin", LastName = "Cosmin", Password = "******", Username = "******" }; usersService.Register(addedCosmin); User expected = context.Users.AsNoTracking() .Include(x => x.HistoryUserRole) .ThenInclude(x => x.UserRole) .FirstOrDefault(x => x.FirstName.Equals(addedCosmin.FirstName)); usersService.Delete(expected.Id, user1); Assert.IsNull(usersService.GetById(expected.Id)); } }
public void ValidGetAllShouldDisplayAllHistoryUserRole() { var options = new DbContextOptionsBuilder <UsersDbContext>() .UseInMemoryDatabase(databaseName: nameof(ValidGetAllShouldDisplayAllHistoryUserRole)) .Options; using (var context = new UsersDbContext(options)) { var userService = new UserService(context, config); var added = new HistoryUserRole { User = new User { Username = "******", }, UserRole = new UserRole { Name = RoleConstants.REGULAR }, StartTime = DateTime.Now, EndTime = null }; var added2 = new HistoryUserRole { User = new User { Username = "******", }, UserRole = new UserRole { Name = RoleConstants.MODERATOR }, StartTime = DateTime.Now.AddDays(10), EndTime = null }; context.HistoryUserRoles.Add(added); context.HistoryUserRoles.Add(added2); context.SaveChanges(); // Act var result = userService.GetAllHistory(); // Assert Assert.AreEqual(2, result.Count()); Assert.AreNotEqual(0, result.Count()); } }
public void GetById() { var options = new DbContextOptionsBuilder <UsersDbContext>() .UseInMemoryDatabase(databaseName: nameof(GetById)) .Options; using (var context = new UsersDbContext(options)) { var usersService = new UserService(context, config); var defaultuserRole = new UserRole { Name = RoleConstants.ADMIN }; context.UserRoles.Add(defaultuserRole); context.SaveChanges(); context.Entry(defaultuserRole).State = EntityState.Detached; UserRole userRole = new UserRole { Name = RoleConstants.ADMIN }; HistoryUserRole history = new HistoryUserRole { UserRole = userRole, }; List <HistoryUserRole> list = new List <HistoryUserRole> { history }; User user = new User { Username = "******", HistoryUserRole = list, DateRegister = DateTime.Now, Password = "******", Email = "*****@*****.**", FirstName = "trolallaa", LastName = "tralalalal" }; context.Users.Add(user); context.SaveChanges(); User expected = context.Users.AsNoTracking() .FirstOrDefault(x => x.FirstName.Equals(user.FirstName)); UserGetModel actual = usersService.GetById(expected.Id); Assert.AreEqual(expected.Username, actual.Username); Assert.AreEqual(expected.Id, actual.Id); } }
public UserGetModel Upsert(int id, UserPostModel user, User userLogat) { var existing = context .Users .Include(x => x.HistoryUserRole) .ThenInclude(x => x.UserRole) .AsNoTracking().FirstOrDefault(u => u.Id == id); if (existing == null) { return(null); } if (existing.Username.Equals(userLogat.Username)) { return(null); } string existingCurrentRole = getLatestHistoryUserRole(existing.HistoryUserRole).UserRole.Name; string addedByCurrentRole = getLatestHistoryUserRole(userLogat.HistoryUserRole).UserRole.Name; HistoryUserRole currentHistory = getLatestHistoryUserRole(existing.HistoryUserRole); if (existing == null) { //dbcontext.Users.(UserPostModel.ToUser(user)); //dbcontext.SaveChanges(); //return UserGetModel.FromUser(UserPostModel.ToUser(user)); User toReturn = Create(user); return(UserGetModel.FromUser(toReturn)); } User toUpdate = UserPostModel.ToUser(user); toUpdate.Password = existing.Password; toUpdate.DateRegister = existing.DateRegister; toUpdate.Id = id; if (addedByCurrentRole.Equals(RoleConstants.MODERATOR)) { // https://www.aspforums.net/Threads/289493/Get-Number-of-months-between-two-dates-in-C/ var dateRegister = userLogat.DateRegister; var dateCurrent = DateTime.Now; int months = dateCurrent.Subtract(dateRegister).Days / 30; // toAdd.Id = id; if (months >= 6) { //dbcontext.Users.Update(toAdd); //dbcontext.SaveChanges(); //return UserGetModel.FromUser(toAdd); toUpdate.HistoryUserRole = existing.HistoryUserRole; context.Users.Update(toUpdate); context.SaveChanges(); context.Users.Attach(toUpdate); if (existingCurrentRole != user.UserRole) { IEnumerable <UserRole> allRoles = context.UserRoles; List <String> list = new List <string>(); foreach (UserRole userRole in allRoles) { list.Add(userRole.Name); } if (list.Contains(user.UserRole)) { UserRole userRole = searchForRoleByTitle(user.UserRole); HistoryUserRole history = new HistoryUserRole { UserRole = userRole, StartTime = DateTime.Now }; currentHistory.EndTime = DateTime.Now; context.UserRoles.Attach(userRole); toUpdate.HistoryUserRole.Add(history); context.SaveChanges(); return(UserGetModel.FromUser(toUpdate)); } return(null); } return(null); // dbcontext.Users.Update(toAdd); //dbcontext.SaveChanges(); //return toAdd; } return(null); } if (addedByCurrentRole.Equals(RoleConstants.ADMIN)) { //toAdd.Id = id; //dbcontext.Users.Update(toAdd); //dbcontext.SaveChanges(); //return UserGetModel.FromUser(toAdd); toUpdate.HistoryUserRole = existing.HistoryUserRole; context.Users.Update(toUpdate); context.SaveChanges(); context.Users.Attach(toUpdate); if (existingCurrentRole != user.UserRole) { IEnumerable <UserRole> allRoles = context.UserRoles; List <String> list = new List <string>(); foreach (UserRole userRole in allRoles) { list.Add(userRole.Name); } if (list.Contains(user.UserRole)) { UserRole userRole = searchForRoleByTitle(user.UserRole); HistoryUserRole history = new HistoryUserRole { UserRole = userRole, StartTime = DateTime.Now }; currentHistory.EndTime = DateTime.Now; context.UserRoles.Attach(userRole); toUpdate.HistoryUserRole.Add(history); context.SaveChanges(); return(UserGetModel.FromUser(toUpdate)); } return(null); } return(null); } return(null); }
public UserGetModel Register(RegisterPostModel register) { User existing = context .Users .FirstOrDefault(u => u.Username == register.Username); if (existing != null) { return(null); } User toAdd = new User { Email = register.Email, LastName = register.LastName, FirstName = register.FirstName, Password = ComputeSha256Hash(register.Password), Username = register.Username, DateRegister = DateTime.Now, HistoryUserRole = new List <HistoryUserRole>() }; context.Users.Add(toAdd); context.SaveChanges(); context.Users.Attach(toAdd); UserRole userRole = new UserRole { Id = 1, Name = RoleConstants.REGULAR, }; //var defaultRole = dbcontext // .UserRoles // .AsNoTracking() // .FirstOrDefault(uRole => uRole.Title == RoleConstants.REGULAR); HistoryUserRole history = new HistoryUserRole { User = toAdd, UserRole = userRole, StartTime = DateTime.Now, EndTime = null }; List <HistoryUserRole> list = new List <HistoryUserRole> { history }; //dbcontext.HistoryUserRoles.Add(new HistoryUserRole //{ // User = toAdd, // UserRole = RoleConstants.REGULAR, // StartTime = DateTime.Now, // EndTime = null //}); context.UserRoles.Add(userRole); context.UserRoles.Attach(userRole); toAdd.HistoryUserRole = list; context.SaveChanges(); return(Authenticate(register.Username, register.Password)); }
public void Upsert() { var options = new DbContextOptionsBuilder <UsersDbContext>() .UseInMemoryDatabase(databaseName: nameof(Upsert)) .Options; using (var context = new UsersDbContext(options)) { var usersService = new UserService(context, config); var defaultuserRole = new UserRole { Name = RoleConstants.REGULAR }; context.UserRoles.Add(defaultuserRole); context.Entry(defaultuserRole).State = EntityState.Detached; var defaultuserRole2 = new UserRole { Name = RoleConstants.ADMIN }; context.UserRoles.Add(defaultuserRole2); context.Entry(defaultuserRole2).State = EntityState.Detached; UserRole userRoleRegular = new UserRole { Name = RoleConstants.REGULAR }; HistoryUserRole historyRegular = new HistoryUserRole { UserRole = userRoleRegular, }; List <HistoryUserRole> listRegular = new List <HistoryUserRole> { historyRegular }; User radu69 = new User { Username = "******", HistoryUserRole = listRegular, DateRegister = DateTime.Now, Password = "******", Email = "*****@*****.**", FirstName = "radu", LastName = "radu" }; context.Users.Add(radu69); context.SaveChanges(); } using (var context = new UsersDbContext(options)) { var usersService = new UserService(context, config); var defaultuserRole = new UserRole { Name = RoleConstants.ADMIN }; context.UserRoles.Add(defaultuserRole); context.SaveChanges(); context.Entry(defaultuserRole).State = EntityState.Detached; UserRole userRole = new UserRole { Name = RoleConstants.ADMIN }; HistoryUserRole history = new HistoryUserRole { UserRole = userRole, }; List <HistoryUserRole> list = new List <HistoryUserRole> { history }; User user2 = new User { Username = "******", HistoryUserRole = list, DateRegister = DateTime.Now, Password = "******", Email = "*****@*****.**", FirstName = "cristina", LastName = "cristina" }; User firstAdded = new User { Username = "******", DateRegister = DateTime.Now, Password = "******", Email = "*****@*****.**", FirstName = "radu", LastName = "radu" }; var toUpdateWith = new UserPostModel { FirstName = "Gimli", LastName = "Axeman", UserName = "******", Email = "*****@*****.**", Password = "******", UserRole = RoleConstants.ADMIN }; var result = context.ChangeTracker.Entries() .Where(t => t.State == EntityState.Unchanged); UserGetModel lalala = usersService.Upsert(1, toUpdateWith, user2); Assert.AreNotEqual(lalala.Username, firstAdded.Username); Assert.AreNotEqual(lalala.Email, firstAdded.Email); Assert.AreNotEqual(lalala.UserRole, RoleConstants.ADMIN); } }