Exemplo n.º 1
0
 public IQueryable <User> GetBumpedAccountsByCipherId(Cipher cipher)
 {
     using (var scope = ServiceScopeFactory.CreateScope())
     {
         var dbContext = GetDatabaseContext(scope);
         var query     = new UserBumpAccountRevisionDateByCipherIdQuery(cipher);
         return(query.Run(dbContext));
     }
 }
Exemplo n.º 2
0
        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();
                }
            }
        }
Exemplo n.º 3
0
        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()));
            }
        }