public IQueryable <User> GetBumpedAccountsByCipherId(Cipher cipher) { using (var scope = ServiceScopeFactory.CreateScope()) { var dbContext = GetDatabaseContext(scope); var query = new UserBumpAccountRevisionDateByCipherIdQuery(cipher); return(query.Run(dbContext)); } }
protected async Task UserBumpAccountRevisionDateByCipherId(IEnumerable <Cipher> ciphers) { using (var scope = ServiceScopeFactory.CreateScope()) { foreach (var cipher in ciphers) { var dbContext = GetDatabaseContext(scope); var query = new UserBumpAccountRevisionDateByCipherIdQuery(cipher); var users = query.Run(dbContext); await users.ForEachAsync(e => { dbContext.Attach(e); e.RevisionDate = DateTime.UtcNow; }); await dbContext.SaveChangesAsync(); } } }
public async void CreateAsync_BumpsOrgUserAccountRevisionDates(Cipher cipher, List <User> users, List <OrganizationUser> orgUsers, Collection collection, Organization org, List <EfRepo.CipherRepository> suts, List <EfRepo.UserRepository> efUserRepos, List <EfRepo.OrganizationRepository> efOrgRepos, List <EfRepo.OrganizationUserRepository> efOrgUserRepos, List <EfRepo.CollectionRepository> efCollectionRepos) { var savedCiphers = new List <Cipher>(); foreach (var sut in suts) { var i = suts.IndexOf(sut); var efUsers = await efUserRepos[i].CreateMany(users); efUserRepos[i].ClearChangeTracking(); var efOrg = await efOrgRepos[i].CreateAsync(org); efOrgRepos[i].ClearChangeTracking(); cipher.OrganizationId = efOrg.Id; collection.OrganizationId = efOrg.Id; var efCollection = await efCollectionRepos[i].CreateAsync(collection); efCollectionRepos[i].ClearChangeTracking(); IEnumerable <object>[] lists = { efUsers, orgUsers }; var maxOrgUsers = lists.Min(l => l.Count()); orgUsers = orgUsers.Take(maxOrgUsers).ToList(); efUsers = efUsers.Take(maxOrgUsers).ToList(); for (var j = 0; j < maxOrgUsers; j++) { orgUsers[j].OrganizationId = efOrg.Id; orgUsers[j].UserId = efUsers[j].Id; } orgUsers = await efOrgUserRepos[i].CreateMany(orgUsers); var selectionReadOnlyList = new List <SelectionReadOnly>(); orgUsers.ForEach(ou => selectionReadOnlyList.Add(new SelectionReadOnly() { Id = ou.Id })); await efCollectionRepos[i].UpdateUsersAsync(efCollection.Id, selectionReadOnlyList); efCollectionRepos[i].ClearChangeTracking(); foreach (var ou in orgUsers) { var collectionUser = new CollectionUser() { CollectionId = efCollection.Id, OrganizationUserId = ou.Id }; } cipher.UserId = null; var postEfCipher = await sut.CreateAsync(cipher); sut.ClearChangeTracking(); var query = new UserBumpAccountRevisionDateByCipherIdQuery(cipher); var modifiedUsers = await sut.Run(query).ToListAsync(); Assert.True(modifiedUsers .All(u => u.AccountRevisionDate.ToShortDateString() == DateTime.UtcNow.ToShortDateString())); } }