コード例 #1
0
        public async Task AddProjectsToUserAsync(string userId, IEnumerable <int> newProjectIds, UserAndOrganizationDto userOrg)
        {
            var user = await _usersDbSet
                       .Include(x => x.Projects)
                       .FirstAsync(x => x.Id == userId && x.OrganizationId == userOrg.OrganizationId);

            var wallsThatShouldBeRemovedFromUser = user.Projects
                                                   .Where(x => !newProjectIds.Contains(x.Id))
                                                   .Select(x => x.WallId)
                                                   .ToList();

            var wallsThatShouldBeAddedToUser = await _projectsDbSet.Where(x => newProjectIds.Contains(x.Id)).Select(x => x.WallId).ToListAsync();

            await _wallService.AddMemberToWallsAsync(userId, wallsThatShouldBeAddedToUser);

            await _wallService.RemoveMemberFromWallsAsync(userId, wallsThatShouldBeRemovedFromUser);

            user.Projects = await _projectsDbSet.Where(p => newProjectIds.Contains(p.Id)).ToListAsync();

            await _uow.SaveChangesAsync(userOrg.UserId);
        }