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); }