public void AddProjectsToUser(string userId, IEnumerable <int> newProjectIds, UserAndOrganizationDTO userOrg) { var user = _usersDbSet .Include(x => x.Projects) .First(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 = _projectsDbSet.Where(x => newProjectIds.Contains(x.Id)).Select(x => x.WallId).ToList(); _wallService.AddMemberToWalls(userId, wallsThatShouldBeAddedToUser); _wallService.RemoveMemberFromWalls(userId, wallsThatShouldBeRemovedFromUser); user.Projects = _projectsDbSet.Where(p => newProjectIds.Contains(p.Id)).ToList(); _uow.SaveChanges(userOrg.UserId); }